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:
2026-05-05 09:51:12 -06:00
parent a95380376e
commit f0faf93b87
6 changed files with 278 additions and 16 deletions
+2
View File
@@ -10,6 +10,7 @@ pub mod grea;
pub mod hill_climber;
pub mod hype;
pub mod ibea;
pub mod knea;
pub mod moead;
pub mod mopso;
pub mod nsga2;
@@ -37,6 +38,7 @@ pub use grea::*;
pub use hill_climber::*;
pub use hype::*;
pub use ibea::*;
pub use knea::*;
pub use moead::*;
pub use mopso::*;
pub use nsga2::*;