The recommendation humpday.minimize() gives you changed substantively since 0.20.0.
What changed
- HillClimbing dropped out of the recommendation matrix entirely. It had been winning cheap-objective cells in 0.20.0 as a sampling-bias artefact (the suite skewed toward separable benchmarks where HC's componentwise restart shines). Tier-0 is now just RandomSearch + GridSearch.
- Powell promoted at n=4..6; PRIMA family wins n=7..10 (UOBYQA at n=8, NEWUOA at n=10, BOBYQA at n=20). 0.20.0 was picking HillClimbing / Powell almost uniformly at low dim.
- CMA-ES now competitive on rotated benchmarks — rank ~1.3 on rotated Ackley vs 10.0 for CoordinateDescent — thanks to the IPOP restart + rotation-invariant test set added in #226.
- Dense low-dim grid (n=2,3,4,5,6,7,8,10,20,50,100) so the recommender snaps to the right cell for any low-dim user instead of falling back to n=2 or n=5.
- Recommender now scores by Borda mean-rank across the 12-objective suite rather than median_best, rewarding reliability over occasional brilliance.
Recommendation matrix at n_trials=200
| n_dim | cheap (1 µs) | medium (1 ms) | expensive (1 s) |
|---|---|---|---|
| 2 | GridSearch | PRIMA_NEWUOA | PRIMA_NEWUOA |
| 3 | GridSearch | PRIMA_BOBYQA | PRIMA_BOBYQA |
| 4 | RandomSearch | Powell | Powell |
| 5 | RandomSearch | Powell | Powell |
| 6 | RandomSearch | Powell | Powell |
| 7 | RandomSearch | PRIMA_NEWUOA | PRIMA_NEWUOA |
| 8 | RandomSearch | PRIMA_UOBYQA | PRIMA_UOBYQA |
| 10 | RandomSearch | PRIMA_NEWUOA | PRIMA_NEWUOA |
| 20 | RandomSearch | PRIMA_BOBYQA | PRIMA_BOBYQA |
| 50 | RandomSearch | CoordinateDescent | CoordinateDescent |
| 100 | RandomSearch | SimulatedAnnealing | SimulatedAnnealing |
Compatibility
No API breaks. OptimizeResult field additions are additive; minimize() accepts options={'auto_timing': False} to opt out of the new timing behavior.
Install
pip install --upgrade humpday