ClpFactorization Class Reference

This just implements CoinFactorization when an ClpMatrixBase object is passed. More...

#include <ClpFactorization.hpp>

Collaboration diagram for ClpFactorization:
Collaboration graph
[legend]

List of all members.

Public Member Functions

factorization



int factorize (ClpSimplex *model, int solveType, bool valuesPass)
 When part of LP - given by basic variables.
Constructors, destructor



 ClpFactorization ()
 Default constructor.
 ~ClpFactorization ()
 Destructor.
Copy method



 ClpFactorization (const CoinFactorization &)
 The copy constructor from an CoinFactorization.
 ClpFactorization (const ClpFactorization &, int denseIfSmaller=0)
 The copy constructor.
 ClpFactorization (const CoinSmallFactorization &)
 The copy constructor from an CoinSmallFactorization.
ClpFactorizationoperator= (const ClpFactorization &)
 The copy constructor from an CoinFactorization.
rank one updates which do exist



int replaceColumn (const ClpSimplex *model, CoinIndexedVector *regionSparse, CoinIndexedVector *tableauColumn, int pivotRow, double pivotCheck, bool checkBeforeModifying=false)
 Replaces one Column to basis, returns 0=OK, 1=Probably OK, 2=singular, 3=no room If checkBeforeModifying is true will do all accuracy checks before modifying factorization.
various uses of factorization (return code number elements)

which user may want to know about



int updateColumnFT (CoinIndexedVector *regionSparse, CoinIndexedVector *regionSparse2)
 Updates one column (FTRAN) from region2 Tries to do FT update number returned is negative if no room region1 starts as zero and is zero at end.
int updateColumn (CoinIndexedVector *regionSparse, CoinIndexedVector *regionSparse2, bool noPermute=false) const
 Updates one column (FTRAN) from region2 region1 starts as zero and is zero at end.
int updateTwoColumnsFT (CoinIndexedVector *regionSparse1, CoinIndexedVector *regionSparse2, CoinIndexedVector *regionSparse3, bool noPermuteRegion3=false)
 Updates one column (FTRAN) from region2 Tries to do FT update number returned is negative if no room.
int updateColumnForDebug (CoinIndexedVector *regionSparse, CoinIndexedVector *regionSparse2, bool noPermute=false) const
 For debug (no statistics update).
int updateColumnTranspose (CoinIndexedVector *regionSparse, CoinIndexedVector *regionSparse2) const
 Updates one column (BTRAN) from region2 region1 starts as zero and is zero at end.
Lifted from CoinFactorization



int numberElements () const
 Total number of elements in factorization.
int * permute () const
 Returns address of permute region.
int * pivotColumn () const
 Returns address of pivotColumn region (also used for permuting).
int maximumPivots () const
 Maximum number of pivots between factorizations.
void maximumPivots (int value)
 Set maximum number of pivots between factorizations.
int pivots () const
 Returns number of pivots since factorization.
double areaFactor () const
 Whether larger areas needed.
void areaFactor (double value)
 Set whether larger areas needed.
double zeroTolerance () const
 Zero tolerance.
void zeroTolerance (double value)
 Set zero tolerance.
void saferTolerances (double zeroTolerance, double pivotTolerance)
 Set tolerances to safer of existing and given.
int sparseThreshold () const
 get sparse threshold
void sparseThreshold (int value)
 Set sparse threshold.
int status () const
 Returns status.
void setStatus (int value)
 Sets status.
int numberDense () const
 Returns number of dense rows.
CoinBigIndex numberElementsU () const
 Returns number in U area.
CoinBigIndex numberElementsL () const
 Returns number in L area.
CoinBigIndex numberElementsR () const
 Returns number in R area.
bool timeToRefactorize () const
 Total number of elements in factorization.
int messageLevel () const
 Level of detail of messages.
void messageLevel (int value)
 Set level of detail of messages.
void clearArrays ()
 Get rid of all memory.
int numberRows () const
 Number of Rows after factorization.
int denseThreshold () const
 Gets dense threshold.
void setDenseThreshold (int value)
 Sets dense threshold.
double pivotTolerance () const
 Pivot tolerance.
void pivotTolerance (double value)
 Set pivot tolerance.
void relaxAccuracyCheck (double value)
 Allows change of pivot accuracy check 1.0 == none >1.0 relaxed.
