mlpack/ensmallen
A header-only C++ library for numerical optimization --
What it solves
Numerical optimization is essential for solving complex mathematical problems, but implementing robust and efficient algorithms from scratch is difficult. This library provides a collection of high-quality, ready-to-use optimizers to handle various non-linear optimization tasks.
How it works
As a header-only C++ library, it can be easily integrated into existing projects. It utilizes the Armadillo linear algebra library and can leverage OpenBLAS, Intel MKL, or LAPACK for performance. The library offers a wide variety of optimization techniques, including gradient-based methods, gradient-free methods, and constrained optimization.
Who it’s for
It is designed for developers and researchers working in C++ who need reliable numerical optimization tools for tasks like linear regression or other complex mathematical modeling.
Highlights
- Supports many types of optimizers, including L-BFGS, SGD, CMAES, and Simulated Annealing
- Includes gradient descent, gradient-free, and constrained optimization techniques
- Offers optional callbacks to allow for customization of the optimization process
- High-performance implementation using Armadillo and optimized BLAS/LAPACK libraries