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:
@@ -142,7 +142,7 @@ where
|
||||
|
||||
let final_pop: Vec<Candidate<Vec<f64>>> = decisions
|
||||
.into_iter()
|
||||
.zip(evals.into_iter())
|
||||
.zip(evals)
|
||||
.map(|(d, e)| Candidate::new(d, e))
|
||||
.collect();
|
||||
let best = best_candidate(&final_pop, &objectives);
|
||||
|
||||
Reference in New Issue
Block a user