int persistenceFlag () const
 Array persistence flag If 0 then as now (delete/new) 1 then only do arrays if bigger needed 2 as 1 but give a bit extra if bigger needed.
void setPersistenceFlag (int value)
 Total number of elements in factorization.
void almostDestructor ()
 Delete all stuff (leaves as after CoinFactorization()).
double adjustedAreaFactor () const
 Returns areaFactor but adjusted for dense.
void setBiasLU (int value)
 Total number of elements in factorization.
void setForrestTomlin (bool value)
 true if Forrest Tomlin update, false if PFI
void setDefaultValues ()
 Sets default values.
int goDenseThreshold () const
 Get switch to dense if number rows <= this.
void setGoDenseThreshold (int value)
 Set switch to dense if number rows <= this.
int goSmallThreshold () const
 Get switch to small if number rows <= this.
void setGoSmallThreshold (int value)
 Set switch to small if number rows <= this.
void goDenseOrSmall (int numberRows)
 Go over to dense or small code if small enough.
int isDenseOrSmall () const
 Return 1 if dense code.
other stuff



void goSparse ()
 makes a row copy of L for speed and to allow very sparse problems
void cleanUp ()
 Cleans up i.e. gets rid of network basis.
bool needToReorder () const
 Says whether to redo pivot order.
bool networkBasis () const
 Says if a network basis.
void getWeights (int *weights) const
 Fills weighted row list.

Private Attributes

data



ClpNetworkBasisnetworkBasis_
 Pointer to network basis.
CoinFactorization * coinFactorizationA_
 Pointer to CoinFactorization.
CoinSmallFactorization * coinFactorizationB_
 Pointer to CoinSmallFactorization.
int goSmallThreshold_
 Switch to small if number rows <= this.
int goDenseThreshold_
 Switch to dense if number rows <= this.

Detailed Description

This just implements CoinFactorization when an ClpMatrixBase object is passed.

If a network then has a dummy CoinFactorization and a genuine ClpNetworkBasis object

Definition at line 31 of file ClpFactorization.hpp.


Constructor & Destructor Documentation

ClpFactorization::ClpFactorization (  ) 

Default constructor.

ClpFactorization::~ClpFactorization (  ) 

Destructor.

ClpFactorization::ClpFactorization ( const CoinFactorization &   ) 

The copy constructor from an CoinFactorization.

ClpFactorization::ClpFactorization ( const ClpFactorization ,
int  denseIfSmaller = 0 
)

The copy constructor.

ClpFactorization::ClpFactorization ( const CoinSmallFactorization &   ) 

The copy constructor from an CoinSmallFactorization.


Member Function Documentation

int ClpFactorization::factorize ( ClpSimplex model,
int  solveType,
bool  valuesPass 
)

When part of LP - given by basic variables.

Actually does factorization. Arrays passed in have non negative value to say basic. If status is okay, basic variables have pivot row - this is only needed if increasingRows_ >1. Allows scaling If status is singular, then basic variables have pivot row and ones thrown out have -1 returns 0 -okay, -1 singular, -2 too many in basis, -99 memory

ClpFactorization& ClpFactorization::operator= ( const ClpFactorization  ) 

The copy constructor from an CoinFactorization.

int ClpFactorization::replaceColumn ( const ClpSimplex model,
CoinIndexedVector *  regionSparse,
CoinIndexedVector *  tableauColumn,
int  pivotRow,
double  pivotCheck,
bool  checkBeforeModifying = false 
)

Replaces one Column to basis, returns 0=OK, 1=Probably OK, 2=singular, 3=no room If checkBeforeModifying is true will do all accuracy checks before modifying factorization.

Whether to set this depends on speed considerations. You could just do this on first iteration after factorization and thereafter re-factorize partial update already in U

int ClpFactorization::updateColumnFT ( CoinIndexedVector *  regionSparse,
CoinIndexedVector *  regionSparse2 
)

Updates one column (FTRAN) from region2 Tries to do FT update number returned is negative if no room region1 starts as zero and is zero at end.

int ClpFactorization::updateColumn ( CoinIndexedVector *  regionSparse,
CoinIndexedVector *  regionSparse2,
bool  noPermute = false 
) const

Updates one column (FTRAN) from region2 region1 starts as zero and is zero at end.

