CSE 5361 Spring 1999
Due: March 30, 1999, 7:00pm (March 31, 1999, 7:00pm for -10%)
This homework is designed to give you experience using a partial-order
planner. Unfortunately, I was unable to get a C++ version, so we will be
using Lisp for this homework. You will not be doing Lisp programming, but
will be designing wumpus-world planning operators using Lisp syntax. The
planner you will be using is Sensory GraphPlan (SGP) version 1.0d, a
full-featured partial-order planner complete with conditional effects and
lots more. SGP is stored in the directory /public/cse/5361-501/sgp
- Familiarize yourself with the operation of SGP by reading through the
README file and running a few test domain problems. See below for a quick
tutorial to run Lisp on gamma2.
- Stored in the hw4 directory is the file wumpus.pddl that
contains a partial specification of my version of the wumpus operators
(only TURNLEFT, GOFORWARD-UP and CLIMB are given) and a problem based on
the wumpus world in Figure 6.2 of Russell and Norvig. You are to construct
the remaining operators TURNRIGHT, GOFORWARD-DOWN, GOFORWARD-LEFT,
GOFORWARD-RIGHT, GRAB, SHOOT-UP, SHOOT-DOWN, SHOOT-LEFT and SHOOT-RIGHT.
The sample domain and problem give you examples of the predicates available
for the preconditions and effects of your operators. Your operator
definitions should be general enough to solve any consistent subset of the
following goals given complete information about the world (where N, X, Y
and D represent appropriate values, not variables).
(agent-gold N) (agent-in-cave)
(agent-location X Y) (not (agent-in-cave))
(agent-orientation D) (wumpus-alive)
(agent-arrows N) (not (wumpus-alive))
- Also stored in the hw4 directory are 14 test worlds. You are
to implement a problem for each world, where the goal is to have all the
gold pieces and to not be in the cave. Run the planner on each these 14
problems, in addition to the Figure 6.2 problem, and record the results
(see tutorial for how to collect output). Note that by default the planner
looks for plans of no more than ten steps. You can overcome this
limitation by supply the :levels parameter to the plan function
(see tutorial for syntax). You are welcome to implement LISP or C/C++ code
to help automate this process.
- Email to me (firstname.lastname@example.org) three files (preferably in one tar
file): your completed wumpus.pddl file with all actions and problems
defined, your file showing the output of all 15 problems, and a discussion
of your experience with the SGP planner (e.g., ease of action and problem
definition, planning efficiency, and quality of solutions). Be sure your
code runs under the CMU Common Lisp on gamma2.
CMU Common Lisp / SGP Tutorial
To run CMU Common Lisp on gamma2, execute the following
gamma2> setenv CMUCLLIB /usr/local/cmucl/lib
CMU Common Lisp 18a, running on gamma2
Send bug reports and questions to your local CMU CL maintainer, or to
Python 1.0, target SPARCstation/Solaris 2
CLOS based on PCL version: September 16 92 PCL (f)
If you put the 'setenv' command in your login script and /usr/local/bin in your path, then simply entering 'lisp' will work.
To exit lisp, enter '(quit)' at the '*' prompt. To load SGP,
first enter '(load "loader")' and then '(load-gp)'. You can
test the planner using a sequence of commands similar to the following.
* (dribble "wumpus.out")
* (load "loader")
* (in-package :gp)
* (load-domains "wumpus.pddl") ;; assumes wumpus.pddl in pddl directory
* (plan 'ww62 :levels 999)
* (plan 'ww4a :levels 999)
* (plan 'ww10b :levels 999)
Note the use of the (dribble "wumpus.out") and (dribble)
commands to collect output. You will need to be in the GP package to run
the planner. Once you are in the GP package, to quit lisp you will have to
get back to the USER package by entering '(in-package :user)' before
entering '(quit)', or just enter '(user::quit)'.
More information about CMU Common Lisp can be found in /usr/local/cmucl/README.