CS470/570
Artificial Intelligence
Spring 2008
Project #3
Due: Friday, April 18th

For this project you need to write a Prolog agent to assist with playing Wumpus World. Based on information you supply the agent should be able to tell you which squares are safe, contain neither a pit nor the Wumpus, which squares are unsafe, may contain a pit or Wumpus, etc. Note that the agent does not have to pick your next move, it simply says how safe a move is. Similarly, you do not have to write a program (Prolog or otherwise) to play Wumpus World.

Rules: The Wumpus World rules are detailed in the text, page 197. Note that for this project the Wumpus World can be up to 50x50. We will not use the rule allowing you to fire an arrow and, hopefully, kill the Wumpus.

Requirements:

  1. You can tell the agent (probably using the assert predicate) where breezes, stenches, and glitters (from the gold) have been detected.
  2. You can ask the agent whether a specific square is safe, contains neither a pit nor the Wumpus.
  3. You can ask the agent whether a specific square is unsafe, it may contain a pit or the Wumpus.
  4. You can ask the agent whether a specific square is deadly, it definitely contains a pit or the Wumpus.
  5. You can ask the agent whether a specific square is useless, it definitely doesn't contain the gold.
  6. You can ask the agent whether a specific square is promising, it may contain the gold.
  7. You can ask the agent whether a specific square is golden, it definitely contains the gold.
  8. The Wumpus World can be up to 50x50.

Hand-In:

You need to hand in a typed write-up containing the following:
  1. An abstract summarizing what you did and what the results were.
  2. An introduction explaining the basics of Wumpus world and logical programming.
  3. An algorithm section explaining your Prolog program. Including,
    1. How many of the tests are successfully implemented and any limitations of the program. Examples of limitations might include having trouble with edges or corners, knowing safe and deadly, but not unsafe, not having any predicates for gold.
    2. A description of how rooms are represented, e.g by integer pairs, lists with two elements, each room is uniquely named, etc.
    3. A description of the major predicates, what they test, and how they are used. E.g. explain how to use the program to ask if a room is safe.
    4. An explanation of how information is added to the K.B. E.g. how do you tell the program that a breeze has been detected?
  4. A results section. Including,
    1. Samples of the program's output. Show information being added to the K.B. and queries being asked. You should illustrate the Wumpus world 'board' that goes with the queries so the reader can easily see that the program is reponding correctly.
    2. A discussion of how the program behaved. Did it have any strengths or weaknesses?
  5. A conclusion section.