int ClpFactorization::updateTwoColumnsFT ( CoinIndexedVector *  regionSparse1,
CoinIndexedVector *  regionSparse2,
CoinIndexedVector *  regionSparse3,
bool  noPermuteRegion3 = false 
)

Updates one column (FTRAN) from region2 Tries to do FT update number returned is negative if no room.

Also updates region3 region1 starts as zero and is zero at end

int ClpFactorization::updateColumnForDebug ( CoinIndexedVector *  regionSparse,
CoinIndexedVector *  regionSparse2,
bool  noPermute = false 
) const

For debug (no statistics update).

int ClpFactorization::updateColumnTranspose ( CoinIndexedVector *  regionSparse,
CoinIndexedVector *  regionSparse2 
) const

Updates one column (BTRAN) from region2 region1 starts as zero and is zero at end.

int ClpFactorization::numberElements (  )  const [inline]

Total number of elements in factorization.

Definition at line 131 of file ClpFactorization.hpp.

int* ClpFactorization::permute (  )  const [inline]

Returns address of permute region.

Definition at line 135 of file ClpFactorization.hpp.

int* ClpFactorization::pivotColumn (  )  const [inline]

Returns address of pivotColumn region (also used for permuting).

Definition at line 139 of file ClpFactorization.hpp.

int ClpFactorization::maximumPivots (  )  const [inline]

Maximum number of pivots between factorizations.

Definition at line 143 of file ClpFactorization.hpp.

void ClpFactorization::maximumPivots ( int  value  )  [inline]

Set maximum number of pivots between factorizations.

Definition at line 147 of file ClpFactorization.hpp.

int ClpFactorization::pivots (  )  const [inline]

Returns number of pivots since factorization.

Definition at line 151 of file ClpFactorization.hpp.

double ClpFactorization::areaFactor (  )  const [inline]

Whether larger areas needed.

Definition at line 155 of file ClpFactorization.hpp.

void ClpFactorization::areaFactor ( double  value  )  [inline]

Set whether larger areas needed.

Definition at line 159 of file ClpFactorization.hpp.

double ClpFactorization::zeroTolerance (  )  const [inline]

Zero tolerance.

Definition at line 163 of file ClpFactorization.hpp.

void ClpFactorization::zeroTolerance ( double  value  )  [inline]

Set zero tolerance.

Definition at line 167 of file ClpFactorization.hpp.

void ClpFactorization::saferTolerances ( double  zeroTolerance,
double  pivotTolerance 
)

Set tolerances to safer of existing and given.

int ClpFactorization::sparseThreshold (  )  const [inline]

get sparse threshold

Definition at line 173 of file ClpFactorization.hpp.

void ClpFactorization::sparseThreshold ( int  value  )  [inline]

Set sparse threshold.

Definition at line 176 of file ClpFactorization.hpp.

int ClpFactorization::status (  )  const [inline]

Returns status.

Definition at line 179 of file ClpFactorization.hpp.

void ClpFactorization::setStatus ( int  value  )  [inline]

Sets status.

Definition at line 183 of file ClpFactorization.hpp.

int ClpFactorization::numberDense (  )  const [inline]

Returns number of dense rows.

Definition at line 187 of file ClpFactorization.hpp.

CoinBigIndex ClpFactorization::numberElementsU (  )  const [inline]

Returns number in U area.

Definition at line 191 of file ClpFactorization.hpp.

CoinBigIndex ClpFactorization::numberElementsL (  )  const [inline]

Returns number in L area.

Definition at line 195 of file ClpFactorization.hpp.

CoinBigIndex ClpFactorization::numberElementsR (  )  const [inline]

Returns number in R area.

Definition at line 199 of file ClpFactorization.hpp.

bool ClpFactorization::timeToRefactorize (  )  const [inline]

Total number of elements in factorization.

Definition at line 203 of file ClpFactorization.hpp.

int ClpFactorization::messageLevel (  )  const [inline]

Level of detail of messages.

Definition at line 215 of file ClpFactorization.hpp.

void ClpFactorization::messageLevel ( int  value  )  [inline]

Set level of detail of messages.

Definition at line 219 of file ClpFactorization.hpp.

void ClpFactorization::clearArrays (  )  [inline]

Get rid of all memory.

Definition at line 223 of file ClpFactorization.hpp.

int ClpFactorization::numberRows (  )  const [inline]

Number of Rows after factorization.

Definition at line 226 of file ClpFactorization.hpp.

