Classes | |
class | Eigen::NNLS< MatrixType_ > |
Implementation of the Non-Negative Least Squares (NNLS) algorithm. More... | |
This module provides a single class Eigen::NNLS
implementing the NNLS algorithm. The algorithm is described in "SOLVING LEAST SQUARES PROBLEMS", by Charles L. Lawson and Richard J. Hanson, Prentice-Hall, 1974 and solves optimization problems of the form
\[ \min \left\Vert Ax-b\right\Vert_2^2\quad s.t.\, x\ge 0\,.\]
The algorithm solves the constrained least-squares problem above by iteratively improving an estimate of which constraints are active (elements of \(x\) equal to zero) and which constraints are inactive (elements of \(x\) greater than zero). Each iteration, an unconstrained linear least-squares problem solves for the components of \(x\) in the (estimated) inactive set and the sets are updated. The unconstrained problem minimizes \(\left\Vert A^Nx^N-b\right\Vert_2^2\), where \(A^N\) is a matrix formed by selecting all columns of A which are in the inactive set \(N\).