@@ -10,29 +10,32 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1010* (naming only) Refactor ` MutationType::ScaledSteps(Vec<T>) ` to
1111 ` MutationType::StepScaled(Vec<T>) ` for naming consistency
1212* (naming only) Refactor ` MutationType::RelativeRange(T) ` to
13- ` MutationType::Range(T) ` as ` MutationType::Step(T) ` is also relative.
13+ ` MutationType::Range(T) ` , as ` MutationType::Step(T) ` is also relative.
1414* Refactor ` MutationType::Transition(usize, usize, T) ` to ` MutationType::RangeScaled(Vec<T>) ` :
1515 * Drop the generation based transition configuration params (as it couldn't handle staleness)
16- * Replace params with bandwidth per scale (just like step-size per scale StepScaled)
16+ * Replace params with bandwidth per scale (just like step-size per scale in ` MutationType:: StepScaled` )
1717 * Use bandwidths equal to the full ` allele_range ` to achieve effective ` MutationType::Random ` mutation
1818 * Now ` max_generations ` and ` max_stale_generations ` handle scale transitions in the same manner everywhere
1919 * It is a good idea to use a prolonged period of full Random sampling (exploration phase, so
2020 several 100% bandwidth scales), which then transitions quite fast to the smaller bandwidths
2121 (exploitation phase, a few smaller bandwidth scales).
22- * Add ` MutationType::Step(T) ` for completeness
2322
24- ### Add
23+ ### Added
24+ * Add ` MutationType::Step(T) ` for completeness
2525* Add ` max_generations ` as scale trigger as well in ` Evolve ` and ` HillClimb ` . Now
2626 ` max_generations ` and ` max_stale_generations ` behave the same:
27- * Ending condition for current scale, go to next scale and restart counting generations
27+ * Ending condition for current scale, go to next scale and restart counting
28+ generations
2829 * Final ending condition if no scales left (or no scaling at all)
30+ * Both ` max_generations ` and ` max_stale_generations ` can be set at the same
31+ time, the first to reach the condition triggers and reset both
2932* Support unsigned integers for ` MutationType::Range ` and ` MutationType::Step ` as well (and scaled versions)
3033* Allow for zero bandwidth/step in ` MutationType::Range ` and
31- ` MutationType::Step ` (and scaled versions), which lets the mutation die out
34+ ` MutationType::Step ` (and scaled versions), which lets the mutation die out (more for robustness than usefulness)
3235* Add ` examples/visualize_evolve_mutation_types ` and ` examples/visualize_permutate_mutation_types ` , which
3336 generate visualizations showing exploration patterns of different mutation strategies
3437
35- ### Remove
38+ ### Removed
3639* Remove ` increment_generation() ` and ` reset_generation() ` from ` Genotype ` and remove hook
3740 in Strategies, as all scaled MutationTypes now work in the same manner
3841* Remove unused ` Vec<Chromosome<T>> ` into ` Population<T> ` implementation
0 commit comments