feat(algorithms): add SmsEmoa (S-Metric Selection EMOA)
Beume, Naujoks & Emmerich 2007: a steady-state MOEA that uses hypervolume contribution as the secondary survival selection criterion. Each generation: - Generate ONE child via parent selection + variation + evaluation. - Combine population + child, run non_dominated_sort. - The discarded individual is the worst-front member with the smallest hypervolume contribution (computed via the new hypervolume_nd_from_evaluations helper). Selection-quality is excellent at moderate objective counts (2–4) at the cost of higher per-step compute (each survival selection requires N+1 hypervolume evaluations of size ≤ N each). Best paired with a tightly-bounded objective space — the user supplies a fixed reference point in the config. Tests: produces a non-empty front on Schaffer N.1, deterministic reruns, panic on `population_size == 0`, panic on `reference_point.len() != objectives.len()`.
This commit is contained in:
@@ -15,6 +15,7 @@ pub(crate) mod parallel_eval;
|
||||
pub mod particle_swarm;
|
||||
pub mod random_search;
|
||||
pub mod simulated_annealing;
|
||||
pub mod sms_emoa;
|
||||
pub mod spea2;
|
||||
pub mod tabu_search;
|
||||
pub mod umda;
|
||||
@@ -33,6 +34,7 @@ pub use paes::*;
|
||||
pub use particle_swarm::*;
|
||||
pub use random_search::*;
|
||||
pub use simulated_annealing::*;
|
||||
pub use sms_emoa::*;
|
||||
pub use spea2::*;
|
||||
pub use tabu_search::*;
|
||||
pub use umda::*;
|
||||
|
||||
Reference in New Issue
Block a user