Breaking changes:
-
Verbose printing has changed (across all supported solvers:
optimistix.{DogLeg, LevenbergMarquardt, IndirectLevenbergMarquardt, LBFGS, ...etc}).Instead of consuming a frozenset of elements to display, e.g.
LevenbergMarquardt(..., verbose=frozenset({"loss"})), then this should be set to eitherFalse(the default, print nothing),True(print everything), or to a callable to have full control over what will be printed.
Features:
optimistix.FixedPointIterationnow optionally supports damping. (Thanks @aidancrilly! #210)
Bugfixes:
- No longer triggering JAX initialisation on import. (#186)
optimistix.BestSoFarMinimiserandoptimistix.BestSoFarLeastSquaresshould now correctly check the final step when determining the best result. (#33, #211)optimistix.BFGSnow acceptsfloat32input even when JAX is infloat64mode. Previously this would crash. (#207, #212)- In the
solver.stepAPI, solvers were incorrectly reporting theauxoutput from a different step. I don't think this should affect results from the ultimate e.g.root_find(...).aux, but it will have affected those interacting with the per-step API directly. (#211) - If a
solver.terminatereturns a non-successful result then this will terminate the solve. Previously this would be ignored and only the boolean flag was respected.
Misc:
- If a nonfinite value occurs during the solve then the solve will terminate.
- Minimum Python version is now 3.11.
- For contributors: added lots of benchmarks.
New Contributors
Full Changelog: v0.0.11...v0.1.0