Files
aare/python/tests
Erik FröjdhandClaude Fable 5.1 86a773f6db Add a built-in Levenberg-Marquardt minimizer selectable like Migrad and Fumili
Bring the dependency-free Levenberg-Marquardt solver from dev/custom-fit in
as Minimizer::LevenbergMarquardt next to Minuit2's Migrad (default) and
Fumili, selected through the FitModel constructor, SetMinimizer() or the
Python `minimizer` argument and property.

- FitModel becomes plain data (limits, fixed flags, start values, minimizer
  settings) with index and limit validation. Minuit2 user parameters are
  built per pixel in src/FitMinuit2.cpp, the only translation unit that
  includes Minuit2 headers.
- fit_3d fits through a per-thread PixelFitter so the LM path allocates
  nothing per pixel, and no minimizer allocates a per-pixel result array.
- Fixed parameters and parameters ending on a limit report an error of 0
  with every minimizer; user start values are applied before the validity
  check and clamped into the limits.
- Minuit2's Fumili cannot converge once a two-sided limit is active, so
  such pixels are refitted with Migrad. The Minuit2 minimizers keep a wide
  two-sided range for one-sided limits because Minuit2's one-sided
  transform converges markedly slower.
- The [fit] tests run every scenario through all three minimizers and
  check that they agree; the benchmark gains LM and data-cube cases.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-25 10:58:16 +02:00
..
2025-11-20 09:01:28 +01:00
2025-11-20 09:01:28 +01:00
2026-09-24 09:09:37 +02:00
2026-09-24 09:09:37 +02:00
2025-11-20 09:01:28 +01:00
2026-09-24 09:09:37 +02:00
2026-09-24 09:09:37 +02:00
2025-11-20 09:01:28 +01:00
2026-09-24 09:09:37 +02:00
2026-09-24 09:09:37 +02:00