OakGP

Frequently Asked Questions

General
   What is OakGP?
   What is genetic programming?
   What is tree-based genetic programming?
   What is type safety?
   What open-source licence does OakGP use?
   How can I get started using OakGP?
   How can I provide feedback, raise bugs or ask questions?
   Where can I learn more about genetic programming?
   Why is it called OakGP?
Technical
   What functions are available?
   How can I define my own functions?
   How can I define my own evolution strategy?
   How can I define my own genetic operators?
   How can I define my own selection strategies?
   What can I define my own types?
   How can I define my own termination criteria?
   How can I specify a random number generator?

What is OakGP?

OakGP is an open-source genetic programming framework written in Java. OakGP uses a tree-based approach with type safety.

What is genetic programming?

Genetic programming is a specialization of genetic algorithms, which are part of the evolutionary computation subfield of artificial intelligence.

Genetic programming uses techniques inspired by biological evolution to evolve computer programs.

What is tree-based genetic programming?

A tree-based approach to genetic programming represents programs as tree structures.

What is type safety?

Type safety avoids invalid combinations of functions and arguments.

What open-source licence does OakGP use?

OakGP uses the Apache License, Version 2.0. You may obtain a copy of the License from http://apache.org/licenses/LICENSE-2.0.

How can I get started using OakGP?

Please visit the Getting Started with OakGP guide.

How can I provide feedback, raise bugs or ask questions?

Please visit the OakGP issues page on GitHub.

Where can I learn more about genetic programming?

A Field Guide to Genetic Programming provides a good introduction to genetic programming. (R. Poli, W. B. Langdon, and N. F. McPhee, with contributions by J. R. Koza, 2008.)

The Genetic Programming Bibliography contains a "nearly complete bibliography of papers published on Genetic Programming".

Why is it called OakGP?

OakGP is a tree-based genetic programming (GP) framework written in Java. Oak is both the name of a tree and the predecessor to Java.


What functions are available?

See the functions page for a list of functions that OakGP provides.

The getting started guide contains a section on how to specify the functions of a primitive set.

How can I define my own functions?

New functions can be created by implementing org.oakgp.function.Function.

See the Towers of Hanoi example for a demonstration of how problem-specific functions can be created and used.

How can I define my own evolution strategy?

Implementations of the org.oakgp.evolve.GenerationEvolver interface are used to define how new generations are created from existing ones (e.g. what selections strategy and genetic operators to use). As an alternative to developing your own implementation of GenerationEvolver you may find that org.oakgp.evolve.GenerationEvolverImpl is sufficient for your needs.

The getting started guide contains a section on how to specify a evolution strategy.

How can I define my own genetic operators?

New crossover and mutation operators can be created by implementing org.oakgp.evolve.GeneticOperator.

How can I define my own selection strategies?

New selection strategies, for determining how candidates from an existing generation are selected for use by genetic operators, can be created by implementing org.oakgp.select.NodeSelector.

What can I define my own types?

User defined types can be created using org.oakgp.Type.

See the Towers of Hanoi example for a demonstration of how user defined types can be created and used.

How can I define my own termination criteria?

New termination criteria can be created by implementing java.util.function.Predicate<org.oakgp.rank.RankedCandidates>. See the org.oakgp.terminate package for details of the termination criteria provided by OakGP.

The getting started guide contains a section on specifying termination criteria.

How can I specify a random number generator?

By default OakGP uses java.util.Random to generate random numbers. If you wish to use your own approach to random number generation then you will need to implement org.oakgp.util.Random.

The getting started guide contains a section on how to specify a random number generator.

Home | Getting Started | Documentation | FAQs