A pure Rust numerical optimization library offering a wide range of algorithms with a consistent, type-agnostic interface.
argmin is a numerical optimization library written entirely in Rust that provides a wide range of optimization algorithms with a consistent interface. It solves mathematical optimization problems efficiently, supporting various algorithms from gradient-based methods to global optimizers, while being type-agnostic to work with different math backends.
Rust developers and researchers working on scientific computing, machine learning, engineering, or any domain requiring mathematical optimization, as well as those developing new optimization algorithms.
Developers choose argmin for its pure Rust implementation, performance, safety, and flexible design that allows integration with custom types and math backends, along with features like checkpointing and observers for robust optimization workflows.
Numerical optimization in pure Rust
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Works with any math backend like nalgebra or ndarray, allowing seamless integration into existing Rust projects without being tied to a specific linear algebra library, as emphasized in the README.
Includes a wide range from line searches to global optimizers like simulated annealing and particle swarm optimization, making it versatile for various optimization problems, as listed in the algorithms section.
Features like observers for tracking progress and checkpointing for crash recovery enhance robustness in unstable computing environments, directly mentioned in the README for long-running optimizations.
Built with Rust's generics and traits, it simplifies creating new optimization algorithms by handling parameter vectors and termination, serving as a toolbox for development, as stated in the philosophy.
The type-agnostic design and reliance on Rust's advanced traits and generics require a good understanding of both optimization concepts and Rust programming, making it less accessible for beginners or those new to numerical computing.
As a Rust-specific library, it has a smaller user base and fewer third-party extensions compared to established alternatives in Python or C++, which can affect community support and available resources for complex use cases.
While comprehensive, it may lack some advanced algorithms like interior-point methods or specialized constrained optimization solvers, and the README does not explicitly address support for constraints, relying on external solvers for such needs.