You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
argmin is a numerical optimization library written entirely in Rust.
argmins goal is to offer a wide range of optimization algorithms with a consistent interface.
It is type-agnostic by design, meaning that any type and/or math backend, such as nalgebra or ndarray can be used -- even your own.
Observers allow one to track the progress of iterations, either by using one of the provided ones for logging to screen or disk or by implementing your own.
An optional checkpointing mechanism helps to mitigate the negative effects of crashes in unstable computing environments.
Due to Rusts powerful generics and traits, most features can be exchanged by your own tailored implementations.
argmin is designed to simplify the implementation of optimization algorithms and as such can also be used as a toolbox for the development of new algorithms. One can focus on the algorithm itself, while the handling of termination, parameter vectors, populations, gradients, Jacobians and Hessians is taken care of by the library.
Algorithms
Line searches
Backtracking line search
More-Thuente line search
Hager-Zhang line search
Trust region method
Cauchy point method
Dogleg method
Steihaug method
Steepest descent
Conjugate gradient method
Nonlinear conjugate gradient method
Newton methods
Newton’s method
Newton-CG
Quasi-Newton methods
BFGS
L-BFGS
DFP
SR1
SR1-TrustRegion
Gauss-Newton method
Gauss-Newton method with linesearch
Golden-section search
Landweber iteration
Brent’s method
Nelder-Mead method
Simulated Annealing
Particle Swarm Optimization
External solvers compatible with argmin
External solvers which implement the Solver trait are compatible with argmins Executor,
and as such can leverage features like checkpointing and observers.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.