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:
+1
-1
@@ -23,7 +23,7 @@ pub use crate::operators::{
|
||||
|
||||
pub use crate::algorithms::{
|
||||
AntColonyTsp, AntColonyTspConfig, CmaEs, CmaEsConfig, DifferentialEvolution,
|
||||
DifferentialEvolutionConfig,
|
||||
DifferentialEvolutionConfig, EpsilonMoea, EpsilonMoeaConfig,
|
||||
GeneticAlgorithm, GeneticAlgorithmConfig, HillClimber, HillClimberConfig, Hype,
|
||||
HypeConfig, Ibea, IbeaConfig, Moead, MoeadConfig, Mopso, MopsoConfig, Nsga2,
|
||||
Nsga2Config, Nsga3, Nsga3Config, Paes, PaesConfig, ParticleSwarm, PesaII, PesaIIConfig,
|
||||
|
||||
Reference in New Issue
Block a user