|class||eoOp< EOType >|
|Abstract data types for EO operators. More...|
|class||eoMonOp< EOType >|
|eoMonOp is the monary operator: genetic operator that takes only one EO. More...|
|class||eoBinOp< EOType >|
|Binary genetic operator: subclasses eoOp, and defines basically the operator() with two operands, only the first one can be modified When defining your own, make sure that you return a boolean value indicating that you have changed the content. More...|
|class||eoQuadOp< EOType >|
|Quad genetic operator: subclasses eoOp, and defines basically the operator() with two operands, both can be modified. More...|
|class||eoQuad2BinOp< EOT >|
|Turning an eoQuadOp into an eoBinOp: simply don't touch the second arg! More...|
Initializators are operators that creates initial individuals and populations.
Variators are operators that modify individuals.
Selectors are operators that select a subset of a population.
Replacors are operators that replace a subset of a population by another set of individuals.
Typically, a mutation is an operator that modifies an individual, and an algorithm is an operator that modifies a population.
In EO, there is a genetic operator hierarchy, with eoOp as father and eoMonOp (monary or unary operator), eoBinOp and eoQuadOp (binary operators) and eoGenOp (any number of inputs and outputs, see eoGenOp.h) as subclasses. Nobody should subclass eoOp, you should subclass eoGenOp, eoBinOp, eoQuadOp or eoMonOp, those are the ones actually used here.
#eoOp#s are only printable objects, so if you want to build them from a file, it has to be done in another class, namely factories. Each hierarchy of #eoOp#s should have its own factory, which know how to build them from a description in a file.