ClpLsqr Class Reference

This class implements LSQR. More...

#include <ClpLsqr.hpp>

Collaboration diagram for ClpLsqr:
Collaboration graph
[legend]

List of all members.

Public Member Functions

Constructors and destructors



 ClpLsqr ()
 Default constructor.
 ClpLsqr (ClpInterior *model)
 Constructor for use with Pdco model (note modified for pdco!!!!).
 ClpLsqr (const ClpLsqr &)
 Copy constructor.
ClpLsqroperator= (const ClpLsqr &rhs)
 Assignment operator. This copies the data.
 ~ClpLsqr ()
 Destructor.
Methods



bool setParam (char *parmName, int parmValue)
 Set an int parameter.
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.
void matVecMult (int, CoinDenseVector< double > *, CoinDenseVector< double > *)
 Matrix-vector multiply - implemented by user.
void matVecMult (int, CoinDenseVector< double > &, CoinDenseVector< double > &)
void borrowDiag1 (double *array)
 diag1 - we just borrow as it is part of a CoinDenseVector<double>

Public Attributes

Public member data



int nrows_
 Row dimension of matrix.
int ncols_
 Column dimension of matrix.
ClpInteriormodel_
 Pointer to Model object for this instance.
double * diag1_
 Diagonal array 1.
double diag2_
 Constant diagonal 2.

Detailed Description

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.


Constructor & Destructor Documentation

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.


Member Function Documentation

ClpLsqr& ClpLsqr::operator= ( const ClpLsqr rhs  ) 

Assignment operator. This copies the data.

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 > &   
)
void ClpLsqr::borrowDiag1 ( double *  array  )  [inline]

diag1 - we just borrow as it is part of a CoinDenseVector<double>

Definition at line 125 of file ClpLsqr.hpp.


Member Data Documentation

Row dimension of matrix.

Definition at line 86 of file ClpLsqr.hpp.

Column dimension of matrix.

Definition at line 88 of file ClpLsqr.hpp.

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.

Constant diagonal 2.

Definition at line 94 of file ClpLsqr.hpp.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 31 Oct 2014 for Clp by  doxygen 1.6.1