Abstract base classesยค
Optimistix is fully extendable. It provides a number of abstract base classes ("ABCs") which define the interfaces for custom solvers, custom line searches, etc.
Solvers
- Custom minimisers may be created by subclassing
optimistix.AbstractMinimiser
.- If your minimiser is derived from Optax, then you can simply use
optimistix.OptaxMinimiser
.
- If your minimiser is derived from Optax, then you can simply use
- Custom least squares solvers may be created by subclassing
optimistix.AbstractLeastSquaresSolver
. - Custom root finders may be created by subclassing
optimistix.AbstractRootFinder
. - Custom fixed-point solvers may be created by subclassing
optimistix.AbstractFixedPointSolver
.
Info
For creating least squares solvers like optimistix.GaussNewton
or optimistix.LevenbergMarquardt
, then optimistix.AbstractGaussNewton
may be useful.
For creating gradient-based minimisers like optimistix.BFGS
and optimistix.GradientDescent
, then optimistix.AbstractGradientDescent
may be useful.
In each case, they offer a general way to combine a search and a descent.
Line searches, trust regions, learning rates etc.
These may be defined by subclassing optimistix.AbstractSearch
. See also the introduction to searches and descent
Descent directions (steepest descent, Newton steps, Levenberg--Marquardt damped steps etc.)
These may be defined by subclassing optimistix.AbstractDescent
. See also the introduction to searches and descent
Adjoints
These denote custom autodifferentiation strategies. These may be defined by subclassing optimistix.AbstractAdjoint
.
Norms
Any function PyTree -> non-negative real scalar
may be used as a norm. See also the norms page.
Nonlinear CG variants
Any function (Y, Y, Y) -> scalar
may be used to define a variant of nonlinear CG. See optimistix.polak_ribiere
as an example.