- updating Readme.txt to reflect release 0.95 notes. · aimacode/aima-java@a982000

1-

AIMA JAVA Notes By Ravi(magesmail@yahoo.com)

1+

AIMA JAVA Notes By Ravi(magesmail@yahoo.com) and Ciaran (ctjoreilly@gmail.com).

2233

#summary some notes

4455

= Introduction =

66

The latest (and ever evolving) code can be found at http://code.google.com/p/aima-java/. if you notice a bug please try checking out the latest version from the svn repository to see if it persists.

778-

Current release is 0.94:<br>

8+

Current release is 0.95:<br>

9+

This is our first release containing GUIs (thanks to Ruediger Lunde):<br>

10+

- aima.gui.applications.VacuumAppDemo<br>

11+

Provides a demo of the different agents described in Chapter 2 and 3

12+

for tackling the Vacuum World.<br>

13+

- aima.gui.applications.search.map.RoutePlanningAgentAppDemo<br>

14+

Provides a demo of the different agents/search algorithms described

15+

in Chapters 3 and 4, for tackling route planning tasks within

16+

simplified Map environments.<br>

17+

- aima.gui.framework.SimpleAgentAppDemo<br>

18+

Provides a basic example of how to create your own Agent based

19+

demonstrations based on the provided framework.<br>

20+

<br>

21+

This will also be our last full release based on the 2nd edition of AIMA.

22+

We are currently in the planning phases to re-organize this project based on the 3rd edition of AIMA, which should be available soon.

23+24+

Previous release is 0.94:<br>

925

This is a patch release for the FOL Logic and includes the following fixes:<br>

1026

- Fixed subtle defect in Model Elimination inference algorithm, which caused it to miss portions of the search space.<br>

1127

- Improved the performance of both theorem provers, in particular added support for forward and backward subsumption elimination, which improves significantly the performance and use of the OTTER Like theorem prover.<br>

@@ -16,7 +32,7 @@ It includes:<br>

1632

- a completion of the First Order Logic concepts from Chapter 9.<br>

1733

- the addition of the LRTA Agent from Chapter 4.<br>

183419-

Note: If running the unite tests be sure to include the vm arguments:

35+

Note: If running the unit tests be sure to include the vm arguments:

2036

-Xms256m -Xmx1024m

2137

as some of the First Order Logic algorithms (i.e. FOLTFMResolution) are

2238

memory hungry.

