feat(algorithms): add Rvea (Reference Vector-guided EA)

Cheng, Jin, Olhofer & Sendhoff 2016 RVEA: many-objective MOEA built
around a fixed set of Das–Dennis reference vectors. Each generation:
- Generate offspring via random parent selection + variation +
  evaluation
- Combine population + offspring; translate by ideal point z*
- Associate every member with the reference vector whose angle to
  the translated objective vector is smallest
- For each occupied vector, keep the member with the smallest
  Angle-Penalized Distance (APD) score; the rest are dropped
- APD = (1 + α(t)·θ_max·γ) · |f − z*| where γ is the angle to the
  associated reference and α(t) = (t / t_max)^2 anneals the angle
  penalty over the run

This produces well-spread fronts at high objective counts where
Pareto-rank methods (NSGA-II, SPEA2) lose discrimination.
This commit is contained in:
2026-05-05 09:51:11 -06:00
parent d8d580e414
commit 283d7429bb
3 changed files with 332 additions and 1 deletions
+2
View File
@@ -15,6 +15,7 @@ pub mod paes;
pub(crate) mod parallel_eval;
pub mod particle_swarm;
pub mod random_search;
pub mod rvea;
pub mod simulated_annealing;
pub mod sms_emoa;
pub mod spea2;
@@ -35,6 +36,7 @@ pub use nsga3::*;
pub use paes::*;
pub use particle_swarm::*;
pub use random_search::*;
pub use rvea::*;
pub use simulated_annealing::*;
pub use sms_emoa::*;
pub use spea2::*;