OptimLib is a lightweight C++ library of numerical optimization methods for nonlinear functions.
A C++11 library of local and global optimization algorithms, as well as root finding techniques.
Derivative-free optimization using advanced, parallelized metaheuristics.
Constrained optimization routines to handle simple box constraints, as well as systems of nonlinear constraints.
Built on the Armadillo C++ linear algebra library for fast and efficient matrix-based computation.
OpenMP-accelerated accelerated algorithms for parallel computation.
Straightforward linking with parallelized BLAS libraries, such as OpenBLAS.
Available as a header-only library, or in shared library format.
Released under a permissive, non-GPL license.
The library is actively maintained, and is still being extended. A list of algorithms includes:
Broyden's Method (for root finding)
Newton's method, BFGS, and L-BFGS
Gradient descent: basic, momentum, Adam, AdaMax, Nadam, NadaMax, and more
Nonlinear Conjugate Gradient
Differential Evolution (DE)
Particle Swarm Optimization (PSO)