Genetic Programming
Evolutionary.TreeGP — TypeImplementation of Koza-type (tree-based) Genetic Programming
The constructor takes following keyword arguments:
populationSize: The size of the populationterminals: A dictionary of terminals with their their corresponding dimensionality- This dictionary contains (
Terminal,Int) pairs - The terminals can be any symbols (variables), constat values, or 0-arity functions.
- This dictionary contains (
functions: A collection of functions with their corresponding arity.- This dictionary contains (
Function,Int) pairs
- This dictionary contains (
initialization: A strategy for population initialization (default::grow)- Possible values:
:growand:full
- Possible values:
mindepth: Minimal depth of the expression (default:0)maxdepth: Maximal depth of the expression (default:3)mutation: A mutation function (default:crosstree)crossover: A crossover function (default:subtree)simplify: An expression simplification function (default::nothing)optimizer: An evolutionary optimizer used for evolving the expressions (default:GA)- Use
mutationandcrossoverparameters to specify GP-related mutation operation. - Use
selectionparameter to specify the offspring selection procedure
- Use
Description
The Genetic Programming is a technique of evolving programs, starting from a population of unfit (usually random) programs, fit for a particular task by applying operations analogous to natural genetic processes to the population of programs. It is essentially a heuristic search technique, i.e. searching for an optimal or at least suitable program among the space of all programs[1].
Auxiliary Functions
Evolutionary.Expression — TypeJulia expression wrapper
Evolutionary.randterm — Functionrandterm(t::TreeGP)Returns a random terminal given the specification from the TreeGP object t.
Evolutionary.simplify! — Functionsimplify!(expr)Simplify an algebraic expression
References
- 1John R. Koza, "Genetic Programming: On the Programming of Computers by Means of Natural Selection", MIT Press, 1992.