Project 3 of CS1573 of Spring 2005

Last edited  3/21/05

The project is to implement a partial-order planner and test it on several planning problems.  It is strongly recommended that you build the planner in two stages.  In the first stage, build a planner where the action schemas do not have variables.  Test it on the shoes and socks problem (Figure 11.6) and the flat tire problem (Figure 11.7).  In the second stage, modify the planner to handle unbound variables, as described on pages 393 and 394.  Test it on the blocks world problem (called Sussman's Anomaly) of Figure 11.16 on pg. 414.    You will probabably want to first debug the stage-two version on simpler blocks world problems.

Your planner should input a set of action schemas, including the Start and Finish schemas, which specify the initial state and the goals.  It should output a plan, printed nicely, like the plan on the top of pg. 390, but without the arrows.  It does not need to linearize the plan.

As your search strategy, use itterative deepening.  Although this will waste time on easy problems, it will save you time on hard problems.  You can control the search by giving it two numbers as input: the depth to start the itteration and the depth at which it should give up and fail.  For instance, if you know by hand analysis that the search depth should be 10, you can debug faster by giving it 10 and 11, respectively, as the initial and final depths.

Implement a legible trace (with print statements).  It should trace the develop of each plan by (1) indicating what open precondition it is working on, (2) what action (existing or new) it used to achieve it, and (3) what conflicts it found and for each, (4) how it resolved the conflict.   Use some kind of numbering to make it clear where it is going when the search backs up.

Grading


Submit via email to both the TA and the instructor the following:
Points for the assignment will be awarded based on
Don't forget the ground rules on plagarism, which are repeated here:

You should do your own programming for the programming projects.  Except as noted below, copying code written by others, including code you've found on the web, is considered plagarism.  Hiring others to do your programming is considered plagarism.  If I decide that you have plagarized your programming assignment, I will give you a zero on it.  If you plagarize more than once, then I will consider formal disciplinary action, including failure of the course.  Exceptions:  You definitely should include code from the textbooks' Python code repository.  As you will see, many of the functions you will want to use have been stubbed out--you will have to provide their implementation, but key data structures have been defined for you.  If you wish, you may include code from the Python package index or the Vaults of Parnassus.  As of 1/3/04, there does not appear to be anything useful in either the Python package index or the Vaults of Parnassus.  However, if you find something useful (modules are added daily), you may use it if