Expand description
Bounded Nelder-Mead simplex minimizer.
Derivative-free polish optimizer used after a gradient-based stage to
escape stall points. Benchmarking of backgrounded counts-path fits on
the synthetic counts benchmark established the need: a single L-BFGS
start frequently stalls at the initial guess (1/20 self-flagged
convergence on the hardest backgrounded regime tested), while a
Nelder-Mead polish from that stall point resolves the failure cleanly
(10/20 convergence, density bias from −5.94% to +0.013%, D/DOF from
905 to 1.001). On real VENUS counts D saturates at 10⁴–10⁵ from
un-modelled upstream physics and polish cannot self-terminate, which
is why it is disabled by default — see
JointPoissonFitConfig::enable_polish in joint_poisson.
§Algorithm
Standard Nelder-Mead simplex with reflection / expansion / contraction / shrink (Nelder & Mead 1965), using the classical coefficients (α=1, γ=2, ρ=0.5, σ=0.5).
Box bounds are enforced via reflection at the wall: when a proposed
vertex would leave the feasible box, each coordinate is reflected back
inside (x_i ← 2·bound − x_i once, then clamped). This preserves the
simplex volume in bulk while keeping all vertices feasible.
§Convergence
Terminates when both
- the maximum coordinate distance from any simplex vertex to the current
best vertex (
simplex[0]) is belowxatol, AND - the range of objective values across the simplex is below
fatol.
This matches scipy’s optimize.minimize(method='Nelder-Mead') simplex-
spread check (max(|sim[i] - sim[0]|) over coordinates) behaviour.
Structs§
- Nelder
Mead Config - Nelder-Mead configuration.
- Nelder
Mead Result - Nelder-Mead result.
Functions§
- nelder_
mead_ minimize - Minimize a scalar objective with optional per-coordinate box bounds.