feat(algorithms): add Grea (Grid-based Evolutionary Algorithm)

Yang, Li, Liu & Zheng 2013 GrEA: many-objective MOEA whose secondary
ranking is a grid-based diversity score instead of crowding distance
or reference vectors.

Each generation:
- NSGA-II-like loop with offspring + non_dominated_sort
- For the splitting front:
  - Translate by ideal/nadir; partition objective space into a
    (`grid_divisions` per axis) grid
  - For every member compute three grid scores:
    - GR (grid rank)         = sum of grid coordinates (closer to ideal = lower)
    - GCD (grid crowding distance) = #neighbors within 1 grid unit (in any axis)
    - GCPD (grid coordinate point distance) = max coord - min coord
  - Sort F_l ascending by GR, then by GCD, then by GCPD
  - Take the top `n - already_selected` survivors

GrEA's grid-based niching is a different lens from NSGA-III's reference
points and RVEA's reference vectors — particularly effective on
non-convex fronts where reference-vector approaches struggle.
This commit is contained in:
2026-05-05 09:51:12 -06:00
parent 6bfa52c149
commit a95380376e
3 changed files with 271 additions and 1 deletions
+2
View File
@@ -6,6 +6,7 @@ pub mod cma_es;
pub mod differential_evolution;
pub mod epsilon_moea;
pub mod genetic_algorithm;
pub mod grea;
pub mod hill_climber;
pub mod hype;
pub mod ibea;
@@ -32,6 +33,7 @@ pub use cma_es::*;
pub use differential_evolution::*;
pub use epsilon_moea::*;
pub use genetic_algorithm::*;
pub use grea::*;
pub use hill_climber::*;
pub use hype::*;
pub use ibea::*;