This is where we need to start. Please put your ideas here for how to structure the contents of this toolkit/wiki-page(s). I've ripped and wiki-fied the table of contents of the main sections of Russell and Norvig's classic "Artificial Intelligence: A Modern Approach", for inspiration. One way of structuring things would be to turn various section names of this into links to new pages. If we do this, we should agree on the format for each new page to link to: e.g., each page could have a list of papers, links to code, a general discussion area, and a list of benchmark problems for that particular topic. Comments, please!

* In short, parts of this project can range from established ideas to new syntheses. ccshan: The high level of domain-specific abstraction that Haskell enables is ideal for AI, because AI programs are often "meta": we need to model agents who model the world, and sometimes to model agents who model agents who model the world, etc. In particular, monads are a good way to structure and solve decision processes, [http://conway.rutgers.edu/~ccshan/wiki/cs504/posts/Second_week.html as I've started to explore as part of a course on computational modeling that I'm teaching]. Given that [http://www.cs.yale.edu/homes/hudak-paul/hudak-dir/ACM-WS/position.html Haskell is a good language for modular interpreters and compilers], it would also be nice to create and refactor in Haskell an implementation of a [http://ai.stanford.edu/~shoham/www%20papers/RatProg.pdf rational programming language] like [http://www.eecs.harvard.edu/~avi/ Avi Pfeffer]'s [http://www.eecs.harvard.edu/~avi/IBAL/index.html IBAL] -- not only [http://www.eecs.harvard.edu/~nr/pubs/pmonad-abstract.html is probability distribution a monad], I just realized that [http://ttic.uchicago.edu/~dmcallester/bayes.ps a certain kind of variable elimination] is simply garbage collection in a call-by-need language!

* In short, parts of this project can range from established ideas to new syntheses. ccshan: The high level of domain-specific abstraction that Haskell enables is ideal for AI, because AI programs are often "meta": we need to model agents who model the world, and sometimes to model agents who model agents who model the world, etc. In particular, monads are a good way to structure and solve decision processes, [http://conway.rutgers.edu/~ccshan/wiki/cs504/posts/Second_week.html as I've started to explore as part of a course on computational modeling that I'm teaching]. Given that [http://www.cs.yale.edu/homes/hudak-paul/hudak-dir/ACM-WS/position.html Haskell is a good language for modular interpreters and compilers], it would also be nice to create and refactor in Haskell an implementation of a [http://ai.stanford.edu/~shoham/www%20papers/RatProg.pdf rational programming language] like [http://www.eecs.harvard.edu/~avi/ Avi Pfeffer]'s [http://www.eecs.harvard.edu/~avi/IBAL/index.html IBAL] -- not only [http://www.eecs.harvard.edu/~nr/pubs/pmonad-abstract.html is probability distribution a monad], I just realized that [http://ttic.uchicago.edu/~dmcallester/bayes.ps a certain kind of variable elimination] is simply garbage collection in a call-by-need language!

Line 35:

Line 74:

If there are things that should be included in the project, but you're not sure where it should go, place it here! I'll start with:

If there are things that should be included in the project, but you're not sure where it should go, place it here! I'll start with:

−

* http://catenova.org/~awagner/Simplifier

+

* http://catenova.org/~awagner/Simplifier (broken link)

**This was given to me by Alfonso Acosta (mentioned recently on haskell-cafe)

**This was given to me by Alfonso Acosta (mentioned recently on haskell-cafe)

−

*http://catenova.org/~awagner/GPLib

+

*http://catenova.org/~awagner/GPLib (broken link)

−

**This is a work in progress by yours truly, hopefully a future framework for genetic algorithms in haskell

+

**[[GPLib]] is a work in progress by yours truly, hopefully a future framework for genetic algorithms in haskell.

Implementation of some of the algorithms in Russell and Norvig's "Artificial Intelligence: A Modern Approach", by [[User:Crntaylor|Chris Taylor]]:

−

***2.3. The Nature of Environments ... 38

+

*https://github.com/chris-taylor/aima-haskell

−

***2.4. The Structure of Agents ... 44

+

−

***2.5. Summary ... 54

+

== Proposed Module Hierarchy ==

−

**3. Solving Problems by Searching ... 59

+

*AI

−

***3.1. Problem-Solving Agents ... 59

+

**AI.Searching

−

***3.2. Example Problems ... 64

+

***AI.Searching.Evolutionary

−

***3.3. Searching for Solutions ... 69

+

**AI.Logic

−

***3.4. Uninformed Search Strategies ... 73

+

**AI.Planning

−

***3.5. Avoiding Repeated States ... 81

+

***AI.Planning.Swarm

−

***3.6. Searching with Partial Information ... 83

+

**AI.Probabilistic

−

***3.7. Summary ... 87

+

**AI.Learning

−

**4. Informed Search and Exploration ... 94

+

***AI.Learning.Kernel

−

***4.1. Informed (Heuristic) Search Strategies ... 94

+

***AI.Learning.NeuralNet

−

***4.2. Heuristic Functions ... 105

+

**AI.Classification

−

***4.3. Local Search Algorithms and Optimization Problems ... 110

+

***AI.Classification.ExpertSystem

−

***4.4. Local Search in Continuous Spaces ... 119

+

**AI.Communication

−

***4.5. Online Search Agents and Unknown Environments ... 122

+

−

***4.6. Summary ... 129

+

==Proposed sample format for a wiki page on a topic or sub-topic==

−

**5. Constraint Satisfaction Problems ... 137

+

−

***5.1. Constraint Satisfaction Problems ... 137

+

'''AI/Logic/Fuzzy'''

−

***5.2. Backtracking Search for CSPs ... 141

+

−

***5.3. Local Search for Constraint Satisfaction Problems ... 150

+

The slashes show that [[/Logic | Logic]] is a subpage of [[AI]] and [[/Logic/Fuzzy | Fuzzy]] is a subpage of [[AI/Logic]]. MediaWiki will then generate links back up the chain of pages. (Try the links to see)

I've proposed a machine learning library for this year's Google Summer of Code. [1] There has been a few interested (and seemingly well qualified) students, too. I'm not sure if it qualifes as "AI", but if you are interested in this project (as a potential student, mentor, or just...well, interested), please add yourself to the above link, and/or get in touch with me at <ketil at malde dot org>. --Ketil 07:46, 26 March 2007 (UTC)