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
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
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.