VUWLGP

What is VUWLGP?

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


Directory Structure

This VUWLGP release is structured into 5 directories.


Documentation Structure

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!


Using VUWLGP

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.

  1. Use or implement a new subclass of IPopulation.
  2. Define the fitness environment. This usually involves:
  3. Create a subclass of IProgram which uses the new IFitnessMeasure.
Other tasks which may be necessary or useful: Note also the fitness case text format. Once all of these steps have been carried out the new classes can be assembled into a VUWLGP run against a particular problem.



Christopher Fogelberg
fogelbchri@mcs.vuw.ac.nz or cgf.unimail@syntilect.com