feat(algorithms): add EpsilonMoea (ε-dominance MOEA, Deb et al. 2003)
Replaces strict Pareto dominance with ε-dominance: A ε-dominates B when `floor(A_i / ε) ≤ floor(B_i / ε)` for every objective and strictly less in at least one (minimization frame). The result is a regular discretization of objective space — at most one archive member per ε-box — so the front spreads out automatically and the archive size self-limits without truncation tricks. Steady-state design: each generation samples one parent from the main population and one from the ε-archive, applies variation, evaluates the child, and offers it to both archives. Every member's ε-coordinates and the box-tie rules are precomputed each insertion. Tests: produces a front on Schaffer N.1 with reasonable spread, deterministic reruns, panic on `epsilon[i] <= 0.0` and on `epsilon.len() != objectives.len()`.
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
pub mod ant_colony_tsp;
|
||||
pub mod cma_es;
|
||||
pub mod differential_evolution;
|
||||
pub mod epsilon_moea;
|
||||
pub mod genetic_algorithm;
|
||||
pub mod hill_climber;
|
||||
pub mod hype;
|
||||
@@ -26,6 +27,7 @@ pub mod umda;
|
||||
pub use ant_colony_tsp::*;
|
||||
pub use cma_es::*;
|
||||
pub use differential_evolution::*;
|
||||
pub use epsilon_moea::*;
|
||||
pub use genetic_algorithm::*;
|
||||
pub use hill_climber::*;
|
||||
pub use hype::*;
|
||||
|
||||
Reference in New Issue
Block a user