Mathematical optimization in pure Rust.

Docs  Book  Code

License: MIT/Apache-2.0

Pure Rust 🦀

We aim at providing a wide range of solvers implemented in pure Rust.

Consistent interface 🔌

Easily plug your optimization problem in different solvers thanks to a consistent interface.

Type agnostic 🔧

Represent your variables, gradients, Jacobians and Hessians using your own types.

Various math backends 🧮

Use Vecs, ndarray, or nalgebra for behind-the-scenes math. Or implement your own backend.

Observers 👀

Observe the progress of your optimization by logging to screen or file or implement your own observer.

Checkpointing 🚩

Mitigate the negative effects of crashes in unstable computing environments by saving regular checkpoints.

Extensible 🪡

Most features can be exchanged for user supplied implementations thanks to Rusts powerful generics and traits.

Development framework 🏗

Use argmins tools and ecosystem to implement your own solver -- with all the features mentioned above.