Cbc  2.9.9
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members
ClpFactorization Class Reference

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

#include <ClpFactorization.hpp>

+ Collaboration diagram for ClpFactorization:

Public Member Functions

factorization
int factorize (ClpSimplex *model, int solveType, bool valuesPass)
 When part of LP - given by basic variables. More...
 
Constructors, destructor
 ClpFactorization ()
 Default constructor. More...
 
 ~ClpFactorization ()
 Destructor. More...
 
Copy method
 ClpFactorization (const CoinFactorization &)
 The copy constructor from an CoinFactorization. More...
 
 ClpFactorization (const ClpFactorization &, int denseIfSmaller=0)
 The copy constructor. More...
 
 ClpFactorization (const CoinOtherFactorization &)
 The copy constructor from an CoinOtherFactorization. More...
 
ClpFactorizationoperator= (const ClpFactorization &)
 
rank one updates which do exist
int replaceColumn (const ClpSimplex *model, CoinIndexedVector *regionSparse, CoinIndexedVector *tableauColumn, int pivotRow, double pivotCheck, bool checkBeforeModifying=false, double acceptablePivot=1.0e-8)
 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. More...
 
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. More...
 
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. More...
 
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. More...
 
int updateColumnForDebug (CoinIndexedVector *regionSparse, CoinIndexedVector *regionSparse2, bool noPermute=false) const
 For debug (no statistics update) More...
 
int updateColumnTranspose (CoinIndexedVector *regionSparse, CoinIndexedVector *regionSparse2) const
 Updates one column (BTRAN) from region2 region1 starts as zero and is zero at end. More...
 
Lifted from CoinFactorization
int numberElements () const
 Total number of elements in factorization. More...
 
int * permute () const
 Returns address of permute region. More...
 
int * pivotColumn () const
 Returns address of pivotColumn region (also used for permuting) More...
 
int maximumPivots () const
 Maximum number of pivots between factorizations. More...
 
void maximumPivots (int value)
 Set maximum number of pivots between factorizations. More...
 
int pivots () const
 Returns number of pivots since factorization. More...
 
double areaFactor () const
 Whether larger areas needed. More...
 
void areaFactor (double value)
 Set whether larger areas needed. More...
 
double zeroTolerance () const
 Zero tolerance. More...
 
void zeroTolerance (double value)
 Set zero tolerance. More...
 
void saferTolerances (double zeroTolerance, double pivotTolerance)
 Set tolerances to safer of existing and given. More...
 
int sparseThreshold () const
 get sparse threshold More...
 
void sparseThreshold (int value)
 Set sparse threshold. More...
 
int status () const
 Returns status. More...
 
void setStatus (int value)
 Sets status. More...
 
int numberDense () const
 Returns number of dense rows. More...
 
CoinBigIndex numberElementsU () const
 Returns number in U area. More...
 
CoinBigIndex numberElementsL () const
 Returns number in L area. More...
 
CoinBigIndex numberElementsR () const
 Returns number in R area. More...
 
bool timeToRefactorize () const
 
int messageLevel () const
 Level of detail of messages. More...
 
void messageLevel (int value)
 Set level of detail of messages. More...
 
void clearArrays ()
 Get rid of all memory. More...
 
int numberRows () const
 Number of Rows after factorization. More...
 
int denseThreshold () const
 Gets dense threshold. More...
 
void setDenseThreshold (int value)
 Sets dense threshold. More...
 
double pivotTolerance () const
 Pivot tolerance. More...
 
void pivotTolerance (double value)
 Set pivot tolerance. More...
 
void relaxAccuracyCheck (double value)
 Allows change of pivot accuracy check 1.0 == none >1.0 relaxed. More...
 
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. More...
 
void setPersistenceFlag (int value)
 
void almostDestructor ()
 Delete all stuff (leaves as after CoinFactorization()) More...
 
double adjustedAreaFactor () const
 Returns areaFactor but adjusted for dense. More...
 
void setBiasLU (int value)
 
void setForrestTomlin (bool value)
 true if Forrest Tomlin update, false if PFI More...
 
void setDefaultValues ()
 Sets default values. More...
 
void forceOtherFactorization (int which)
 If nonzero force use of 1,dense 2,small 3,osl. More...
 
int goOslThreshold () const
 Get switch to osl if number rows <= this. More...
 
void setGoOslThreshold (int value)
 Set switch to osl if number rows <= this. More...
 
int goDenseThreshold () const
 Get switch to dense if number rows <= this. More...
 
void setGoDenseThreshold (int value)
 Set switch to dense if number rows <= this. More...
 
int goSmallThreshold () const
 Get switch to small if number rows <= this. More...
 
void setGoSmallThreshold (int value)
 Set switch to small if number rows <= this. More...
 
void goDenseOrSmall (int numberRows)
 Go over to dense or small code if small enough. More...
 
