CSCI 235: Intelligent Robotics

Project 3: Anytime Planning

For this project, we will use my modified version of the Pyhop planner.

A single invocation of the Pyhop algorithm is not guaranteed to return an optimal plan. Additional search may be needed in order to achieve this. An anytime planner returns a result at any time it is requested. By enhancing Pyhop to return multiple plans, in principle it can be interrupted at any time, returning the best plan available from what it has encountered thus far. This does not guarantee an optimal plan, of course, but it creates an opportunity to find a better one.

The modified Pyhop planner has a special invocation function called multi_pyhop(state, tasks, n). It works very similarly to the original pyhop(state, tasks) function you employed in Project 2. The parameter n allows you to specify how many distinct plans to return. (If fewer than n plans are possible, it will return the smaller number.)

For this assignment, create two distinct planning domains using the enhanced version of Pyhop and the Python programming language. You may use the same two domains that you used in Project 2, or you may invent one or two new domains. The domains should meet the same requirements as for Project 2. A significant difference from Project 2 is that each domain must have some opportunity for nondeterminism, that is, a point at which the planner has distinct choices to make with different outcomes. If you reuse your domains from Project 2, make sure to modify them to include nondeterminism.

To implement nondeterminism, methods must return a list of task lists instead of a single task list. The enhanced Pyhop planner will consider each of these task lists as a possible search alternative. It will explore additional task lists if it has not exhausted its quota of plans.

After completing your domains, write a short paper (2-3 pages) containing the following:

Submit each of your Python files and your paper in PDF format via Moodle by Tuesday, September 11 at 2:30 pm.