About Ensmallen
This is an open source C++ library for flexible and efficient numerical optimization. It provides a large collection of optimizers that can be applied to effectively any numerical optimization task, including limited memory BFGS, stochastic gradient descent, covariance matrix adaptation evolution strategy and simulated annealing. A developer defines an objective function as a class and hands it to the chosen optimizer, which keeps the problem definition separate from the solver implementation and makes optimizers interchangeable.
It is aimed at researchers and C++ engineers writing machine learning and scientific computing code who need production speed rather than a scripting language prototype. Optional callbacks let developers hook into the optimization process to log progress, implement early stopping or adjust behavior between iterations. The requirements are a recent compiler with C++14 support, Armadillo version 10.8 or later, and a linear algebra backend such as OpenBLAS, Intel MKL or LAPACK. Source archives are distributed from the project site, with release 3.11.1 listed as current, and a Windows build is available through vcpkg. Worked examples, including a linear regression fitted with limited memory BFGS, ship with the documentation.
There is no commercial pricing. The library is released under the permissive three clause BSD license and is free to use, modify and redistribute, including inside commercial software. There is no paid edition, hosted service or support subscription published.
The project asks that academic work cite its 2021 paper in the Journal of Machine Learning Research, and it maintains separate pages for documentation, the developer list and bug reports.