Project 1: Search Agent
- Getting unstuck. You should include some type of mechanism to prevent your agent
from getting stuck in situations where there does not exist a path through the visual field
or through the mental map constructed so far.
Either, you should provide a fall-back ‘explore’ mode
in which the agent acts so as to acquire more spatial information,
or implement your search algorithm such that it will consider paths
through space that has not been explored.
- Goal placement. Ultimately, the goal is for the agent to get to the food.
But in order to get past obstacles, the agent will need to establish and pursue various subgoals.
When the agent encounters an obstacle in its visual field,
the search of part 2 below provides the means by which the agent can get past the obstacle.
However, implicit in this observation is the necessity of establishing a particular goal
to which a path is sought.
You will need to provide some means of establishing a goal
toward which your search mechanism can aim.
For this first project, you will implement an agent that solves problems
in the MÆDEN environment.
Do not wait until the last minute to start on the project;
you will suffer in many ways if you do.
This is an individual project.
As always, I encourage you to talk to your peers about ideas or to me and to ask questions.
But the code you submit must be your own code.
Write an agent that solves problems in the MÆDEN environment.
Problems will involve only wall obstacles and will be guaranteed to have solutions.
These sub-tasks are intended to provide a reasonable development path
of increasing complexity and capability.
- Stimulus-Response agent. Create a primitive agent
that merely follows its nose toward the food.
This agent should be able to solve any world without obstacles.
- Search within the visual field.
Having completed the S-R agent, add the ability to search for paths
within the visual field.
That is, suppose your agent has been following its nose
and encounters a wall blocking its progress.
If there is a viable path through the visual field to a spot beyond the obstacle,
your search method should find the optimal such path.
Your method should search for a path from the agent's current location
to any given location in the visual field.
While the search mechanism should work for an arbitrary location,
you must employ some means to establish an actual goal.
Once the path is found,
your agent should follow the path to the specified target,
at which point it should continue following its nose to the food.
Whenever its progress is blocked, it should attempt this search through the visual field.
This version of your agent is not expect to solve every conceivable problem
although a solution will always exist.
- Searching through mental maps.
As your agent moves about (following its nose for example),
it encounters more and more of the world.
Sometimes, an agent must rely on a memory of where it has been previously
in order to solve more challenging problems.
For example, perhaps the agent cannot get around an obstacle using search through the visual field.
Augment your agent with the ability to construct mental maps of all the places it has observed.
Once the agent is constructing maps of the explored portion of the environment,
either generalize your search method from above or provide an additional search method
so as to search for paths to an arbitrary location in the mental map.
Having found such a path, your agent should follow it
and then continue with what it was doing (e.g., following its nose).
- Putting everything together.
The intended idea is that your agent uses a lower-cognitive function (following its nose)
until it encounters an obstacle.
At that point, it tries to find a path through the visual field;
if that fails, it resorts to search through the mental map constructed so far.
Finally (if searching through the mental map will not traverse unknown territory),
the agent should move in an exploratory mode in the hopes that an expanded mental map will yield progress.
Your code should be documented thoroughly.
Do not neglect to include an acknowledgments header within your submission.
You may use a language of your choice.
However, I must be able to run your system without
an IDE or installing any specialized libraries.
FYI, I have Racket, Common Lisp, Ruby, Python, Java, and C++ on my machine.
If you want to use something else, talk to me before investing effort on the above tasks.
If you need assistance connecting to MÆDEN via the socket layer,
ask me for help.
Create a folder named with your name or Westmont email user-name (no spaces)
followed by "P1A".
For example, someone named Eva Bailey might create a folder called
"evabaileyP1A" or "ebaileyP1A".
Make sure that inside that folder you have the following:
documented source file(s) for your agent;
a README file that includes your acknowledgments
and instructions for running your agent.
Finally, either tar or zip the folder so that when we extract it,
the folder "<yourname>P1A" will be created.
Do not use any other archiving tool.
Submit the archive for project 1 on Eureka.