Chapter 1
1.1 Features 1.2 Kernel 1.3 Specification of Problems 1.4 Multiple Populations 1.5 Availability 1.6 Author
Introduction
lil-gp is a C language system for developing genetic
programming applications based on the LISP
work of John Koza at Stanford University.
lil-gp evolves trees whose nodes are C function pointers,
so tree evaluation is done entirely with complied
code. This gives us a manyfold speed increase,
allows us to handle much large problems (bigger
populations, more generations), and is portable to a wide
variety of platforms. lil-gp individuals can be composed
of multiple trees, some of which can evaluate
the others to give ADF capabilities. This
system is the first (that we know of) to support multiple-population
runs with arbitrary interchange topologies. lil-gp
has many many options for controlling breeding, and is capable
of emulating the "Simple LISP Code," given
in the appendix of Koza's book [3 ], as well
as the parameters given in Chapter 7, "Detailed Description
of Genetic Programming," of that book.
lil-gp features include:
At lil-gp's core is a tree representation that is compact yet
amenable to extremely fast evaluation. Trees are stored as preorder
expressions, with special symbols inserted to indicate ephemeral
random constants and conditionally evaluated subtrees. The compactness
of the representation allows larger populations to be stored in
real memory, and the fact that trees are stored as contiguous
blocks of memory minimizes the impact of paging on performance.
The selection methods and genetic operators are implemented in
an object-oriented fashion, allowing new routines to be added
easily. Checkpoint files save the entire state of the run, allowing
a promising run to be extended, or an interrupted run to be completed.
A portable random number generator provides consistent results
across platforms.
Creating a program in lil-gp is done with a minimum of code writing.
The use must provide one C function for each GP function and terminal,
in addition to a fitness evaluation function. Several callback
hooks are provided for initialization, customized output, and
reading and writing user state information to checkpoint files.
Once the user code is written, the executable need only be compiled
once_all parameters and operators are available_even switch between
single and multiple population runs_just by modifying the parameter
file.
lil-gp's support for multiple population problems includes user-specified
exchange topology and exchange interval. The parameter file specifies
how the individuals to be exchanged from each subpopulation are
selected, and where they go. The output files include statistics
on fitness and tree size for each subpopulation and for the entire
population, both for the current generation and the entire run
to that point.
This is version 1.0 of lil-gp. The distribution includes implementations
of three of the problems from Koza's first book [3]--the Boolean
11-multiplexer, symbolic regression, and the artificial ant. Two
problems from the second book [4] using ADFs are also implemented:
the two-boxes problem and the lawnmower problem. This documentation
covers building and running the sample problems, writing your
own applications, and extending the kernel.
lil-gp was written by Douglas Zongker, under the direction of Dr. Bill Punch. Mike Boers, Mike Raymer, Dr. Erik Goodman, and the rest of the MSU GARAGe (Genetic Algorithms Research and Applications Group) also provided valuable assistance.
Other users of lil-gp have provided suggestions and solutions
for compatibility problems. Thanks especially go to Nigel Dodd,
Kayvan Sylvan, Pierce T. Wetter III, and Glen Ropella.
We want to hear about your experiences with lil-gp. We welcome
your questions, comments, sugges- tions, and, of course, bug reports.1
lil-gp related e-mail can be sent to zongker@isl.cps.msu.edu.
You should always be able to find any new information on lil-gp
on the World Wide Web, at the URL http://isl.cps.msu.edu/GA/software/lil-gp.
Paper mail may be sent to:
Computer Science Department
A-714 Wells Hall
Michigan State University
East Lansing, MI 48824
USA
1 Well, we don't actually welcome bug reports, but send them anyway.