feat(algorithms): add KnEA (Knee point-driven EA)
Zhang, Tian & Jin 2015 KnEA: many-objective MOEA that biases survival selection toward 'knee points' on the Pareto front — points where a small improvement in one objective costs a large degradation in another. Each generation: - NSGA-II-like loop with offspring + non_dominated_sort - For the splitting front, identify knee points by perpendicular distance from the hyperplane connecting the front's extreme points. Members further from the hyperplane (= more 'kneeness') are preferred. - Survival keeps every knee-tagged member; if room remains, fill from remaining members by largest perpendicular distance. Knee points are intuitively the most attractive points on a Pareto front when no preference information is available. KnEA pushes the search toward them at the cost of less uniform front coverage.
This commit is contained in:
@@ -365,16 +365,17 @@ fn mantegna_sigma_u(alpha: f64) -> f64 {
|
||||
// Stirling-ish via the standard recursion + Lanczos coefficients.
|
||||
// For the typical α ∈ [1, 2] range we hit, the expressions Γ(1+α)
|
||||
// and Γ((1+α)/2) are well-behaved.
|
||||
// Lanczos coefficients for g = 7 (truncated to f64 precision).
|
||||
let g = 7.0;
|
||||
let p = [
|
||||
0.999_999_999_999_809_93,
|
||||
676.520_368_121_885_1,
|
||||
-1_259.139_216_722_4023,
|
||||
771.323_428_777_653_13,
|
||||
-176.615_029_162_140_59,
|
||||
0.999_999_999_999_81,
|
||||
676.520_368_121_885,
|
||||
-1_259.139_216_722_402,
|
||||
771.323_428_777_653,
|
||||
-176.615_029_162_141,
|
||||
12.507_343_278_686_905,
|
||||
-0.138_571_095_265_720_12,
|
||||
9.984_369_578_019_571_6e-6,
|
||||
-0.138_571_095_265_720_1,
|
||||
9.984_369_578_019_572e-6,
|
||||
1.505_632_735_149_311_6e-7,
|
||||
];
|
||||
if z < 0.5 {
|
||||
|
||||
Reference in New Issue
Block a user