Genetic programming is part of the evolutionary computation subfield of artificial intelligence. Genetic programming uses techniques inspired by biological evolution to evolve computer programs that perform user-defined tasks. The aim of OakGP is to provide an efficient and flexible open-source framework to allow people to experiment with genetic programming. To support this aim OakGP incorporates the following features:
- Tree-based. Programs are represented using tree data structures.
- Type information. Functions, variables and constants all have associated type information.
- Checked during the construction of tree structures to ensure type safety.
- Allows user-defined types.
- Supports generic types.
- Pure functions. OakGP provides a wide range of functions that can be used in the evaluation of tree structures. Function domains include:
- Arithmetic - add, subtract, multiply and divide functions for
int
,long
anddouble
primitives, plusjava.math.BigDecimal
andjava.math.BigInteger
. - Higher order functions - map, filter, reduce.
- Comparison operators.
- Arithmetic - add, subtract, multiply and divide functions for
- Genetic operators. OakGP uses techniques inspired by biological evolution to evolve new tree structures. The techniques include two main sub-categories:
- Mutation - hoist, point, shrink and subtree mutation.
- Crossover - common region and subtree crossover.
- Configurable. Allows configuration of the following:
- Primitive set (functions, constants and variables).
- Termination criteria.
- Functions.
- Genetic operators.
- Selection strategies (e.g. fitness proportionate selection or rank selection).
- Extensible. Framework enables extension (i.e. adding new functions, genetic operators, etc.) without the need to modify the existing code. The open-source nature of the project, combined with the documentation on this site, provides developers with enough information to add new functionality specific to the problems they are trying to solve.
- Documented. This site includes an introduction to genetic programming and a guide to getting started with OakGP.
- Examples. This site provides examples of how OakGP can be used to find solutions for:
- Symbolic Regression
- Grid War
- Towers of Hanoi
- The Artificial Ant Problem (also known as the Santa Fe Trail problem)
- JVM-based. Implemented in Java, OakGP runs on the Java Virtual Machine.
- An established and stable platform.
- Runs on many operating systems.
- Supported by a large collection of libraries and tools.
- Open-source.
- Apache License, Version 2.0.
- Source code is viewable on GitHub.