
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 antibloat 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
