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:
+2
-2
@@ -24,8 +24,8 @@ pub use crate::operators::{
|
||||
pub use crate::algorithms::{
|
||||
AntColonyTsp, AntColonyTspConfig, CmaEs, CmaEsConfig, DifferentialEvolution,
|
||||
DifferentialEvolutionConfig,
|
||||
GeneticAlgorithm, GeneticAlgorithmConfig, HillClimber, HillClimberConfig, Ibea,
|
||||
IbeaConfig, Moead, MoeadConfig, Mopso, MopsoConfig, Nsga2, Nsga2Config, Nsga3, Nsga3Config, Paes, PaesConfig, ParticleSwarm,
|
||||
GeneticAlgorithm, GeneticAlgorithmConfig, HillClimber, HillClimberConfig, Hype,
|
||||
HypeConfig, Ibea, IbeaConfig, Moead, MoeadConfig, Mopso, MopsoConfig, Nsga2, Nsga2Config, Nsga3, Nsga3Config, Paes, PaesConfig, ParticleSwarm,
|
||||
ParticleSwarmConfig, RandomSearch, RandomSearchConfig, SimulatedAnnealing,
|
||||
SimulatedAnnealingConfig, SmsEmoa, SmsEmoaConfig, Spea2, Spea2Config, TabuSearch,
|
||||
TabuSearchConfig, Umda,
|
||||
|
||||
Reference in New Issue
Block a user