User applications written for lil-gp 0.95b will require changes to run under version 0.99b. The changes are nontrivial but straightforward. The format for specifying some parameters has changed as well, conversion should be trivial with the exception of multiple subpop exchange topologies, which have changed completely.

If you've modified the 0.95b kernel then your code will definitely break.


  • ADFs and more. Individuals are now considered to be forests rather than single trees, with each different trees possibly over different function sets. Function sets can include special tokens causing other trees in the individual to be evaluated, giving the net effect of ADFs.
  • Function sets defined at runtime. Allows user code to create function set based on parameter settings.
  • Header file consolidation. All the sources now include only "", which itself is nothing but a list of #includes. This should ease things for users which need to modify kernel includes.
  • Unlimited tree size. The "max_nodes" parameter is now optional -- if it is unset then the only limit on tree size (in nodes) is available memory.
  • Tracking of N best individuals. The top N individuals in a population are printed to the BST file, where N is a user-settable parameter (previously only the single top individual was listed in the BST).
  • Continuation lines in parameter files. A backslash at the end of a line now continues a parameter definition. This is useful for...
  • Specifying options to operators and selection methods. This is now done with one big long parameter. Instead of this:
  • breed[2].operator = crossover
    breed[2].rate = 0.9
    breed[2].select = tournament
    breed[2].size = 7
    breed[2].internal = 0.8
    breed[2].external = 0.2
    you do something like this:
    breed[2].operator = crossover, \
            select = (tournament, size=7), \
            internal = 0.8, external = 0.2
    breed[2].rate = 0.9
  • Improved mutation operator. The half-and-half method can now be used to generate the mutant subtrees, and the depth can be specified as a ramp instead of a single value.
  • Altering breeding parameters during the run. An undocumented feature of previous versions was that the breeding parameters (percent crossover, percent reproduction, selection methods, etc.) could be altered mid-run by altering the parameter database. This won't work any more, but this feature is officially supported via another method. Subpopulation exchange topologies can be altered in a similar fashion.
  • More sample problems. The squad-car problem has been removed, but the two-boxes problem and the lawnmower problem are included (both using ADFs).
  • Object-oriented implementation of selection methods and operators. Helpful for those wishing to add their own.
back to the lil-gp home page.
lil-gp changes for version 0.99b, Doug Zongker, last modified 6/13/1995