lil-gp Genetic Programming System
Present version is 1.1, released Sept 98
To see info on previous version of lilgp, see
the previous versions page .
This is a full release of the regular (non multi-threaded) lilgp. It
includes support for java front ends, as well as an html manual and bug
From the CHANGES file:
Click here for changes to 0.9.5 and here
for changes to 0.9.9. Click here to see errata present in 0.9.9.
- added a local sort return to remove dependency on local qsort (thanks
to Bret Talko)
- bug fix to get restart from checkpoint working (thanks to Robert
- fixed a pointer bug that has caused problems on Linux and FreeBSD
implementations (thanks to
- added improved lilgpMonitor, java implementation
- added lilgpSetup, nice java setup system
- added html version of the manual
- corrected the example parameter files for multiple population setups
This release is a beta release of lilgp that includes support for
multi-threading. Users will have a choice of running lilgp as before,
running with Solaris threads (only on Suns of course) or POSIX
threads. It is beta because we have not extensively tested it on
non-Solaris machines. Note that you must (unfortunately) recode your
applications sinc the "g" variable is no longer global, but now a
pointer for each thread. Some examples are provided, as well as an
updated to explain these changes. 1.1 also has some bug fixes that
- fixed a bug in kernel/gp.c for the release of the data structure shp.
- fixed the mulit-population example files to be up to date with the present release (release 1.02 had files from the 0.99 version).
Overview of lilgp
lil-gp is a generic 'C' genetic programming
tool. It was written with a number of goals in mind: speed, ease of
use and support for a number of options including:
Click here to get a more detailed descrption. To get
the distribution, you have the following options:
- Generic 'C' program that runs on both workstations and PC's (though
PC's will require windows, or the djgpp gcc compiler (available here) or
better OS's to support the needed memory).
- Support for multiple population experiments, using arbitrary and
user settable topologies for exchange, for a single processor (i.e., you
can do multiple population gp experiments on your PC).
- lil-gp manipulates trees of function pointers which are allocated
in single, large memory blocks for speed and to avoid swapping.
Contributions to lilgp work
Win95 Interface to lilgp
Andres del Campo Novales
has created a modified lilgp to run on win95. It is available here from GARAGe (a little faster) or from his web site. This
application is mainly based on lil-gp 1.02 with some add-ons. He says:
I summarise some of its advantages:
- It has a graphical interface for input parameters with a help system.
You do not need to remember what the name of the parameter was.
- It allows starting, pausing, going generation by generation (running
step by step), and even increasing the max_generations limit when
reached if the user wants to!
- Graphical representation of adjusted fitness, structural complexity
and tree depth. They are updated every generation.
- You can study every individual in the population at the actual
generation. You can watch every individual composition and even its
graphical evaluation... animated!! It is easy to implement in user
problems. Do you want to see how the artificial ant moves through
- You can sort the population depending on fitness, depth or
- You can upgrade easily from lil-gp files. It even accepts lil-gp
input parameter files.
- The kernel is independent. User problems are stored in DLLs. Two
examples are included: artificial ant and lawnmower.
Strongly typed lilgp
Sean Luke has made a number of additions to lilgp including: fixes to
mtlilgp, strong typing, reading pops from files and other things. Visit
for more details.
Constrained genetic programming
has created a constrained GP using lilgp. You may visit his cgp-lilgp web
site for more details.
The people responsible for lil-gp are:
Alas, I am again alone in supporting lilgp. If you have any questions,
contact me and
I'll do what I can to get back to you.