Skip to content

v0.21.0 — recommendation matrix overhaul

Latest

Choose a tag to compare

@microprediction microprediction released this 02 Jun 12:45
· 44 commits to main since this release
1d18f33

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