feat(algorithms): add NelderMead simplex direct-search optimizer

Nelder & Mead 1965: gradient-free local optimizer that maintains a
simplex of n+1 points in n-D and at each iteration replaces the worst
vertex by one of {reflect, expand, outside-contract, inside-contract,
shrink} relative to the centroid of the rest. The five standard
coefficients (reflection α=1, expansion γ=2, contraction ρ=0.5,
shrinkage σ=0.5) are exposed in the config but default to canonical
values so users can leave them alone.

Single-objective only, Vec<f64> only, bounds enforced by clamping
each new vertex. Termination is purely iteration-count for v0.2;
"vertices have collapsed" stopping is a future enhancement.

Filling a real gap: heuropt had population-based local search
(SimulatedAnnealing, HillClimber) but no classical direct-search
algorithm. Excellent for low-dim smooth-ish problems where a
population is overkill.
This commit is contained in:
2026-05-05 09:51:12 -06:00
parent 7d8a29df2b
commit b78e5ed2fc
3 changed files with 360 additions and 1 deletions
+2
View File
@@ -13,6 +13,7 @@ pub mod ibea;
pub mod knea;
pub mod moead;
pub mod mopso;
pub mod nelder_mead;
pub mod nsga2;
pub mod nsga3;
pub mod one_plus_one_es;
@@ -42,6 +43,7 @@ pub use ibea::*;
pub use knea::*;
pub use moead::*;
pub use mopso::*;
pub use nelder_mead::*;
pub use nsga2::*;
pub use nsga3::*;
pub use one_plus_one_es::*;