feat(algorithms): add OnePlusOneEs (1+1)-ES with Rechenberg's one-fifth rule
Rechenberg 1973's elemental evolution strategy: one parent, one child
each generation, accept the child if it is no worse, and adapt the
mutation step size by tracking the success rate. If more than 1/5 of
recent moves were accepted the search is too cautious — multiply σ by
`step_increase` (typical 1.22). Below 1/5 — divide by the same factor.
At 1/5 — leave it alone. The success window has length `adaptation_period`.
Single-objective only. Vec<f64> only. Generic Gaussian step bounded by
the embedded `RealBounds`.
Why ship it: it's the smallest possible self-adapting evolution strategy
and a useful pedagogical / baseline endpoint. Pairs well as the budget
floor ("give me anything cheaper than CMA-ES").
This commit is contained in:
@@ -15,6 +15,7 @@ pub mod moead;
|
||||
pub mod mopso;
|
||||
pub mod nsga2;
|
||||
pub mod nsga3;
|
||||
pub mod one_plus_one_es;
|
||||
pub mod paes;
|
||||
pub(crate) mod parallel_eval;
|
||||
pub mod pesa2;
|
||||
@@ -43,6 +44,7 @@ pub use moead::*;
|
||||
pub use mopso::*;
|
||||
pub use nsga2::*;
|
||||
pub use nsga3::*;
|
||||
pub use one_plus_one_es::*;
|
||||
pub use paes::*;
|
||||
pub use particle_swarm::*;
|
||||
pub use pesa2::*;
|
||||
|
||||
Reference in New Issue
Block a user