feat(examples): wire (1+1) ES, Nelder-Mead, IPOP-CMA-ES, BO into compare harness

Adds runners for the four expensive-eval / gradient-free additions to
the appropriate single-objective sections of `examples/compare.rs`:

- Rastrigin (multimodal): now also shows IPOP-CMA-ES alongside vanilla
  CMA-ES so the restart benefit is directly visible.
- Rosenbrock (smooth valley): adds Nelder-Mead (well-suited) and (1+1)
  ES (cheap baseline).
- Ackley + Rosenbrock: BayesianOpt run with a deliberately TINY budget
  (60 evaluations vs 30k for the population-based methods) so the
  sample-efficiency claim is visible — BO with 60 evals vs DE/CMA-ES
  with 30k.

The compare harness now sides-by-sides 23 algorithms total across the
seven benchmark problems.
This commit is contained in:
2026-05-05 09:51:12 -06:00
parent a70500406c
commit 8a34fd94b8
2 changed files with 152 additions and 0 deletions
+29
View File
@@ -7,6 +7,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
### Added
#### New algorithms (the "expensive-eval and gradient-free" cohort)
- `OnePlusOneEs` — Rechenberg 1973 (1+1)-ES with the one-fifth success
rule. Smallest possible self-adapting evolution strategy.
- `NelderMead` — Nelder & Mead 1965 simplex direct-search method. Fills
a real gap: heuropt's first classical gradient-free local optimizer.
- `IpopCmaEs` — Auger & Hansen 2005 increasing-population CMA-ES with
restart. Specifically fixes vanilla CMA-ES's known weakness on
multimodal problems (e.g. Rastrigin: 2.35 → 0.13).
- `BayesianOpt` — Gaussian-process-based Bayesian Optimization with
Expected Improvement acquisition. heuropt's first sample-efficient
algorithm: targets the 50500 evaluation regime where every other
algorithm is way over-budget.
#### Internal helpers
- `internal::cholesky` — Cholesky factorization + triangular solves
for symmetric positive-definite matrices, used by the GP posterior
in `BayesianOpt`. Hand-rolled to avoid pulling in nalgebra.
#### CmaEs API change (additive)
- `CmaEsConfig` gained an `initial_mean: Option<Vec<f64>>` field
(defaulting to `None`, which keeps the existing midpoint-of-bounds
behavior). `IpopCmaEs` uses it to inject restart diversity without
shrinking the search box.
## [0.2.0] — 2026-05-05
A substantial expansion of the algorithm catalog (21 new algorithms),