CS116 -- Artificial Intelligence
Fall, 2006
Stimulus-Response Agent
(last updated 9/14/2006)

For our first project, I want you to design and implement one or two "agents" that attempt to solve worlds in the 
MÆDEN environment.  You should pick from the three methods we've talked about in class: production systems, neural networks, and evolutionary algorithms.  Since the problem domain is (initially) fairly simple, you can probably "program" your agents using production systems or a single TLU (or a small hand-coded network).  Thus, you either should implement two agents -- one using a production system and one using a neural network -- or one agent using an evolutionary learning mechanism.

General guidelines and advice

Regardless of which style(s) of agent you choose to implement, you will first need to access and understand the
MÆDEN simulator.  There does exist some primitive documentation but you can also inspect the source code and refer to Josh or me for information.  I suggest you get yourself setup with the simulator and the keyboard controller as a first step and make sure you can manually control the critter and get the food.

Once you have the keyboard controller working, you can start working on your agent controller(s) that will take the place of the keyboard controller.

You only need design your agent(s) to handle basic navigation tasks.  They will not be required to grab and use tools (except to grab and eat the food).  You should focus on the standard test worlds 1 through 5 that require the agent to simply move to the location of the food, grab it and then eat it.  I will test your agent in other worlds with different obstacle characteristics, but they will be functionally equivalent.  The test worlds that I will use will only contain walls and food.  Thus, your perceptual processing need only process cells that are empty, contain a wall, or contain the food.

I suggest you take the sensory input from MÆDEN and create a feature vector.  Then your feature vector can be inputs to any of the agent implementations you choose.

Finally, if you decide to implement the evolutionary agent, your first step after creating a feature vector should probably be to write some code thatr randomly creates a population of agents from a pool of genetic material.  Then you will need to write "harness" code that runs a population through a given world and evaluates each member's fitness.  Lastly, you'll need to implement the evolutionary mechanisms for generating a successor population using survival, mutation and crossover-reproduction.

You are encouraged to discuss the problem together.  As usual, I expect you to document the types of help you give and receive.