Feature List for GAlib Version 2.3.x
- Overlapping (steady-state GA) and non-overlapping (simple GA) populations are supported. You can also specify the amount of overlap (% replacement).
- Chromosomes can be built from any C++ data type. You can use the types built-in to the library (array, list, tree) or derive a chromosome based on your own objects.
- Built-in termination methods include convergence and number-of-generations. The termination method can be customized.
- Speciation can be done with either DeJong-style crowding (using a replacement strategy) or Goldberg-style sharing (using fitness scaling).
- Elitism is optional.
- Built-in chromosome types include list, tree, 1D, 2D, and 3D arrays, 1D, 2D, and 3D binary string. The binary strings, strings, and arrays can be variable length. The lists and trees can contain any object in their nodes. The array can contain any object in each element.
- Built-in chromosome initialization operators include uniform random, order-based random, and initialize-to-zero.
- Built-in chromosome mutation operators include random flip, random swap, destructive, swap subtree, swap node.
- Built-in crossover operators include partial match, ordered, cycle, single point, two point, even, odd, uniform, node- and subtree-single point.
- All chromosome initialization, mutation, and crossover methods can be customized.
- Built-in replacement strategies (for overlapping populations) include replace parent, replace random, replace worst. The replacement operator can be customized.
- Built-in selection methods include rank, roulette wheel, tournament, stochastic remainder sampling, stochastic uniform sampling, and deterministic sampling. The selection operator can be customized.
- Dominance and Diploidy are not explicitly built in to the library, but any of the genome classes in the library can easily be extended to become diploid chromosomes.
- Support for scalar and vector objectives is built in.
- Objective functions can be population- or individual-based.
- A user-specified objective function is the only problem-specific code that must be written.
- on-line and off-line statistics are recorded.
- Many examples are included as well as the standard DeJong and Royal Road problems.
21 September 1995