Algorithms and utilities to optimize non-smooth functions, i.e., to solve
.. math::
\operatorname*{arg\,min}_{x} l(x) + p(x)
where :math:`l(x)` is a smooth function called *loss function* and :math:`p(x)` is a non-smooth function, called *penalty function*.
The argument :math:`x` ise the *coefficient*, and the result of any optimization is the *optimum*.
The library makes extensive use of templating to avoid dynamic polymorphism and improve runtime performance.
nsoptim is a C++ template library for non-smooth optimization, building upon the `armadillo <http://arma.sourceforge.net>`_ library for linear algebra.
Algorithms and utilities to optimize non-smooth functions, i.e., to solve
The library porvides algorithms and utilities to optimize non-smooth functions, i.e., to solve
.. math::
\operatorname*{arg\,min}_{x} l(x) + p(x)
\operatorname*{arg\,min}_{x} l(x) + \phi(x)
where :math:`l(x)` is a smooth function called *loss function* and :math:`p(x)` is a non-smooth function, called *penalty function*.
The argument :math:`x` ise the *coefficient*, and the result of any optimization is the *optimum*.
where :math:`l(x)` is a smooth function (called *loss function*) and :math:`\phi(x)` is a non-smooth function (called *penalty function*).
The argument :math:`x` is the *coefficient*, and the result of any optimization is the *optimum*.
************************************
Dependencies and System Requirements
************************************
The library requires at least a C++ compiler compatible with C++ 11 and an installation of the `armadillo <http://arma.sourceforge.net>`_ library for linear algebra.
The library makes extensive use of templating to avoid dynamic polymorphism and improve runtime performance.