CSE 5361 Spring 1999
Class Project
Proposal Due: April 20, 1999
Project Due: May 13, 1999
For the class project, you will design and implement the best-performing
wumpus-world agent possible. As part of this task, you must design and
implement an object-oriented class library in C++ for one or more of the AI
techniques listed below and use them within your agent. Although the
primary goal is an awesome agent, a secondary goal is good object-oriented
design. In regards to changes in the wumpus simulator, there will still be
only one wumpus, but it can move. You may also want to include vision
and/or natural language capabilities to take advantage of the bitmap image
and natural language hint percepts.
Some resources are listed below with the individual techniques, but a
good general resource for AI software is the CMU AI Repository at
- Planning:
- This project would involve the implementation of a class
library for a planner (partial or total order). The planner class would be
instantiated with a set of operators, initial state and goal state, and
then called (with a search limit) to look for a plan, which can then be
used to achieve the goal state in the wumpus world. Possible resources
include the C++ planner with the aisrch2 library, Billy Harris's C++
planner (contact him at wharris@cse.uta.edu), or a purported C++ version of
the UCPOP4 planner (see http://www.cs.washington.edu/homes/weld/ucpop.html
for details).
- Uncertainty:
- This project would involve the implementation of a
class library for a decision-theoretic agent as described in Chapter 17 of
Russell and Norvig. First, you will need to implement a belief-network
inference mechanism. The decision-theory class would be instantiated with
an action model and a sensor model (i.e., belief network) and possible
actions. The decision-theory class would utilize a state class that
defines the state and its utility. Given evidence from the percepts, the
decision-theory class would compute the action maximizing expected utility.
Possible resources include the IDEAL influence diagram system (see
http://www.rpal.rockwell.com/ideal.html)
and the JavaBayes system (see
http://www.cs.cmu.edu/
javabayes).
- Learning:
- This project would involve the implementation of a class
library of one or more learning methods as described in Chapters 18-21 of
Russell and Norvig. The details of the instantiations depend on the
learning method used, but typically, some initial examples are given, and
the learning method would return a rule to be used to guide the
wumpus-world agent. For example, you could learn to improve your
performance based on past experiences (action-percept examples), learn the
utilities of states from rewards, or learn to predict the movement of the
wumpus. There are lots of resources on the web for learning algorithms in
C and C++. For starters, follow the pointer to David Aha's page on
http://www-cse.uta.edu/
holder/ml.html.
- Natural Language:
- This project would involve the implementation of a
class library for a natural language parser as described in Chapters 22 and
23 of Russell and Norvig. The parser class would be instantiated with an
augmented grammar and would be used to translate English sentences into
logical statements. The parser class can be used to translate the natural
language hints that are part of the wumpus-world simulator's percept.
Possible resources include the natural language parser in the aisrch2
library or interfacing to Prolog.
- Vision:
- This project would involve the implementation of a class
library containing methods for object recognition in binary images as
described in Chapter 24 of Russell and Norvig and supplemental material to
be distributed in class. The vision class would be instantiated with a
description of objects to look for and would be used to determine which
objects were present in a given image. The vision class can be used to
identify a wumpus, pit or gold in an adjacent room by processing and image
percept available from the wumpus-world simulator.
On or before the above proposal due date, you should email a proposal
of your class project. The project proposal should indicate which of the
above areas you plan to work on and a more-detailed description of the
functionality of your class library and agent. I set the due date for the
proposal at April 20 so that you will have seen some lecture material on
all the areas, but I encourage you to submit your proposal as soon as
possible to get my okay and begin work.
In addition to the well-documented C++ code of your class library and agent
implementations, you should also provide an electronic document (LaTex, MS
Word, HTML, PostScript) describing the interface to your class library, how
it works, how you use it in your agent, and how well the agent performs on
a variety of worlds in the wumpus-world simulator. You are welcome to
utilize any code available for this course or elsewhere. Your code should
compile and execute under Gnu C++ on the gamma machine. Also, your
code should generate output demonstrating the functionality of your
project. Projects will be graded based on their level of difficulty,
correctness, readability, efficiency, and performance in the wumpus world.