CSCI 335 - Artificial Intelligence

Fall 2017

Programming Project #2: Planning


You will develop a series of search heuristics for solving planning problems. These heuristics will be demonstrated using the Blocks World domain, in addition to two domains of your own making.


The Java source files are provided in To set up the files in Eclipse, do the following:

Programming Assignment

The files are placed in six packages. Classes you will modify are in boldface. Implement the following heuristics. Each one will be a class that implements the BestFirstHeuristic interface. Each one should be placed in planner.heuristics.


The Blocks World domain has been provided for you. You are to construct two additional domains, encoded in PDDL. Create three problem files for each domain. Place each domain in a subdirectory of domains:


For each heuristic, determine experimentally the "hardest" Blocks World problem that it can solve in one minute or less using the Linux machines in the lab. If you would rather use your own computer, be sure to specify its clock speed. Note that the planner may well crash from inadequate memory before it reaches the one-minute mark.

Note: If your planner can solve all of the regular Blocks World problems, some extra-hard problems are available in the blocks2 directory.

For each experiment you run, record:


When you are finished with your experiments, you will write a short paper summarizing your findings. Include the following details in your paper:


Grading criteria

AProgram is working with all heuristics
Paper is complete
Analysis properly characterizes the basis of each claim
Both additional domains created
BOne or two heuristics have small bugs
The analysis is somewhat flawed
One domain is missing or incomplete
CProblematic bugs and/or somewhat incomplete or moderately flawed paper
Both domains are incomplete
DSevere bugs and/or multiple parts missing from paper
Domains are missing
FProgram does not work at all and/or paper is not seriously attempted