Skip to content

v0.20.0 — Smarter minimize() milestone

Choose a tag to compare

@microprediction microprediction released this 01 Jun 21:14
· 48 commits to main since this release
713bcda

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. OptimizeResult now carries method, eval_time_measured, tier, and a .tuple() helper so callers can introspect the auto-pick. New module humpday.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-run benchmarks/recommendation_grid.json produced 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