Expand description

argmin is a numerical optimization library written entirely in Rust.

Its goal is to offer a wide range of optimization algorithms with a consistent interface. It is type-agnostic by the 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.

Highlights

Algorithms

License

Licensed under either of

at your option.

Contribution

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.

Modules

argmin optimization toolbox core

Solvers

Macros

Create an ArgminError with a provided message.

Create an ArgminError with a provided message wrapped in a closure for use in .ok_or_else(...) methods on Options.

Creates the bulk_X methods.

Release an T from an Option<T> if it is not None. If it is None, return an ArgminError with a provided message.

Convert a constant to a float of given precision

Creates an KV at compile time