Watch a derivative-free optimizer learn how to bowl. Each throw is a point in a 4-D parameter space (speed, angle, spin, release position); the score is the number of pins knocked down. Pick an algorithm and let it search.
Each row records the best throw a given algorithm found in a single run. Run several algorithms to compare — there's no single best derivative-free method, but the ranking on this 4-D mostly-flat landscape with a sharp scoring peak is itself informative.
| Algorithm | Best pins | Throws used | Best params (speed / angle / spin / release) |
|---|---|---|---|
| — no runs yet — | |||
The throw simulator runs a simplified rigid-body model: a ball moves down the lane, curves under the influence of its spin, hits pins, transfers momentum to them, bounces off walls. Each throw takes a few hundred simulated frames; the optimiser sees only the final score (number of fallen pins).
The 4 parameters are mapped from the unit cube
[0, 1]4 — HumpDay's convention — to physical units:
The optimiser does not know what those parameters mean. It only sees a 4-D black-box function returning the number of fallen pins (negated, since HumpDay minimises). This is exactly the situation derivative-free methods are designed for: noisy, non-differentiable, no gradient available, evaluation moderately expensive.
If your hyper-parameter searches are heating the Earth, drop this in Cursor or Claude:
Read https://raw.githubusercontent.com/microprediction/humpday/main/SKILL.md and create a project skill from it.