v0.20.0 — Smarter minimize() milestone
A milestone release that takes humpday from "many faithful ports" to "picks the right one for you."
Headline changes
-
Smarter
humpday.minimize()— times the objective at entry, classifies its cost into an overhead tier, and consults a benchmarks-driven recommendation grid plus a dimensional-eligibility filter to pick the algorithm.OptimizeResultnow carriesmethod,eval_time_measured,tier, and a.tuple()helper so callers can introspect the auto-pick. New modulehumpday.eligibility. -
Restart fixes for the three optimizers literature treats as multi-start by default: IPOP-CMA-ES (Auger & Hansen 2005), Kelley-1999 simplex-collapse restart for NelderMead, SPSO-2011 stagnation reseed for ParticleSwarm. On the Ackley benchmark NelderMead's reference-alignment ratio drops from 0.72 to 6e-03 (124× better than scipy NM at the same budget).
-
New benchmark infrastructure:
benchmarks/build_recommendation_grid.py(parallel + incremental, BLAS-pinned to 1 thread per worker) and the 4443-runbenchmarks/recommendation_grid.jsonproduced from it. -
Comprehensive doc rewrite: every one of the 21 algorithm pages was rewritten (#214–#217), then each gained an "Auto-selection metadata" card showing its tier, dimensional cap, and min-trials condition (#223). New top-level pages:
docs/recommendations.html,docs/sota-status.html. -
Prior-campaign algorithm improvements that didn't get a release of their own: PRIMA UOBYQA Steihaug-Toint CG + farthest-from-kopt + Powell geometry step (rosenbrock to machine precision), proper Byrd-Lu-Nocedal-Zhu L-BFGS-B port, BayesianOpt / CMA-ES / DE / SA / PSO / Firefly L-BFGS-B polish stages, Firefly α-damping, Rechenberg / CoordinateDescent / PatternSearch multi-start, GridSearch baseline.
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