 author:      Josiah C. Hoskins
 date:        June 1987

 purpose:     backpropagation learning rule neural net simulator
              for the tabula rasa Little Red Riding Hood example

 description: Bpsim provides an implementation of a neural network
              containing a single hidden layer which uses the
              generalized backpropagation delta rule for learning.
              A simple user interface is supplied for experimenting
              with a neural network solution to the Little Red Riding
              Hood example described in the text.

              In addition, bpsim contains some useful building blocks
              for further experimentation with single layer neural
              networks. The data structure which describes the general
              processing unit allows one to easily investigate different
              activation (output) and/or error functions. The utility
              function create_link can be used to create links between
              any two units by supplying your own create_in_out_links
              function. The flexibility of creating units and links
              to your specifications allows one to modify the code
              to tune the network architecture to problems of interest.

              There are some parameters that perhaps need some
              explanation. You will notice that the target values are
              either 0.1 or 0.9 (corresponding to the binary values
              0 or 1). With the sigmoidal function used in out_f the
              weights become very large if 0 and 1 are used as targets.
              The ON_TOLERANCE value is used as a criteria for an output
              value to be considered "on", i.e., close enough to the
              target of 0.9 to be considered 1. The learning_rate and
              momentum variables may be changed to vary the rate of
              learning, however, in general they each should be less
              than 1.0.

              Bpsim has been compiled using CI-C86 version 2.30 on an
              IBM-PC and the Sun C compiler on a Sun 3/160.

              Note to compile and link on U*IX machines use:
                      cc -o bpsim bpsim.c -lm

              For other machines remember to link in the math library.

 status:      This program may be freely used, modified, and distributed
              except for commercial purposes.

 Copyright (c) 1987   Josiah C. Hoskins

 Modified to function properly under Turbo C by replacing malloc(...)
 with calloc(...,1). Thanks to Pavel Rozalski who detected the error.
 He assumed that Turbo C's "malloc" doesn't automatically set pointers
 to NULL - and he was right!
 Thomas Muhr, Berlin April, 1988

