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 fixes.

From the CHANGES file:

  • 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 J. Steele)
  • fixed a pointer bug that has caused problems on Linux and FreeBSD implementations (thanks to Jan Jihn-Fa)
  • 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
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.

Multi-threaded lilgp

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 include
  • 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:
  • 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.
Click here to get a more detailed descrption. To get the distribution, you have the following options:

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 the trail?
  • You can sort the population depending on fitness, depth or complexity.
  • 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 his site for more details.

Constrained genetic programming

Cezary Janikow 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.