This class implements LSQR. More...
#include <ClpLsqr.hpp>

Public Member Functions | |
Constructors and destructors  | |
| ClpLsqr () | |
| Default constructor.  More... | |
| ClpLsqr (ClpInterior *model) | |
| Constructor for use with Pdco model (note modified for pdco!!!!)  More... | |
| ClpLsqr (const ClpLsqr &) | |
| Copy constructor.  More... | |
| ClpLsqr & | operator= (const ClpLsqr &rhs) | 
| Assignment operator. This copies the data.  More... | |
| ~ClpLsqr () | |
| Destructor.  More... | |
Methods  | |
| bool | setParam (char *parmName, int parmValue) | 
| Set an int parameter.  More... | |
| void | do_lsqr (CoinDenseVector< double > &b, double damp, double atol, double btol, double conlim, int itnlim, bool show, Info info, CoinDenseVector< double > &x, int *istop, int *itn, Outfo *outfo, bool precon, CoinDenseVector< double > &Pr) | 
| Call the Lsqr algorithm.  More... | |
| void | matVecMult (int, CoinDenseVector< double > *, CoinDenseVector< double > *) | 
| Matrix-vector multiply - implemented by user.  More... | |
| void | matVecMult (int, CoinDenseVector< double > &, CoinDenseVector< double > &) | 
| Set an int parameter.  More... | |
| void | borrowDiag1 (double *array) | 
| diag1 - we just borrow as it is part of a CoinDenseVector<double>  More... | |
Public Attributes | |
Public member data  | |
| int | nrows_ | 
| Row dimension of matrix.  More... | |
| int | ncols_ | 
| Column dimension of matrix.  More... | |
| ClpInterior * | model_ | 
| Pointer to Model object for this instance.  More... | |
| double * | diag1_ | 
| Diagonal array 1.  More... | |
| double | diag2_ | 
| Constant diagonal 2.  More... | |
This class implements LSQR.
 LSQR solves  Ax = b  or  min ||b - Ax||_2  if damp = 0,
 or   min || (b)  -  (  A   )x ||   otherwise.
          || (0)     (damp I)  ||2
 A  is an m by n matrix defined by user provided routines
 matVecMult(mode, y, x)
 which performs the matrix-vector operations where y and x
 are references or pointers to CoinDenseVector objects.
 If mode = 1, matVecMult  must return  y = Ax   without altering x.
 If mode = 2, matVecMult  must return  y = A'x  without altering x.
-----------------------------------------------------------------------
 LSQR uses an iterative (conjugate-gradient-like) method.
 For further information, see
 1. C. C. Paige and M. A. Saunders (1982a).
    LSQR: An algorithm for sparse linear equations and sparse least squares,
    ACM TOMS 8(1), 43-71.
 2. C. C. Paige and M. A. Saunders (1982b).
    Algorithm 583.  LSQR: Sparse linear equations and least squares problems,
    ACM TOMS 8(2), 195-209.
 3. M. A. Saunders (1995).  Solution of sparse rectangular systems using
    LSQR and CRAIG, BIT 35, 588-604.
 Input parameters:
 atol, btol  are stopping tolerances.  If both are 1.0e-9 (say),
             the final residual norm should be accurate to about 9 digits.
             (The final x will usually have fewer correct digits,
             depending on cond(A) and the size of damp.)
 conlim      is also a stopping tolerance.  lsqr terminates if an estimate
             of cond(A) exceeds conlim.  For compatible systems Ax = b,
             conlim could be as large as 1.0e+12 (say).  For least-squares
             problems, conlim should be less than 1.0e+8.
             Maximum precision can be obtained by setting
             atol = btol = conlim = zero, but the number of iterations
             may then be excessive.
 itnlim      is an explicit limit on iterations (for safety).
 show = 1    gives an iteration log,
 show = 0    suppresses output.
 info        is a structure special to pdco.m, used to test if
             was small enough, and continuing if necessary with smaller atol.
 Output parameters:
 x           is the final solution.
 *istop       gives the reason for termination.
 *istop       = 1 means x is an approximate solution to Ax = b.
             = 2 means x approximately solves the least-squares problem.
 rnorm       = norm(r) if damp = 0, where r = b - Ax,
             = sqrt( norm(r)**2  +  damp**2 * norm(x)**2 ) otherwise.
 xnorm       = norm(x).
 var         estimates diag( inv(A'A) ).  Omitted in this special version.
 outfo       is a structure special to pdco.m, returning information
             about whether atol had to be reduced.
 Other potential output parameters:
 anorm, acond, arnorm, xnorm
 
Definition at line 76 of file ClpLsqr.hpp.
| ClpLsqr::ClpLsqr | ( | ) | 
Default constructor.
| ClpLsqr::ClpLsqr | ( | ClpInterior * | model | ) | 
Constructor for use with Pdco model (note modified for pdco!!!!)
| ClpLsqr::ClpLsqr | ( | const ClpLsqr & | ) | 
Copy constructor.
| ClpLsqr::~ClpLsqr | ( | ) | 
Destructor.
| bool ClpLsqr::setParam | ( | char * | parmName, | 
| int | parmValue | ||
| ) | 
Set an int parameter.
| void ClpLsqr::do_lsqr | ( | CoinDenseVector< double > & | b, | 
| double | damp, | ||
| double | atol, | ||
| double | btol, | ||
| double | conlim, | ||
| int | itnlim, | ||
| bool | show, | ||
| Info | info, | ||
| CoinDenseVector< double > & | x, | ||
| int * | istop, | ||
| int * | itn, | ||
| Outfo * | outfo, | ||
| bool | precon, | ||
| CoinDenseVector< double > & | Pr | ||
| ) | 
Call the Lsqr algorithm.
| void ClpLsqr::matVecMult | ( | int | , | 
| CoinDenseVector< double > * | , | ||
| CoinDenseVector< double > * | |||
| ) | 
Matrix-vector multiply - implemented by user.
| void ClpLsqr::matVecMult | ( | int | , | 
| CoinDenseVector< double > & | , | ||
| CoinDenseVector< double > & | |||
| ) | 
Set an int parameter.
      
  | 
  inline | 
diag1 - we just borrow as it is part of a CoinDenseVector<double>
Definition at line 125 of file ClpLsqr.hpp.
| int ClpLsqr::nrows_ | 
Row dimension of matrix.
Definition at line 86 of file ClpLsqr.hpp.
| int ClpLsqr::ncols_ | 
Column dimension of matrix.
Definition at line 88 of file ClpLsqr.hpp.
| ClpInterior* ClpLsqr::model_ | 
Pointer to Model object for this instance.
Definition at line 90 of file ClpLsqr.hpp.
| double* ClpLsqr::diag1_ | 
Diagonal array 1.
Definition at line 92 of file ClpLsqr.hpp.
| double ClpLsqr::diag2_ | 
Constant diagonal 2.
Definition at line 94 of file ClpLsqr.hpp.
 1.8.5