Welcome to the Garbage World! The garbage world uses the basic grid world functionality from the Russell/Norvig code, so your experience working with the Vacuum world should serve you well. There are differences both in the domain itself, and in how the code works, however. The Domain ============= The objects in the world are: -- the agent -- garbage -- paper -- recycling bins -- garbage cans The agent's basic task is to put paper in the recycling bins, and garbage in the garbage bin. The agent has finite capacity to carry objects (default 5). You will see in the world's performance measure that positive points are gathered for each piece of paper put in a bin and each piece of garbage put in a can. There are penalties for leaving garbage and paper in the world, for putting garbage or paper in the wrong receptacle, and in addition each step is penalized. Another difference in the way the world works is the nature of the percept the agent gets. Recall in the vacuum world the agent got only three pieces of information: -- bump; whether the last action caused a bump against an obstacle -- dirt; whether or not there is dirt here -- home; whether or not the agent is back at its home position. In contrast, a garbage world agent gets the following: -- agent; the agent itself -- location; an xy-coordinate indicating the agent's current location in the grid -- heading; the direction the agent is pointed in -- a list of all the objects at the current location -- the bump indicator as above. Including the agent in the percept may seem a little strange, but it allows the agent to "remember" things about the world or to maintain an "inner mental state." See the examples to see how this might work. ===================== The Code ===================== There are a few differences between this code and the vacuum world code you saw: -- loader file. This file will let you load the entire environment -- examples file. Several simple agents -- bug fixes. All known bugs fixed!! You might start by loading the full environment (load-garbage-world), then running one of the examples in examples.lsp, such as (cga-test), (hga-test), or (hga-test-2). Also, you may want to change the font for the toplevel window to be a monospace font, such as Courier New. Go to the Preferences Menu, Main Preferences option. From the Toploop tab, click on the *top-font* button, and then select Courier New (8 point). Then click OK, then Apply, and then Save (to have it be the new default), or Close (to just use it until you next restart ACL).