int ClpFactorization::denseThreshold (  )  const [inline]

Gets dense threshold.

Definition at line 230 of file ClpFactorization.hpp.

void ClpFactorization::setDenseThreshold ( int  value  )  [inline]

Sets dense threshold.

Definition at line 233 of file ClpFactorization.hpp.

double ClpFactorization::pivotTolerance (  )  const [inline]

Pivot tolerance.

Definition at line 236 of file ClpFactorization.hpp.

void ClpFactorization::pivotTolerance ( double  value  )  [inline]

Set pivot tolerance.

Definition at line 240 of file ClpFactorization.hpp.

void ClpFactorization::relaxAccuracyCheck ( double  value  )  [inline]

Allows change of pivot accuracy check 1.0 == none >1.0 relaxed.

Definition at line 244 of file ClpFactorization.hpp.

int ClpFactorization::persistenceFlag (  )  const [inline]

Array persistence flag If 0 then as now (delete/new) 1 then only do arrays if bigger needed 2 as 1 but give a bit extra if bigger needed.

Definition at line 251 of file ClpFactorization.hpp.

void ClpFactorization::setPersistenceFlag ( int  value  )  [inline]

Total number of elements in factorization.

Definition at line 253 of file ClpFactorization.hpp.

void ClpFactorization::almostDestructor (  )  [inline]

Delete all stuff (leaves as after CoinFactorization()).

Definition at line 256 of file ClpFactorization.hpp.

double ClpFactorization::adjustedAreaFactor (  )  const [inline]

Returns areaFactor but adjusted for dense.

Definition at line 259 of file ClpFactorization.hpp.

void ClpFactorization::setBiasLU ( int  value  )  [inline]

Total number of elements in factorization.

Definition at line 261 of file ClpFactorization.hpp.

void ClpFactorization::setForrestTomlin ( bool  value  )  [inline]

true if Forrest Tomlin update, false if PFI

Definition at line 264 of file ClpFactorization.hpp.

void ClpFactorization::setDefaultValues (  )  [inline]

Sets default values.

Definition at line 267 of file ClpFactorization.hpp.

int ClpFactorization::goDenseThreshold (  )  const [inline]

Get switch to dense if number rows <= this.

Definition at line 277 of file ClpFactorization.hpp.

void ClpFactorization::setGoDenseThreshold ( int  value  )  [inline]

Set switch to dense if number rows <= this.

Definition at line 280 of file ClpFactorization.hpp.

int ClpFactorization::goSmallThreshold (  )  const [inline]

Get switch to small if number rows <= this.

Definition at line 283 of file ClpFactorization.hpp.

void ClpFactorization::setGoSmallThreshold ( int  value  )  [inline]

Set switch to small if number rows <= this.

Definition at line 286 of file ClpFactorization.hpp.

void ClpFactorization::goDenseOrSmall ( int  numberRows  ) 

Go over to dense or small code if small enough.

int ClpFactorization::isDenseOrSmall (  )  const [inline]

Return 1 if dense code.

Definition at line 291 of file ClpFactorization.hpp.

void ClpFactorization::goSparse (  ) 

makes a row copy of L for speed and to allow very sparse problems

void ClpFactorization::cleanUp (  ) 

Cleans up i.e. gets rid of network basis.

bool ClpFactorization::needToReorder (  )  const

Says whether to redo pivot order.

bool ClpFactorization::networkBasis (  )  const [inline]

Says if a network basis.

Definition at line 323 of file ClpFactorization.hpp.

void ClpFactorization::getWeights ( int *  weights  )  const

Fills weighted row list.


Member Data Documentation

Pointer to network basis.

Definition at line 341 of file ClpFactorization.hpp.

CoinFactorization* ClpFactorization::coinFactorizationA_ [private]

Pointer to CoinFactorization.

Definition at line 345 of file ClpFactorization.hpp.

CoinSmallFactorization* ClpFactorization::coinFactorizationB_ [private]

Pointer to CoinSmallFactorization.

Definition at line 347 of file ClpFactorization.hpp.

Switch to small if number rows <= this.

Definition at line 349 of file ClpFactorization.hpp.

Switch to dense if number rows <= this.

Definition at line 351 of file ClpFactorization.hpp.


The documentation for this class was generated from the following file:

Generated on Tue Nov 10 03:58:05 2009 by  doxygen 1.6.1