Exercise 1: Reactive Agent

A stimulus-response (SR), or reactive agent, behaves entirely in reaction to the environmental situation in which it finds itself. More generally, an SR or reactive agent acts according to its hard-wired situated control rules. The key restriction here is the lack of internal state information. That is, the ‘cognitive’ state of the agent exclusively consists of the information available to it through its sensory channels.

For this first project, you will implement a simple stimulus-response agent that tries to navigate to a goal while defeating obstacles along the way. Your agents will try to solve problems within the MÆDEN simulated environment. Do not wait until the last minute to start on the project; you may suffer in multiple ways if you do. This is an individual project; all work must be your own.


By completing this project, you should, among other things:


Write an agent that attempts to solve problems in the MÆDEN environment. Your agent will only be asked to solve problems known to have solutions. The following sub-tasks are intended to suggest a reasonable development path of increasing complexity and capability.

  1. 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.
  2. Add situated-control rules. Technically, the first S-R agent already had situated control rules, but these focused on the sense of smell. Add rules that access the visual field and attempt to avoid obstacles that may be between the agent and the goal.
  3. Try other ideas. Try other approaches as long as they do not involve maintaining internal state. Note, agents have a sensory input reporting the status (either ‘ok’ or ‘fail’) of the previous action. Technically, this provides a kind of memory and thus acts like an internal state value; however, it is delivered via the sensory input and so you may use it (if you wish).
  4. Final SR agent. (12pt) Your final version should be thoroughly documented and tested. Your main executable file should be called ReactiveAgent. Actions must be based on current sensory information. Only primitive actions are allowed; you may not send a sequence of actions in order to bypass the SR constraint. Your SR agent should utilize all relevant sensory information appropriately.
  5. Write a README file. (2pt) You should write a (plain text) README file that includes: your acknowledgments, instructions for running your agent, and a description of the ‘other ideas’ that you tried. This description should provide enough detail so the reader could replicate your attempt; it should also report the benefit (if any) that the implemented feature had on your agent's performance. Your README should be a plain text file but you should organize it in a reasonable/readable format.

That's almost it! You only need submit your final best agent -- not a progression of increasingly sophisticated agents. Your code must be documented thoroughly. You may use a language of your choice as long as it supports standard sockets; however, I must be able to run your agent without an IDE and without installing any specialized libraries. FYI, the following languages are acceptable: Racket, Common Lisp, Ruby, Python, Java, and C++. 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 beyond what is provided on the web or in the code, ask me for help.

The Report

(6pt) You should write a one-page extended abstract describing your activities and findings associated with this assignment. Your report should serve as a stand-alone document; thus, it should (briefly) describe the problem or focus, the approach that you employed, and an description of how well it performed. You are welcome to include figures if you think they contribute to the report; however, make sure your picture really is worth a thousand words.

I am providing a modified template file that you should use to format your one-page report; this template works with LibreOffice. (If you would rather use LaTeX, you may use the style file from the ACM but compare to the template I provide and remove extraneous elements as needed.) Be sure to use the prescribed formatting. When you have completed your report and its formatting, generate a pdf document to be included as part of your final submission. Remember, you are limited to a single page; submit only a pdf version of your document.

Submission instructions:

Each student should submit a single gzipped tar file or a zipped archive. When extracted, your archive must create a folder named youremail, where youremail is replaced with your actual Westmont email (without the “@westmont.edu”). Make sure that directly inside your folder you have everything necessary to compile and run your agent. However, do not include git or other version control management files. If you are using Java and extending from org.maeden.controller.AbstractAgentController.java, the directory tree starting with “org” must start here. Do not modify the package structure of classes from which you are extending. Your source/executable agent file should be called ReactiveAgent. At the root of your submission folder, you should also have the required README file including instructions for running your agent, and your pdf report. Submit the archive for project 1 on Canvas.