@@ -54,33 +54,43 @@ pub enum HillClimbVariant {
5454/// there is a replace_on_equal_fitness consideration or some remaining randomness in the neighbouring population (see RangeGenotype
5555/// below)
5656/// * max_generations: when the ultimate goal in terms of fitness score is unknown and there is a effort constraint
57+ /// * With a scaled [crate::genotype::MutationType]:
58+ /// * Scale down after max_generations or max_stale_generations is reached and reset scale_generations and stale_generations to zero
59+ /// * Only trigger max_generations or max_stale_generations ending condition when already reached the smallest scale
5760///
5861/// There are optional mutation distance limitations for
5962/// [RangeGenotype](crate::genotype::RangeGenotype) and
6063/// [MultiRangeGenotype](crate::genotype::MultiRangeGenotype) neighbouring chromosomes, see [crate::genotype::MutationType].
61- /// * With MutationType::Scaled
62- /// * Mutation distance only on edges of current scale (e.g. -1 and +1 for -1..-1 scale)
64+ /// * With MutationType::StepScaled
65+ /// * Mutation distance one step up and down
6366/// * Pick random edge for [HillClimbVariant::Stochastic]
6467/// * Take both edges per gene for [HillClimbVariant::SteepestAscent]
65- /// * Scale down after max_stale_generations is reached and reset stale_generations to zero
66- /// * Only trigger max_stale_generations ending condition when already reached the smallest scale
6768/// * max_stale_generations could be set to 1, as there is no remaining randomness
68- /// * With MutationType::Relative
69- /// * Mutation distance taken uniformly from mutation range
69+ /// * With MutationType::StepScaled
70+ /// * Mutation distance one step up and down of current scale step
71+ /// * Pick random edge for [HillClimbVariant::Stochastic]
72+ /// * Take both edges per gene for [HillClimbVariant::SteepestAscent]
73+ /// * max_stale_generations could be set to 1, as there is no remaining randomness
74+ /// * With MutationType::Range
75+ /// * Mutation distance taken uniformly from bandwidth
7076/// * Sample single random value for [HillClimbVariant::Stochastic]
7177/// * Ensure to sample both a higer and lower value per gene for [HillClimbVariant::SteepestAscent]
72- /// * Standard max_stale_generations ending condition
78+ /// * max_stale_generations should be set somewhat higher than 1 as there is some remaining randomness
79+ /// * With MutationType::RangeScaled
80+ /// * Mutation distance taken uniformly from current scale bandwidth
81+ /// * Pick random edge for [HillClimbVariant::Stochastic]
82+ /// * Take both edges per gene for [HillClimbVariant::SteepestAscent]
7383/// * max_stale_generations should be set somewhat higher than 1 as there is some remaining randomness
7484/// * With MutationType::Random (not advised for hill climbing):
7585/// * Mutate uniformly over the complete allele range
7686/// * Sample single random value for [HillClimbVariant::Stochastic]
7787/// * Ensure to sample both a higer and lower value per gene for [HillClimbVariant::SteepestAscent]
78- /// * Standard max_stale_generations ending condition
7988/// * max_stale_generations should be set substantially higher than 1 as there is a lot remaining randomness
8089/// * With MutationType::Discrete
8190/// * All values are neighbours, just like ListGenotype
82- /// * With MutationType::Transition
83- /// * Behaves like Random and then slowly transitions to Relative
91+ /// * Sample single random value for [HillClimbVariant::Stochastic]
92+ /// * Traverse all values for [HillClimbVariant::SteepestAscent]
93+ /// * max_stale_generations could be set to 1, as there is no remaining randomness
8494///
8595/// There are reporting hooks in the loop receiving the [HillClimbState], which can by handled by an
8696/// [StrategyReporter] (e.g. [HillClimbReporterDuration], [HillClimbReporterSimple]). But you are encouraged to
0 commit comments