Genetic Programming
Evolutionary.TreeGP — Type
Implementation 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), constant 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)- Use
mutationandcrossoverparameters to specify GP-related mutation operation. - Use
selectionparameter to specify the offspring selection procedure
Evolutionary.Terminal — Type
TerminalAllowed terminal element types for tree-based genetic programming expressions.
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 — Type
Julia expression wrapper
Evolutionary.randterm — Function
randterm(t::TreeGP)Returns a random terminal given the specification from the TreeGP object t.
Evolutionary.simplify! — Function
simplify!(expr)Simplify an algebraic expression
Protected Functions
The following protected operators guard against domain errors (e.g. division by zero, logarithm of zero) so that arbitrary expression trees can be evaluated safely.
Evolutionary.pdiv — Function
Protected division
Evolutionary.aq — Function
Analytic quotient
Evolutionary.pexp — Function
Protected exponential
Evolutionary.plog — Function
Protected natural log
Evolutionary.psqrt — Function
Protected sq.root
Evolutionary.psin — Function
Protected sin(x)
Evolutionary.pcos — Function
Protected cos(x)
Evolutionary.ppow — Function
Protected exponentiation operation
Evolutionary.cond — Function
Conditional function
References
- 1John R. Koza, "Genetic Programming: On the Programming of Computers by Means of Natural Selection", MIT Press, 1992.