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