FJK Home | CPE/CSC 480 | Syllabus | Schedule | Lecture Notes | Assignments | Labs | Project | Other Links |
Name: | |
Points: | 10 |
Deadline: | Tue of Week 3, end of lab |
The goal of this lab exercise is to familiarize you with a programming environment for agents. The agents "live" in a simple world that consists of interconnected squares, and can perform simple actions like moving to the next floor, turning, or picking up items.
You can download the agent environment from the Blackboard "Course Materials" section. It is a Java program, and comes with a README file and JavaDocs. You will use it for two or three lab exercises, and also for a programming environment. The environment was developed by Matt Colon, who was also the grader for this class in previous years. While we hope that it will allow you to concentrate on the essential aspects of agents, this is still a prototype version, and not quite a "production environment." Please let us know via the Blackboard forum if you have problems with it. The environment comes with several sample maps. For this exercise, you should mainly use "MediumMap.sbm"; it may be interesting, however to also try the other ones.
The activities in this lab consist of several smaller analytical tasks, and one programming task.
The agent environment comes with a sample agent that illustrates its purpose, and also shows you how to use it. Your task here is to determine the type of the sample agent, based on the various agent types discussed in class and described in the textbook (i.e. reflex agent, reflex agent with state, learning agent, etc.). To do this, observe the behavior of the agent, and try to determine which capabilities are essential for the agent to be able to achieve that behavior. You need to select the "least sophisticated" agent that is capable of the behavior shown. In addition, you can also examine the code for the agent, but this can sometimes be misleading. For example, the agent may contain variables, which seems to imply the use of "state," but the variables could be used for some other purpose. Finally, you need to determine if this agent is capable of reaching the "Goal" square from the "Start" square. Explain your choice, and identify circumstances and constraints that enable or prohibit the agent from achieving the goal.
Modify the behavior of the agent so that its behavior is more random. This can be done in several ways. For example, the agent can randomly select an action at every step, or the agent can follow its path until it encounters an obstacle, and then randomly select one out of a few "sensible" actions. Our suggestion is to modify the action an agent takes when it bumps into an obstacle.
Note: It is not necessary to achieve full randomness here; the use of a (pseudo-) random number generator through the Java Random class or something similar is sufficient.
Your agent should behave different than the sample agent, and hopefully perform somewhat better. Is your agent guaranteed to reach the goal eventually, provided that the goal is reachable at all? What are the constraints, if any? Would you consider your agent to be more "intelligent" than the sample agent?
This assignment must be submitted electronically via the handin program on hornet by the deadline specified above. You need to submit the following items:
Please make sure that you have a functioning account on hornet. Follow this link for more detailed submission instructions and the use of handin.
This is an individual assignment. You must figure out and formulate your own answers, and write your own programs. It is fine with me to discuss general aspects of this lab with others (e.g. how to determine the type and capability of an agent, or the limitations of a random agent).
If you have gneral questions or comments concerning the programming aspects of the homework, post them on the Blackboard Discussion Forum for the assignment. The grader and I will check that forum on a regular basis, and try to answer your questions.
FJK Home | CPE/CSC 480 | Syllabus | Schedule | Lecture Notes | Assignments | Labs | Project | Other Links |
Franz Kurfess |