184 lines
6.2 KiB
HTML
184 lines
6.2 KiB
HTML
|
<HTML>
|
||
|
<HEAD>
|
||
|
<TITLE></TITLE>
|
||
|
</HEAD>
|
||
|
<BODY BGCOLOR="#FFFFFF">
|
||
|
<P><B><FONT SIZE="5">Chapter 1
|
||
|
|
||
|
</FONT></B></P>
|
||
|
<PRE>
|
||
|
1.1 <A HREF="#1.1">Features
</A>
|
||
|
1.2 <A HREF="#1.2">Kernel</A>
|
||
|
1.3 <A HREF="#1.3">Specification of Problems
</A>
|
||
|
1.4 <A HREF="#1.4">Multiple Populations
</A>
|
||
|
1.5 <A HREF="#1.5">Availability
</A>
|
||
|
1.6 <A HREF="#1.6">Author</A></PRE>
|
||
|
<P>
|
||
|
<HR>
|
||
|
</P>
|
||
|
<P>
|
||
|
<B><FONT SIZE="5">Introduction</FONT></B></P>
|
||
|
<P>
|
||
|
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.<FONT><BR>
|
||
|
</FONT>
|
||
|
</P>
|
||
|
<P>
|
||
|
<B><FONT SIZE="4"><A NAME="1.1">1.1 Features</A></FONT></B></P>
|
||
|
<P>
|
||
|
lil-gp features include:</P>
|
||
|
<UL>
|
||
|
<LI>ease-of-use: options are specified via a flexible format parameter
|
||
|
file; command line arguments lend the system to batch operation
|
||
|
for long series of runs
|
||
|
</LI>
|
||
|
</UL>
|
||
|
|
||
|
<UL>
|
||
|
<LI>supports multiple subpopulations with arbitrary exchange topologies
|
||
|
<BR>
|
||
|
|
||
|
</LI>
|
||
|
<LI>written in C for portability to a wide variety of Unix/DOS/Mac
|
||
|
platforms<BR>
|
||
|
|
||
|
</LI>
|
||
|
<LI>7 selection methods: fitness proportionate, greedy overselection,
|
||
|
inverse fitness, variable size tournament, random, best, worst
|
||
|
<BR>
|
||
|
|
||
|
</LI>
|
||
|
<LI>3 genetic operators: crossover, reproduction, mutation<BR>
|
||
|
|
||
|
</LI>
|
||
|
<LI>writes and restarts from checkpoint files <BR>
|
||
|
|
||
|
</LI>
|
||
|
<LI>optional node and/or depth limitations on tree size<BR>
|
||
|
|
||
|
</LI>
|
||
|
<LI>support for ephemeral random constants<BR>
|
||
|
|
||
|
</LI>
|
||
|
<LI>extensive output, including statistics files ready for import
|
||
|
into plotting/analysis packages<BR>
|
||
|
|
||
|
</LI>
|
||
|
</UL>
|
||
|
|
||
|
<P>
|
||
|
<B><FONT SIZE="4"><A NAME="1.2">1.2 Kernel</A></FONT></B></P>
|
||
|
<P>
|
||
|
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.<BR>
|
||
|
|
||
|
</P>
|
||
|
<P>
|
||
|
<B><FONT SIZE="4"><A NAME="1.3">1.3 Specification of Problems</A></FONT></B></P>
|
||
|
<P>
|
||
|
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.<BR>
|
||
|
|
||
|
</P>
|
||
|
<P>
|
||
|
<B><FONT SIZE="4"><A NAME="1.4">1.4 Multiple Populations</A></FONT></B></P>
|
||
|
<P>
|
||
|
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.<BR>
|
||
|
|
||
|
</P>
|
||
|
<P>
|
||
|
<B><FONT SIZE="4"><A NAME="1.5">1.5 Availability</A></FONT></B></P>
|
||
|
<P>
|
||
|
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.<BR>
|
||
|
|
||
|
</P>
|
||
|
<P>
|
||
|
<B><FONT SIZE="4"><A NAME="1.6">1.6 Author</A></FONT></B></P>
|
||
|
<P>
|
||
|
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.
|
||
|
</P>
|
||
|
<P>
|
||
|
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.<BR>
|
||
|
|
||
|
</P>
|
||
|
<P>
|
||
|
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:<BR>
|
||
|
|
||
|
</P>
|
||
|
<BLOCKQUOTE>
|
||
|
Computer Science Department
|
||
|
</BLOCKQUOTE>
|
||
|
<BLOCKQUOTE>
|
||
|
A-714 Wells Hall
|
||
|
</BLOCKQUOTE>
|
||
|
<BLOCKQUOTE>
|
||
|
Michigan State University
|
||
|
</BLOCKQUOTE>
|
||
|
<BLOCKQUOTE>
|
||
|
East Lansing, MI 48824
|
||
|
</BLOCKQUOTE>
|
||
|
<BLOCKQUOTE>
|
||
|
USA<BR>
|
||
|
|
||
|
</BLOCKQUOTE>
|
||
|
<P>
|
||
|
<FONT SIZE="2">1 Well, we don't actually welcome bug reports, but
|
||
|
send them anyway.</FONT></P>
|
||
|
</BODY>
|
||
|
</HTML>
|