************************************************************************
*               gpc++ - The Genetic Programming Kernel                 *
*                         C++ Class Library                            *
************************************************************************

What is the GP kernel?
======================

The GP kernel is a C++ class library that can be used to apply genetic
programming techniques to all kinds of problems.  The library defines
a class hierarchy.  An integral component is the ability to produce
automatically defined functions as found in Koza's "Genetic
Programming II".

Technical documentation in postscript format can be found in the "doc"
directory.  There is also a short introduction into genetic
programming (by Adam Fraser).

This system includes everything you ever wanted from a genetic
programming system but were always afraid to ask for, such as....

- Automatically defined functions (ADFs).

- Tournament and fitness proportionate selection.

- Demetic grouping

- Optional steady state genetic programming kernel (like the Adam
Fraser code).  Steady state means that not a complete new population
is built up every generation, but bad performing GPs are replaced by
newly evolved ones.  This uses approximately half the memory!

- Subtree crossover.

- Swap and shrink mutation.

- A way of changing every parameter of the system without
recompilation.

- Capacity for multiple populations (if you have the resources).

- Loading and saving of populations and genetic programs.

- Standard random number generator for complete portability.  This has
been improved: population sizes of over 250000 are possible now.

- Explanations of how to write the modules for evolving code.

- Examples.

- And the best thing for the experts: A parameter study about the
influence of every important parameter.

- Completely ANSI C++ compliant.

- Full and wonderful comments dispersed throughout the code.

- Internal parameter checks (can be turned off by a compiler switch).
Even if the programmer makes a mistake, the kernel complains.



This C++-code makes not use of templates and exceptions, so no C++
compatibility problems should arise.  

This software was compiled with the following compilers: 

- GNU C++-Compiler 2.7.0
- C++-Compiler by SUNSoft

Read the file INSTALL for how to compile the code.



LICENCE
=======

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 1, or (at your option)
any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.


Copyright 1993, 1994 Adam P. Fraser and 1996, 1997 Thomas Weinbrenner

For comments, improvements, additions (or even money) contact:

Thomas Weinbrenner
Grauensteinstr. 26
35789 Laimbach
Germany
E-mail: thomasw@emk.e-technik.th-darmstadt.de
WWW:    http://www.emk.e-technik.th-darmstadt/~thomasw

  or 

(Address may be out of date)
Adam Fraser, Postgraduate Section, Dept of Elec & Elec Eng,
Maxwell Building, University Of Salford, Salford, M5 4WT, United Kingdom.
E-mail: a.fraser@eee.salford.ac.uk
Tel:    (UK) 061 745 5000 x3633
Fax:    (UK) 061 745 5999