void setFactorization (ClpFactorization &factorization)
 Sets factorization. More...
 
int isDenseOrSmall () const
 Return 1 if dense code. More...
 
other stuff
void goSparse ()
 makes a row copy of L for speed and to allow very sparse problems More...
 
void cleanUp ()
 Cleans up i.e. gets rid of network basis. More...
 
bool needToReorder () const
 Says whether to redo pivot order. More...
 
bool networkBasis () const
 Says if a network basis. More...
 
void getWeights (int *weights) const
 Fills weighted row list. More...
 

Private Attributes

data
ClpNetworkBasisnetworkBasis_
 Pointer to network basis. More...
 
CoinFactorizationcoinFactorizationA_
 Pointer to CoinFactorization. More...
 
CoinOtherFactorizationcoinFactorizationB_
 Pointer to CoinOtherFactorization. More...
 
int forceB_
 If nonzero force use of 1,dense 2,small 3,osl. More...
 
int goOslThreshold_
 Switch to osl if number rows <= this. More...
 
int goSmallThreshold_
 Switch to small if number rows <= this. More...
 
int goDenseThreshold_
 Switch to dense if number rows <= this. More...
 
double shortestAverage_
 For guessing when to re-factorize. More...
 
double totalInR_
 
double totalInIncreasingU_
 
int endLengthU_
 
int lastNumberPivots_
 
int effectiveStartNumberU_
 

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 35 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 CoinOtherFactorization )

The copy constructor from an CoinOtherFactorization.

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 )
int ClpFactorization::replaceColumn ( const ClpSimplex model,
CoinIndexedVector regionSparse,
CoinIndexedVector tableauColumn,
int  pivotRow,
double  pivotCheck,
bool  checkBeforeModifying = false,
double  acceptablePivot = 1.0e-8 
)

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 136 of file ClpFactorization.hpp.

int* ClpFactorization::permute ( ) const
inline

Returns address of permute region.

Definition at line 141 of file ClpFactorization.hpp.

int* ClpFactorization::pivotColumn ( ) const
inline

Returns address of pivotColumn region (also used for permuting)

Definition at line 146 of file ClpFactorization.hpp.

int ClpFactorization::maximumPivots ( ) const
inline

Maximum number of pivots between factorizations.

Definition at line 151 of file ClpFactorization.hpp.

void ClpFactorization::maximumPivots ( int  value)
inline

Set maximum number of pivots between factorizations.

Definition at line 156 of file ClpFactorization.hpp.

int ClpFactorization::pivots ( ) const
inline

Returns number of pivots since factorization.

Definition at line 161 of file ClpFactorization.hpp.

double ClpFactorization::areaFactor ( ) const
inline

Whether larger areas needed.

Definition at line 166 of file ClpFactorization.hpp.

void ClpFactorization::areaFactor ( double  value)
inline

Set whether larger areas needed.

Definition at line 171 of file ClpFactorization.hpp.

double ClpFactorization::zeroTolerance ( ) const
inline

Zero tolerance.

Definition at line 175 of file ClpFactorization.hpp.

void ClpFactorization::zeroTolerance ( double  value)
inline

Set zero tolerance.

Definition at line 180 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 187 of file ClpFactorization.hpp.

void ClpFactorization::sparseThreshold ( int  value)
inline

Set sparse threshold.

Definition at line 192 of file ClpFactorization.hpp.

int ClpFactorization::status ( ) const
inline

Returns status.

Definition at line 196 of file ClpFactorization.hpp.

void ClpFactorization::setStatus ( int  value)
inline

Sets status.

Definition at line 201 of file ClpFactorization.hpp.

int ClpFactorization::numberDense ( ) const
inline

Returns number of dense rows.

Definition at line 206 of file ClpFactorization.hpp.

CoinBigIndex ClpFactorization::numberElementsU ( ) const
inline

Returns number in U area.

Definition at line 212 of file ClpFactorization.hpp.

CoinBigIndex ClpFactorization::numberElementsL ( ) const
inline

Returns number in L area.

Definition at line 217 of file ClpFactorization.hpp.

CoinBigIndex ClpFactorization::numberElementsR ( ) const
inline

Returns number in R area.

Definition at line 222 of file ClpFactorization.hpp.

bool ClpFactorization::timeToRefactorize ( ) const
int ClpFactorization::messageLevel ( ) const
inline

Level of detail of messages.

Definition at line 232 of file ClpFactorization.hpp.

void ClpFactorization::messageLevel ( int  value)
inline

Set level of detail of messages.

Definition at line 237 of file ClpFactorization.hpp.

void ClpFactorization::clearArrays ( )
inline

Get rid of all memory.

Definition at line 241 of file ClpFactorization.hpp.

int ClpFactorization::numberRows ( ) const
inline

Number of Rows after factorization.

Definition at line 248 of file ClpFactorization.hpp.

int ClpFactorization::denseThreshold ( ) const
inline

