Project 2 EP'99
Development of a Simple Classifier System

last updated: Nov. 23, 9a
report due: Fr., Dec. 3, 11p; We., Dec. 8, 11p if late option
program demos: Dec. 7 and Dec. 10 in the morning

Develop a simple classifier system that learns rule-sets of cardinality 25 that process binary inputs from 8 binary input channels and produce 5 different output based on the inputs (00,01,10, 11, and "no output"). The classifier receives a reward / punishment based on its output between 1 and 99 units; no output receives a constant punishment of one unit. Training sequences are specified as a list of input-payoff pairs; for example:

00001111 00=+04 01=+05 10=-98 11=-02

means that for the input 00001111 the outputs 00 and 01 are rewarded by 4 and 5 units; the outputs "no output", 10, 11 result in a punishment of 1 unit, 98 units, and 2 units respectively. Write a system that evolves a rule-set ( Michigan approach) or a set of rule-sets (Pittsburgh approach) which consist of 25 production rules that have the following form:

"string of length 8 consisting of 0,1 or *": "output (00,01,10, or 11)"

For example,

1*******11

represents a rule that generates an output of 11 in the case that the input symbol starts with '1'.

Define a learning strategy, a conflict resolution strategy, and a learning schedule of a classifier system of your own choice. A conflict resolution strategy decides which decision to make, if more than one rule is eligible to fire. If no rule is eligible to fire the rule set produces no output. If exactly one rule is eligible to fire the rules decision is chosen as the answer for the testcase. A learning schedule determines when learning takes place.

It is important that your classfier system can only learn from past experience (violating this constraint will be penalized); that is, prescanning or preanalyzing the training file is not allowed in the project. This, however, does not prevent you from analyzing any examples that were already seen by your algorithm.

Report the result of running 2 benchmarks that will be given to you in the second week of week of November. Traning sequences consist of 400 examples; that is, each training sequence consists of 400 input-payoff pairs. Test your system by giving the same training sequence 3 times to your system for each benchmark, and report how your system did with respect to rewards and punishments. Also maintain a system bankaccount that keeps track of your system's performance which is initialized to 0 after seeing the 200th example (that is, the first 200 examples are ignored when evaluating learning performance). Report the value of this bankaccount after seeing the 300th, 600th, 900th, and 1200th example. Write a report 5-7 single spaced page report that outlines the architecture of your learning environment, describes the strategies and algorithms that were employ, describes the "evolution" of your system, and summarizes the results of running for the first of two benchmarks (run your system 4 times for the first benchmark, and report and analyze the results of the 8 runs). Benchmark2 will be run on Dec. 7.

Add a display option to your program that everytime the program goes into learning mode, it displays the current rule-set(s), their bankaccount, your system's bankaccount, and visualizes the rule-set evolution process (at least in part). There will be demos of your system, approximately 5 days after the due date.

You can use any programming language to perform the project. In the case that you find out that the explored methods don't work well, it will strengthen your project, if you can explain why the particular approach didn't work to well. In general, analyze and explain the results you obtained as good as you can. Also discuss if the observed learning of the system matched your expectation or not. Be also aware of the fact that time is limited, and the project has to be finished in about a month.