BCLS

Michael P. Friedlander
May 2007

MIT C, MATLAB

HomePage

BCLS is a software package for solving bound-constrained least-squares problems of the form

$$ \begin{array}{ll} \displaystyle\mathop{\hbox{minimize}}_x & \frac12\Vert Ax-b\Vert _2^2 + \mu\frac12\Vert x\Vert _2^2 + c^T x\ \\ \hbox{subject to} & \ell \le x \le u. \end{array} $$

The m-by-n matrix \(A\) can be any shape. The regularization and linear terms are optional. The vectors \(\ell\) and \(u\) define upper and lower bounds on the variables \(x\). Free and fixed variables are easily accomodated by setting corresponding components of \(\ell\) and \(u\) to be \(-\infty\) and \(+\infty\), or by setting them equal to each other.

BCLS implements a two-metric projected-descent method. At each iteration, a search direction is computed that is a combination of a Newton and a scaled steepest-descent step.

Some notable features of the implementation:

BCLS is written in ISO C and should compile on most systems (thanks for the Autoconf/Automake tools). No additional software is required, though there should be a significant speedup if it is compiled against a tuned BLAS library such as ATLAS. It has been tested using GCC on GNU/Linux, Mac OS X, and Windows XP (under MinGW). License BCLS is open-source software released under the lGPL license. Feel free to use it in any way you wish. If you find it at all useful, I’d like to hear from you, please send email.