Gets dense threshold.

Definition at line 253 of file ClpFactorization.hpp.

void ClpFactorization::setDenseThreshold ( int  value)
inline

Sets dense threshold.

Definition at line 258 of file ClpFactorization.hpp.

double ClpFactorization::pivotTolerance ( ) const
inline

Pivot tolerance.

Definition at line 262 of file ClpFactorization.hpp.

void ClpFactorization::pivotTolerance ( double  value)
inline

Set pivot tolerance.

Definition at line 268 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 273 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 281 of file ClpFactorization.hpp.

void ClpFactorization::setPersistenceFlag ( int  value)
inline

Definition at line 285 of file ClpFactorization.hpp.

void ClpFactorization::almostDestructor ( )
inline

Delete all stuff (leaves as after CoinFactorization())

Definition at line 289 of file ClpFactorization.hpp.

double ClpFactorization::adjustedAreaFactor ( ) const
inline

Returns areaFactor but adjusted for dense.

Definition at line 296 of file ClpFactorization.hpp.

void ClpFactorization::setBiasLU ( int  value)
inline

Definition at line 300 of file ClpFactorization.hpp.

void ClpFactorization::setForrestTomlin ( bool  value)
inline

true if Forrest Tomlin update, false if PFI

Definition at line 304 of file ClpFactorization.hpp.

void ClpFactorization::setDefaultValues ( )
inline

Sets default values.

Definition at line 308 of file ClpFactorization.hpp.

void ClpFactorization::forceOtherFactorization ( int  which)

If nonzero force use of 1,dense 2,small 3,osl.

int ClpFactorization::goOslThreshold ( ) const
inline

Get switch to osl if number rows <= this.

Definition at line 320 of file ClpFactorization.hpp.

void ClpFactorization::setGoOslThreshold ( int  value)
inline

Set switch to osl if number rows <= this.

Definition at line 324 of file ClpFactorization.hpp.

int ClpFactorization::goDenseThreshold ( ) const
inline

Get switch to dense if number rows <= this.

Definition at line 328 of file ClpFactorization.hpp.

void ClpFactorization::setGoDenseThreshold ( int  value)
inline

Set switch to dense if number rows <= this.

Definition at line 332 of file ClpFactorization.hpp.

int ClpFactorization::goSmallThreshold ( ) const
inline

Get switch to small if number rows <= this.

Definition at line 336 of file ClpFactorization.hpp.

void ClpFactorization::setGoSmallThreshold ( int  value)
inline

Set switch to small if number rows <= this.

Definition at line 340 of file ClpFactorization.hpp.

void ClpFactorization::goDenseOrSmall ( int  numberRows)

Go over to dense or small code if small enough.

void ClpFactorization::setFactorization ( ClpFactorization factorization)

Sets factorization.

int ClpFactorization::isDenseOrSmall ( ) const
inline

Return 1 if dense code.

Definition at line 348 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 380 of file ClpFactorization.hpp.

void ClpFactorization::getWeights ( int *  weights) const

Fills weighted row list.

Member Data Documentation

ClpNetworkBasis* ClpFactorization::networkBasis_
private

Pointer to network basis.

Definition at line 400 of file ClpFactorization.hpp.

CoinFactorization* ClpFactorization::coinFactorizationA_
private

Pointer to CoinFactorization.

Definition at line 404 of file ClpFactorization.hpp.

CoinOtherFactorization* ClpFactorization::coinFactorizationB_
private

Pointer to CoinOtherFactorization.

Definition at line 406 of file ClpFactorization.hpp.

int ClpFactorization::forceB_
private

If nonzero force use of 1,dense 2,small 3,osl.

Definition at line 412 of file ClpFactorization.hpp.

int ClpFactorization::goOslThreshold_
private

Switch to osl if number rows <= this.

Definition at line 414 of file ClpFactorization.hpp.

int ClpFactorization::goSmallThreshold_
private

Switch to small if number rows <= this.

Definition at line 416 of file ClpFactorization.hpp.

int ClpFactorization::goDenseThreshold_
private

Switch to dense if number rows <= this.

Definition at line 418 of file ClpFactorization.hpp.

double ClpFactorization::shortestAverage_
mutableprivate

For guessing when to re-factorize.

Definition at line 422 of file ClpFactorization.hpp.

double ClpFactorization::totalInR_
mutableprivate

Definition at line 423 of file ClpFactorization.hpp.

double ClpFactorization::totalInIncreasingU_
mutableprivate

Definition at line 424 of file ClpFactorization.hpp.

int ClpFactorization::endLengthU_
mutableprivate

Definition at line 425 of file ClpFactorization.hpp.

int ClpFactorization::lastNumberPivots_
mutableprivate

Definition at line 426 of file ClpFactorization.hpp.

int ClpFactorization::effectiveStartNumberU_
mutableprivate

Definition at line 427 of file ClpFactorization.hpp.


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