🎳 Bowling Optimizer

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.

Algorithm

Score0
Throws used0
Best so far—
Speed—
Angle—
Spin—
Release X—

Leaderboard (this session)

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.

AlgorithmBest pinsThrows usedBest params (speed / angle / spin / release)
— no runs yet —

What's happening

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.

🌱 Save the Planet

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.
View SKILL.md →