feat(algorithms): add PesaII (Pareto Envelope-based Selection Algorithm II)
Corne, Jerram, Knowles & Oates 2001: divides objective space into a hyperbox grid and uses per-box population counts to drive selection toward sparsely-populated regions. Each generation: - Maintain an external archive of non-dominated members - Build a hyperbox grid (`grid_divisions` per axis on the archive's current axis ranges); count members per box - Selection picks two parents by region-based tournament: choose two random non-empty boxes and take a uniform-random member from the one with fewer occupants - Variation produces an offspring; insert into archive, dropping dominated members and (if archive overflows) the most-crowded occupant of the most-occupied box Tests cover non-empty front on Schaffer N.1, deterministic reruns, and panic on `archive_size == 0`.
This commit is contained in:
@@ -8,7 +8,7 @@ use crate::core::objective::ObjectiveSpace;
|
||||
use crate::core::population::Population;
|
||||
use crate::core::problem::Problem;
|
||||
use crate::core::result::OptimizationResult;
|
||||
use crate::core::rng::{Rng, rng_from_seed};
|
||||
use crate::core::rng::rng_from_seed;
|
||||
use crate::metrics::hypervolume::hypervolume_nd_from_evaluations;
|
||||
use crate::pareto::front::{best_candidate, pareto_front};
|
||||
use crate::pareto::sort::non_dominated_sort;
|
||||
@@ -264,7 +264,3 @@ mod tests {
|
||||
}
|
||||
}
|
||||
|
||||
// Allow the unused-import warning from the `rng` import if certain feature
|
||||
// combinations don't use it.
|
||||
#[allow(dead_code)]
|
||||
fn _force_rng_use(_rng: &mut Rng) {}
|
||||
|
||||
Reference in New Issue
Block a user