@@ -29,38 +45,23 @@ It includes a rewrite of the neural network algorithms (in the earlier version t

2945

Heuristics are now doubles (vs ints in the old version).

3046

One minor change is that I've dropped the make file. Please use [http://ant.apache.org/ant ant]

314732-

==bug reports - acknowledgment ==

33-34-

The following people sent in excellent comments and bug reports. Thank you!!!!

35-

* Ali Tozan

36-37-

* Carl Anderson, Senior Scientist, ArchimedesModel.com

38-39-

* Don Cochrane from (?) University

40-41-

* Mike Angelotti from Miami University

42-43-

* Chad Carff ,University of Western Florida . EXCELLENT test cases . thank you .

44-45-

* Dr .Eman El-Sheikh, Ph.D.,University of Western Florida

46-47-

* Ravindra Guravannavar, Aztec Software,Bangalore

48-49-

* Cameron Jenkins,University Of New Orleans

50-51-

* Nils Knoblauch (Project Manager, Camline) - winner of the No Prize for the best bug report ! Thanks!

52-53-

* Phil Snowberger, Artificial Intelligence and Robotics Laboratory,University of Notre Dame

54-55-48+

==Bug Reports - acknowledgment ==

564950+

The following people sent in excellent comments and bug reports. Thank you!!!!<br>

51+

* Ali Tozan<br>

52+

* Carl Anderson, Senior Scientist, ArchimedesModel.com<br>

53+

* Don Cochrane from (?) University<br>

54+

* Mike Angelotti from Miami University<br>

55+

* Chad Carff ,University of Western Florida . EXCELLENT test cases . thank you.<br>

56+

* Dr .Eman El-Sheikh, Ph.D.,University of Western Florida<br>

57+

* Ravindra Guravannavar, Aztec Software,Bangalore<br>

58+

* Cameron Jenkins,University Of New Orleans<br>

59+

* Nils Knoblauch (Project Manager, Camline) - winner of the No Prize for the best bug report ! Thanks!<br>

60+

* Phil Snowberger, Artificial Intelligence and Robotics Laboratory,University of Notre Dame<br>

57615862

= Details =

596360-61-6264

==Build Instructions==

63-6465

If you just want to use the classes, all you need to do is put the aima-java/build directory on your CLASSPATH.

65666667

if you want to rebuild from source, run the unit tests etc follow the instructions below.

@@ -78,26 +79,22 @@ To build from the command line,

7879

# put [http://prdownloads.sourceforge.net/junit/junit3.8.1.zip?download junit 3.8.1 (note the version number)] on the classpath

7980

# type 'ant'

808181-8282

I have included the eclipse.classpath and .projectfiles for those who use [http://www.eclipse.org eclipse] .

83838484

==Code Navigation==

8585

# To understand how a particular feature works , FIRST look at the demo files.There are four main demo files SearchDemo , LogicDemo ,ProbabilityDemo and LearningDemo.

8686

# If the Demo Files don't exist yet , look at the unit tests . they often cover much of how a particular feature works .

8787

# If all else fails , write to me . Comprehensive documentation, both java doc and otherwise are in the pipeline , but will probably have to wait till I finish the code .

888889-9089

==Notes on Search==

919092-9391

To solve a problem with (non CSP )Search .

9492

# you need to write four classes .

9593

# a class that represents the Problem state .This class is independent of the framework and does NOT need to subclass anything . Let us, for the rest of these instruction, assume you are going to solve the NQueens problem . So in this step you need to write something like aima.search.nqueens.NQueensBoard .

9694

# a subclass of aima.search.framework.GoalTest.This implements only a single function ---boolean isGoalState(Object state); The parameter state is an instance of the class you created in step 1-a above. For the NQueensProblem you would need to write something like aima.search.nqueens.NqueensBoardTest

9795

# a subclass of aima.search.framework.SuccessorFunction .This generates a stream of Successors where a Successor is an object that represents an (action, resultantState) pair. In this release of the code the action is a String (something like "placeQueenAt4,4" and the resultant State is an instance of the class you create in step 1.a . An example is aima.search.nqueens.NQueensSuccessorFunction.

9896

# If you need to do an informed search, you should create a fourth class which subclasses aima.search.framework.HeuristicFunction. This implements a single function int getHeuristicValue(Object state); keep in mind that the heuristic should DECREASE as the goal state comes nearer . For the NQueens problem, you need to write something like aima.search.nqueens.QueensToBePlacedHeuristic.

9997100-10198

that is all you need to do (unless you plan to write a different search than is available in the code base ).

10299103100

To actually search you need to

@@ -126,6 +123,7 @@ A good example (from the NQueens Demo ) is

126123

}

127124

}

128125

}}}

126+129127

==Search Inheritance Trees ==

130128131129

there are two inheritance trees in Search. one deals with "mechanism" of search.

@@ -148,8 +146,6 @@ The second tree deals with the search instances you can use to solve a problem.

148146149147

etc

150148151-152-153149

So if you see a declaration like

154150

"SimulatedAnnealingSearch extends NodeExpander implements Search" , do not be confused.

155151

@@ -162,8 +158,6 @@ Again, if you get confused, look at the demos.

162158163159164160

==Logic Notes==

165-166-167161

The ONE thing you need to watch out for is that the Parsers are VERY finicky . If you get a lexing or parsing error, there is a high probability there is an error in your logic string.

168162169163

To use First Order Logic, first you need to create a subclass of aima.logic.fol.FOLDomain which collects the constants, predicates, functions etc that you use to solve a particular problem.

@@ -181,8 +175,6 @@ Except elimination-ask, the rest of the algorithms from chapter 13 and 14 have b

181175

==LearningNotes==

182176183177

===Main Classes and responsibilities===

184-185-186178

A <DataSet> is a collection of <Example>s .Wherever you see "examples" in plural in the text , the code uses a DataSet . This makes it easy to aggregate operations that work on collections of examples in one place.

187179188180

An Example is a collection of Attributes. Each example is a data point for Supervised Learning .