This is the home for the Haskell AI Strike Force! Here we will collect code, problems, papers, ideas, and people for putting together a flexible AI toolkit in Haskell.

This is the home for the Haskell AI Strike Force! Here we will collect code, problems, papers, ideas, and people for putting together a flexible AI toolkit in Haskell.

Line 5:

Line 6:

== People ==

== People ==

If interested in contributing to or monitoring this project, please put your name, nickname (if applicable - e.g., if you talk on #haskell), and email address so we can keep each other up-to-date.

If interested in contributing to or monitoring this project, please put your name, nickname (if applicable - e.g., if you talk on #haskell), and email address so we can keep each other up-to-date.

+

+

Mark Wong-VanHaren (marklar) <markwvh at gmail>

Andrew Wagner (chessguy) <wagner dot andrew at gmail>

Andrew Wagner (chessguy) <wagner dot andrew at gmail>

Line 16:

Line 19:

Chung-chieh Shan (ccshan) <ccshan at cs dot rutgers dot edu>

Chung-chieh Shan (ccshan) <ccshan at cs dot rutgers dot edu>

−

== Ideas ==

+

Adam Wyner (Lawman) <adam dot wyner dot info>

−

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!

+

Allan Erskine (thedatabase) <allan dot erskine at gmail>

−

* 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 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/Papers/ibal-ch.pdf 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!

== Things that need a home ==

== Things that need a home ==

Line 29:

Line 72:

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

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

−

**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.

*http://www.haskell.org/haskellwiki/Libraries_and_tools/Linguistics

*http://www.haskell.org/haskellwiki/Libraries_and_tools/Linguistics

−

== Table of Contents for AI: A Modern Approach ==

+

I've proposed a machine learning library for this year's Google Summer of Code. [http://hackage.haskell.org/trac/summer-of-code/ticket/1127] 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>. --[[User:Ketil|Ketil]] 07:46, 26 March 2007 (UTC)

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

−

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

+

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

−

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

+

−

***4.2. Heuristic Functions ... 105

+

== Proposed Module Hierarchy ==

−

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

+

*AI

−

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

+

**AI.Searching

−

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

+

***AI.Searching.Evolutionary

−

***4.6. Summary ... 129

+

**AI.Logic

−

**5. Constraint Satisfaction Problems ... 137

+

**AI.Planning

−

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

+

***AI.Planning.Swarm

−

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

+

**AI.Probabilistic

−

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

+

**AI.Learning

−

***5.4. The Structure of Problems ... 151

+

***AI.Learning.Kernel

−

***5.5. Summary ... 155

+

***AI.Learning.NeuralNet

−

**6. Adversarial Search ... 161

+

**AI.Classification

−

***6.1. Games ... 161

+

***AI.Classification.ExpertSystem

−

***6.2. Optimal Decisions in Games ... 162

+

**AI.Communication

−

***6.3. Alpha-Beta Pruning ... 167

+

−

***6.4. Imperfect, Real-Time Decisions ... 171

+

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

−

***6.5. Games That Include an Element of Chance ... 175

+

−

***6.6. State-of-the-Art Game Programs ... 180

+

'''AI/Logic/Fuzzy'''

−

***6.7. Discussion ... 183

+

−

***6.8. Summary ... 185

+

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)