CSCI 335 - Artificial Intelligence
Fall 2011
Programming Assignment #2: Planning
Overview
Using your implementation of best-first search from
the previous assignment, you will implement a system for solving
planning problems. You will develop heuristics for guiding the search in
a domain-independent manner. You will also encode some additional problems
as planning problems.
Here are the provided source files:
Programming Assignment
Implement the following heuristics:
- A simple breadth-first search heuristic
- A heuristic that employs a count of achieved goals
- A heuristic that uses the length of a plan that disregards negative preconditions and postconditions
- An additional heuristic of your invention
Here are some hints and tips to help you with your implementation:
- Place your code in a file called
PlanningHeuristics.py.
- You may have to modify parts of
Planning.py in order to
disregard negative preconditions and postconditions.
- You may also add additional unit tests to PlanningTest.py.
Proofs
- Prove whether or not your last two heuristics are monotonic. If either
is monotonic, prove whether it is better-informed than the goal-counting
heuristic.
Experiments
Compare the performance of your heuristics against the blocks world problems
included above. Assess performance in terms of:
- Nodes processed
- Length of solution
- Effective branching factor
Feel free to mark as unsolvable any problem which, for a
given heuristic, requires more than two minutes of computing time. You need
not try any problem larger than that for that heuristic. Solution length
is particularly important, as it is highly possible that a non-monotonic
heuristic may be used.
Additional Domains
In addition to the blocks-world domain, you are to devise PDDL codings of three
additional domains. For each of these domains and each of the problems you create for them, include a discussion in your paper of the relative performance of your heuristics on them.
- Encode the requirements for completing a Computer Science major according to the Hendrix Catalog as a domain. Then encode three student transcripts as "problems". Two of them should "graduate", and one should not.
- Encode the problem of a robot traversing the Morgan Center as a domain.
- At a minimum, encode three floors, and at least three rooms on each floor.
Also be sure to encode the hallways connecting said rooms.
- The domain should include the ability to travel via the elevator.
- The robot should contain a basket into which items can be placed.
- One room should be the mail room. The robot can pick up mail from there.
- The robot's job is to deliver the mail to professors. All goals will
be oriented towards that end.
- Encode a total of three problems for this domain as well.
- Invent a domain and create three problems for it.
Paper
When you are finished with your experiments, you will write a short paper
summarizing your findings. Include the following details in your paper:
- A description of each heuristic, and a proof of its montonicity
(or lack thereof)
- The data you collected from each of your experiments
- An analysis of the data, including:
- A discussion of the relative merits of the heuristics relative to
breadth-first search and each other, and
- Discuss the degree to which the results matched your expectations
Submit your code, your domain PDDL files, as well as your paper using
Sauron.
Grading criteria
| Grade | Content |
| A | Program is working with all heuristics Paper is complete Analysis properly characterizes the basis of each claim |
| B | One or two heuristics have small bugs The analysis is somewhat flawed |
| C | Problematic bugs and/or somewhat incomplete or moderately flawed paper |
| D | Severe bugs and/or multiple parts missing from paper |
| F | Program does not work at all and/or paper is not seriously attempted |