|
bsCovariantDepthParsimonyPressure
|
On selection of a parent, use the weighted fitness for depth of trees to select smaller programs (also requires FitnessMethod to be fmWeightedMinimize or fmWeightedMaximize). Note that the ParsimonyPressure is calculated each generation using Cov(d, f)/Var(d), where
Cov(d, f) is the covariance between program depth d and program fitness f
in the population, and Var(d) is the variance of program depths.
|
|
bsCovariantSizeParsimonyPressure
|
On selection of a parent, use the weighted fitness for size of trees to select smaller programs (also requires FitnessMethod to be fmWeightedMinimize or fmWeightedMaximize) . Note that the ParsimonyPressure is calculated each generation using Cov(s, f)/Var(s), where
Cov(s, f) is the covariance between program size s and program fitness f
in the population, and Var(s) is the variance of program sizes.
|
|
bsDepthFairCrossover
|
On crossover, the depth of a subtree to be removed is calculated and used to constrain the depth of the new subtree from the other parent
|
|
bsDepthLimit
|
If child tree depth exceeds BloatLimit, then parent is added in its stead (Kosa method)
|
|
bsDepthParsimonyPressure
|
On selection of a parent, use the weighted fitness for depth of trees to select smaller programs (also requires FitnessMethod to be fmWeightedMinimize or fmWeightedMaximize)
|
|
bsHoistDepth
|
If child tree depth exceeds BloatLimit, then hoist mutation is performed on the child
|
|
bsHoistSize
|
If child tree size exceeds BloatLimit, then hoist mutation is performed on the child
|
|
bsLexicographicParsimonyPressure
|
Controls bloat by optimizing both fitness and tree size, by treating fitness as the primary objective and tree size as a secondary objective in a lexicographic ordering. During tournament selection, if fitness is equal, then the smaller program is fitter. If SelectionMethod is not tournament selection, this method is ignored
|
|
bsNone
|
Do no anti-bloat control
|
|
bsShrinkDepth
|
If child tree depth exceeds BloatLimit, then shrink mutation is performed on the child
|
|
bsShrinkSize
|
If child tree size exceeds BloatLimit, then shrink mutation is performed on the child
|
|
bsSizeFairCrossover
|
On crossover, the size of a subtree to be removed is calculated and used to constrain the size of the new subtree from the other parent
|
|
bsSizeLimit
|
If child tree size (number of nodes in tree) exceeds BloatLimit, then parent is added in its stead
|
|
bsSizeParsimonyPressure
|
On selection of a parent, use the weighted fitness for size of trees to select smaller programs (also requires FitnessMethod to be fmWeightedMinimize or fmWeightedMaximize)
|
|
bsTarpeianDepth
|
Controls bloat by possibly reducing the fitness of trees that exceed the average tree depth, e.g., if Node Depth is greater than the Average Program Depth and Random value is less than TarpeianProbability then Fitness is Unfit else Calculate Fitness.
Note that Tarpeian method discards children before evaluating fitness, possibly significantly reducing computational time
|
|
bsTarpeianSize
|
Controls bloat by possibly reducing the fitness of trees that exceed the average tree size, e.g., if Node Size is greater than Average Program Size and Random value is less than TarpeianProbability then Fitness is Unfit else Calculate Fitness.
Note that Tarpeian method discards children before evaluating fitness, possibly significantly reducing computational time
|
|
bsUnfitDepth
|
If child tree depth exceeds BloatLimit, then child is added to next generation but fitness is 0
|
|
bsUnfitSize
|
If child tree size (number of nodes in tree) exceeds BloatLimit, then child is added to next generation but fitness is 0
|