VUWLGP is a register-machine linear genetic programming (RMLGP or LGP) package developed at the School of Mathematics, Statistics and Computer Science, Victoria University of Wellington. LGP works by creating an initial population of random programs. Of these, some will be better for the target problem than others. These programs are selected and undergo evolutionary operations which can improve the program. As a result of this from generation-to-generation the best program will get better and better.
In LGP, each program consists of a sequence of register machine instructions and perhaps some simple conditionals, e.g., in a C-style representation:
r[2] = r[1] * 0.2345; r[0] = r[1] + r[0]; if(r[0] < r[2]) r[1] = 0.6547 + 05624; . . .
At program termination one or more of the register values is interpreted as the output of the program and given semantic meaning. Programs represent directed acyclic graphs whose structure evolves flexibly and mutably during the evolutionary process.
VUWLGP was developed and then extended in 2005 by Christopher Fogelberg as part of his Computer Science Honours programme. This package is released under the GPL (see gpl.txt in the root directory for the license). Christopher Fogelberg's other contact details can be found on his webpage (here).
This VUWLGP release is structured into 5 directories.
doc
baseSrc
implementations
exampleProblems/symreg
exampleProblems/multiclass
unitTests
This documentation is organised into two key sections. In the first section, Using VUWLGP, how VUWLGP can be customised for a problem is described, with a particular emphasis given to multi-class classification (although VUWLGP can be used for any problem).
Functions and classes not mentioned in the documentation below should not need to be modified in order to address a new problem. The code itself is commented though - read this if you need to learn more about these functions!
To use VUWLGP, you need to do the following (modifying or extending one of the examples given is probably the easiest approach). The classes which need to be developed or used are first given.
IPopulation
.IFitnessCase
, or using an existing one.IFitnessMeasure
. The fitness measure is a member of and used by the program class.IProgram
which uses the new IFitnessMeasure
.implementation
) - here.
Christopher Fogelberg
fogelbchri@mcs.vuw.ac.nz or cgf.unimail@syntilect.com