feat(pareto): add Das-Dennis reference-point generator

The standard structured weight/reference vector generator for
many-objective MOEAs (NSGA-III, MOEA/D). Generates (H+M-1 choose M-1)
points uniformly distributed on the unit simplex by enumerating all
integer compositions of `divisions` into `num_objectives` parts and
dividing each by `divisions`.

Lives in src/pareto/reference_points.rs. Re-exported from the prelude
as `das_dennis`.

Tests cover: M=2/H=4 → 5 points along the diagonal; M=3/H=12 → 91
points (the canonical NSGA-III 3-objective ref set); each generated
point has exactly M components summing to 1 within float tolerance.
This commit is contained in:
2026-05-04 19:54:37 -06:00
parent 18d778a00b
commit 2965955874
3 changed files with 103 additions and 2 deletions
+2 -2
View File
@@ -12,8 +12,8 @@ pub use crate::core::{
pub use crate::traits::{Initializer, Optimizer, Variation};
pub use crate::pareto::{
Dominance, ParetoArchive, best_candidate, crowding_distance, non_dominated_sort,
pareto_compare, pareto_front,
Dominance, ParetoArchive, best_candidate, crowding_distance, das_dennis,
non_dominated_sort, pareto_compare, pareto_front,
};
pub use crate::operators::{