next up previous


CSE 5361 Spring 1999

Homework 4

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 on gamma2.

1.
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.

2.
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))

3.
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.

4.
Email to me (holder@cse.uta.edu) 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 commands:

gamma2> setenv CMUCLLIB /usr/local/cmucl/lib
gamma2> /usr/local/bin/lisp
CMU Common Lisp 18a, running on gamma2
Send bug reports and questions to your local CMU CL maintainer, or to
cmucl-bugs@cs.cmu.edu.
Loaded subsystems:
    Python 1.0, target SPARCstation/Solaris 2
    CLOS based on PCL version:  September 16 92 PCL (f)
* (quit)
gamma2>

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")
* (load-gp)
* (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)
* (dribble)

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.


next up previous