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.
planner.heuristics
BreadthFirst.java will implement breadth-first search.
PlanViewer.java.
planner.core
Action.java: Describes a plan operator.
BasicPlanner.java: Wraps a BestFirstSearcher for generating a plan. It is
abstract in order to enable variants to handle different
BestFirstObject classes. Implements the Planner interface.
BasicPlanStep.java: Useful basis for creating BestFirstObject classes.
BestFirstPlanner.java: Extends BasicPlanner. When provided with a BestFirstHeuristic, the result is a functioning planner.
BreadthFirstTest.java: Should pass all tests upon downloading.
Conjunction.java: Represents the effects of an Action.
Domain.java: Represents a planning domain.
Plan.java: Represents a plan.
PlanGraph.java: Represents a plan graph, a data structure that can be useful to assist in creating plans. You will complete the extractNoDeletePlan() method.
PlanGraphTest.java: Unit test for PlanGraph. It will fail initially. It should pass once your solution to PlanGraph.java is complete.
PlanStep.java: Represents a plan step, for use in the search process.
Planner.java: Interface for planners. Implemented by BasicPlanner.
Predicate.java: Represents a parameterizable true/false statement.
Problem.java: Represents a specific planning problem in a given Domain.
State.java: Collection of Predicate objects representing the state of the world.
planner.gui
PlanViewer.java: Runnable GUI for evaluating your planning heuristics.
planner.lisp: The files in this package you may safely ignore.
BestFirstHeuristic interface. Each one
should be placed in planner.heuristics.
extractNoDeletePlan() method in the PlanGraph class. Then use the length of the relaxed plan as the estimate.
domains:
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:
| Grade | Content |
| A | Program is working with all heuristics Paper is complete Analysis properly characterizes the basis of each claim Both additional domains created |
| B | One or two heuristics have small bugs The analysis is somewhat flawed One domain is missing or incomplete |
| C | Problematic bugs and/or somewhat incomplete or moderately flawed paper Both domains are incomplete |
| D | Severe bugs and/or multiple parts missing from paper Domains are missing |
| F | Program does not work at all and/or paper is not seriously attempted |