(Please do this project in groups of 2 to 5.)
As Newell puts it in “The knowledge level”, we can think of an agent’s conduct in the world as a decision problem in which the agent recognizes its input by perception and affects the world by action. In this sense, the agent debugs the world. Pick a domain where the relevant aspects of the agent’s environment can be modeled, if only crudely, by a discrete event simulation—ideally one of multiple processes that interact with the agent and each other. Implement the simulation so that you can play the role of the agent and interact with the environment hypothetically, for instance by trying different actions at the same juncture, as if you were saving and restoring a game. Start simple!
Your presentation should take about 30 minutes. In your presentation, introduce the domain you picked and demonstrate your model. Address the following questions, to the extent that they are interesting and you have time given your audience’s ignorance:
-
What is a state? How many are there? How did you settle on this representation? Give some typical examples of states and transitions.
-
Does the simulation behave as you expect, and why? What are your sanity checks, to find out if something is very wrong? How did you (or will you) tweak your simulation, and what for? (For example, an unrealistic outcome may tempt you to tune some parameters, or the desire to test a hypothesis may prompt you to log more statistics.)
-
How does the agent and the environment processes depend on (that is, communicate with) each other, and to what extent are they independent (that is, oblivious) of each other? (For example, you might idealize buses as not interacting with each other at all except by exchanging passengers.) In particular, what interaction transcripts are allowed between the agent and its environment?
-
What distinguishes a successful agent from a failing one in this environment? What is a simple strategy that an agent might reasonably adopt (such as “move to the closest unexplored location”), and how well does it do? What does the agent know, in Newell’s sense?
-
What tools do you use to interpret the model—to visualize and summarize states, sequences of states, trees of states, etc.? (For example, you might find it useful to automate the repeated testing of the model, then plot or animate the results quantitatively.) Is there a tool that you can imagine but don’t have?
-
What does your model explain, and what does it leave unaccounted for? Who might benefit from playing with the simulation? (For example, does it clarify an assumption, make a prediction, or illustrate a slogan?) Do the members of your group approach or react to the simulation differently?
-
Did any aspect of your model turn out to be awkward to express as a discrete event simulation? (Something continuous, perhaps?) How did you work around it?
-
How did you organize your simulation and tools? What parts might be useful in other projects in the future? Can you simplify your model by deleting or consolidating some code, or refine it by adding some code? How does that affect your answers above?
-
What might you have done differently? How might you have done better?
This project description is surely incomplete. Please ask questions and express concerns about it.