feat(algorithms): add HypE (Hypervolume Estimation)
Bader & Zitzler 2011: HypE estimates hypervolume contributions via Monte Carlo sampling instead of computing them exactly. The point of the trick is that exact hypervolume becomes prohibitively expensive beyond ~5 objectives, while MC sampling stays cheap and accurate enough at any dimension. Each generation: - Generate offspring via parent selection + variation + evaluation - Combine, run non_dominated_sort, fill front-by-front - For the splitting front, estimate each member's HV contribution by drawing `n_samples` uniform points in the box [ideal, reference] and counting how many points are dominated by *exactly* one front member — that count, divided by n_samples and multiplied by the box volume, is the member's expected unique HV contribution. - Drop members one at a time from the splitting front by smallest estimated contribution. Public API matches the rest of the MO algorithms (Config + Optimizer). The reference point is supplied in the config so the user controls the integration domain. Tests cover non-empty front, deterministic reruns, and panic on dim-mismatched reference.
This commit is contained in:
@@ -5,6 +5,7 @@ pub mod cma_es;
|
||||
pub mod differential_evolution;
|
||||
pub mod genetic_algorithm;
|
||||
pub mod hill_climber;
|
||||
pub mod hype;
|
||||
pub mod ibea;
|
||||
pub mod moead;
|
||||
pub mod mopso;
|
||||
@@ -25,6 +26,7 @@ pub use cma_es::*;
|
||||
pub use differential_evolution::*;
|
||||
pub use genetic_algorithm::*;
|
||||
pub use hill_climber::*;
|
||||
pub use hype::*;
|
||||
pub use ibea::*;
|
||||
pub use moead::*;
|
||||
pub use mopso::*;
|
||||
|
||||
Reference in New Issue
Block a user