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 |