This project has two components. Your team (2-3 members) will create:
Each of these is described below.
In your environment, there will be 4 states/percepts and 4 actions. Rewards should be in the range from -10 to 10.
Your environment will be described by two text files:
We will provide an environment simulator which will be able to read in your environment and test.
/afs/csic.umd.edu/projects/cmsc421/common/pa2/TOY=CPP/
To compile it, type 'make'
To run, 'simulator in1 in1-r'
/afs/csic.umd.edu/projects/cmsc421/common/pa2/TOY-JAVA/ To compile, 'javac *.java' To run, 'java simple_simulator in1 in1-r' We provide two sample environments, in1, in1-r and in2, in2-r
We will constrain everyone to use the same abstract representation so that learning agents will be able to interact with all of the environments created by the class.
Environments which show some thought or creativity are encouraged.
Environment Turn in Procedure
You will turn in the following text files:
Put these in a tar file called 'env.tar'.
To submit electronically 'env.tar', execute following command from one of
your team member's account:
/afs/csic.umd.edu/submit/fall2005/cmsc421/bin/submit 2 env.tar
(Note that the project number is 2)
When your team submits env.tar, please email jylee@cs.umd.edu which account your team will use to submit (cs421xxx) and names of your team members.
This is the core of the project. We will provide skeleton code for both learning and evaluating your agent. Your job is to write an agent which will interact with the environment and will learn the function Q(S,A), which is the value of executing action A in state s. Your learning agent will output the Q function that it learns. We provide a simulator that will take as input this Q function and evaluate the function the agent has learned.
Skeleton code is available in:
/afs/csic.umd.edu/projects/cmsc421/common/pa2/SKELETON-CPP
for the C++ code, and
/afs/csic.umd.edu/projects/cmsc421/common/pa2/
SKELETON-JAVA
for the Java code.
LEARN directory: Files in this directory are used to implement your learning agent. There is an Agent_shell which will take as input the environment files, number of learning epochs and number of steps in each epoch and will output a text file with the Q function values.
You are allowed to modify ONLY Agent.cpp/Agent.java (and Agent.h).
You will turn in ONLY the Agent files and we will test your with the
original Agent_shell file. Note that you can not change parameters
of function Agent.Learn() or it will not work with our Agent_shell.cpp.
DO NOT MODIFY OTHER FILES.
EVAL directory : Files in this directory are used to evaluate your
agent learning. After learning (by running Agent_shell), it will output
Q values in a file (above <Q-value-file>).
The evaluator code takes the Q-file as input and evaluates the learning
result. The evaluator will take as input the environment files,
the Q values, number of epochs and number of steps in each epoch.
It will compute the total discounted reward received by the agents.
Once all the environments are turned in, we will be making these available for you to test your agent.
You will turn in two things: your code, which we will evaluate on several of the class environments and a report. The evaluation of your code will be based on the reward received during learning and the reward received during the evaluation phase.
For your writeup, we will expect a short description of your environment, a short description of your learning algorithm and, most importantly, some experiments which illustrate design decisions that you explored. The most obvious of these would be comparing different strategies for setting the learning rate parameter alpha in the program. These experiments should show, on two or more environments, the varying results. Think about what parameters you will hold fixed (number of steps and epochs? Amount of time? reward?) and which you will measure (total reward? average reward? number of steps/epochs?) You should present these in a graph or table. You should include a discussion of your findings.
Learning Agent Turn in Procedure

