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:
- Your code, including
your version of the test sentences
- A trace (generated by
print statements in your code) of the code working through each of the
3 problems.
- Instructions for how to
load, initialize and run your version of our test
suite. We may verify that the test suite works by running your
code.
- Design Discussion.
List the three hardest design problems
you encountered, and describe how you solved them.
Points for the assignment will be awarded based on
- How much of the test suite is handled correctly.
- The correctness of the code. Points off for bugs &
hacks.
- The clarity of the code; should be modular, have legible names,
good comments, good documentation, etc.
- The clarity and thoughtfulness of the Design Discussion.
- Your ability to answer questions about the code during the oral
exam.
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
- You clearly identify in your source code where the package came
from
- You are prepared to answer questions during the oral exam about
how it works
- You contact me as soon as you have found a package that you want
to use. Send me email with a URL for the package. If I
believe that it simplifies the project, then I'll send email to all the
students and may extend the project to make it sufficiently
challenging. If your project is submitted with a reference to
such a package and you did not contact me, then your score on the
project will be lowered.