This is an example of the binary encoding problem as described in the
original back-propagation paper by McClelland & Rumelhart.  The input
layer consists of 8 units, the hidden layer of 3 units, and the output
layer 8 more units.  An input pattern is all input units but one off - thus
there are 8 possible input patterns.  The task is to learn to reproduce the
input pattern at the output.  Essentially the hidden layer must learn to
binary encode the input, and the output layer to binary decode the hidden
layer.

NO GRAPHICS
-----------

To make the simulator type `make', which will create an executable `sim'.
To make a floating point version, type `make fsim' which will create the
executable `fsim'.  Run the executable.

To run a sample simulation type "read simulate" to the simulator prompt.  This
will build an 8-3-8 encoding network and run it.  First the 3 hidden units
will be displayed, then the network will be run for a few cycles.  Then
units will be displayed again and then the network will be run for a longer
time.  This will continue for a while; the cycles in between displays will
increase.  When a total of about 550 cycles for each original 8 units is
completed all the units will be shown.  At this point you can look at the
encoding of individual units by calling the "test" function.  For example,
"call test encode 0" sets will set the the encoding for `0' in the 3 hidden
units.  The `0' unit in the output layer should be close to 1000.

After 550 cycles not all units will encode to a stable place but almost all
will.

GRAPHICS
--------

Make the simulator by typing `make gsim'.  Run the executable produced `gsim'.
When the graphics interface window comes up, type `read demo' to the
command prompt.  Then click on custom mode.  Now if you place the mouse
cursor in the graphics display window and click the left button, 50 cycles 
will be run.  If you place the mouse cursor over one of the input units
(the lower 8) and click the middle button, you will see which of the hidden
(middle 3 layer) and output (upper layer) are activated.

One cycle corresponds to 32 simulator steps, so it will take a while after
each left button click for the 50 cycles for each of the 8 input units to
be run, one cycle for the first, one for the second, etc.  After about 550
cycles (for each input unit), or 11 left button clicks, clicking the middle
button over one of the input units should cause the corresponding output
unit to turn on fairly strongly and all the other output units very little.

In fact, clicking the middle button over one of the input units causes one
cycle to be run for that position.  So you can step through the learning
process one cycle at a time.  Since it takes 550 or so cycles for each of
the 8 units to learn well (4400 cycles in total), this is somewhat tedious.
