To download the code for simple-POP and simple-GP, visit . AIMA INSTALLATION: Assuming you have the AIMA Lisp system in place, start by editing the file "aima.lisp". Search for the form (def-aima-system planning () "Code from Part IV: Planning and Acting" ("planning" / )) and replace it with this: (def-aima-system planning (search agents logic) "Code from Part IV: Planning and Acting" ("planning" / "aima-compatibility" "simple-utilities" "simple-pddl-domains" "simple-data-structures" "simple-planners" "simple-pop" "simple-pop-with-bindings" "simple-gp")) Unzip the simple-pop.zip archive and put all the contained files in the aima/planning directory. There will be some files not referenced above; these can be ignored, deleted, or read for pleasure. In a Lisp listener, after you've loaded "aima.lisp", you can evaluate (aima-load 'planning) to load the simple planners. The usual (aima-load 'all) will load the planners along with everything else. PAIP INSTALLATION: Assuming you have the PAIP system in place, start by unzipping the simple-pop.zip archive and putting all the contained files in the same directory as the other PAIP files, such as "auxfns.lisp". In a Lisp listener, after you've loaded "auxfns.lisp", you can evaluate (requires "load-simple-planners") which will load all the planning code. GENERAL NOTES: 0. The planners in this system were developed very quickly, each taking just a few days to implement. I spent a fair amount of time afterwards cleaning up the code, adding comments, and so forth, but there may be bugs remaining even if the algorithms appear to be correct. Most importantly, it may be that I've been sloppy about some planning assumptions (e.g., is the closed world assumption made consistently?) I'd appreciate any feedback on whether this is the case so that I can fix the code. 1. Test code for the planners can be found at the end of the file "simple-pddl-domains.lisp". You can test whether the planners are working by evaluating these forms: (run-planner-tests (make-instance 'propositional-POP-planner) *propositional-problems-and-domains* :exclude-problems '(start-to-finish)) (run-planner-tests (make-instance 'POP-planner) (append *propositional-problems-and-domains* *first-order-problems-and-domains*) :exclude-problems '(start-to-finish back-and-forth)) (run-planner-tests (make-instance 'GP-planner) (append *propositional-problems-and-domains* *first-order-problems-and-domains*)) You'll have to look at the results to see whether they are correct; this should be clear for at least some of them by inspection. 2. The file "aima-compatibility.lisp" is loaded whether the code base is AIMA or PAIP. The file contains conditionalizations that provide uniformity between the two systems with respect to the planning code. The planners are only loosely coupled with the AIMA code base; the file "aima-compatibility.lisp" contains some quick-and-dirty functions for the planners, which were originally developed using PAIP, to get running with as little coding effort on my part as possible. 3. The conditionalizations mean that compiled files cannot be transferred between the aima/planning and the PAIP directories and expected to run correctly. The files must be recompiled if moved. 4. (The planning files are awkwardly named with a "simple-" prefix to keep them together in the alphabetical ordering of the PAIP directory.) 5. A previous release included a flaw-removal planner and a continuous planner. I've removed these from the load file, after changing the design of the partial-order planner that handles variable bindings. I've included the files simple-f-pop.lisp and simple-cont-pop.lisp in this release in case anyone is interested, but *THEY DO NOT RUN*. -- Rob St. Amant (stamant@csc.ncsu.edu)