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

This deals with Factorization and Updates. More...

#include <CoinFactorization.hpp>

+ Collaboration diagram for CoinFactorization:

Public Member Functions

Constructors and destructor and copy
 CoinFactorization ()
 Default constructor. More...
 
 CoinFactorization (const CoinFactorization &other)
 Copy constructor. More...
 
 ~CoinFactorization ()
 Destructor. More...
 
void almostDestructor ()
 Delete all stuff (leaves as after CoinFactorization()) More...
 
void show_self () const
 Debug show object (shows one representation) More...
 
int saveFactorization (const char *file) const
 Debug - save on file - 0 if no error. More...
 
int restoreFactorization (const char *file, bool factor=false)
 Debug - restore from file - 0 if no error on file. More...
 
void sort () const
 Debug - sort so can compare. More...
 
CoinFactorizationoperator= (const CoinFactorization &other)
 = copy More...
 
Do factorization
int factorize (const CoinPackedMatrix &matrix, int rowIsBasic[], int columnIsBasic[], double areaFactor=0.0)
 When part of LP - given by basic variables. More...
 
int factorize (int numberRows, int numberColumns, CoinBigIndex numberElements, CoinBigIndex maximumL, CoinBigIndex maximumU, const int indicesRow[], const int indicesColumn[], const double elements[], int permutation[], double areaFactor=0.0)
 When given as triplets. More...
 
int factorizePart1 (int numberRows, int numberColumns, CoinBigIndex estimateNumberElements, int *indicesRow[], int *indicesColumn[], CoinFactorizationDouble *elements[], double areaFactor=0.0)
 Two part version for maximum flexibility This part creates arrays for user to fill. More...
 
int factorizePart2 (int permutation[], int exactNumberElements)
 This is part two of factorization Arrays belong to factorization and were returned by part 1 If status okay, permutation has pivot rows - this is only needed If status is singular, then basic variables have pivot row and ones thrown out have -1 returns 0 -okay, -1 singular, -99 memory. More...
 
double conditionNumber () const
 Condition number - product of pivots after factorization. More...
 
general stuff such as permutation or status
int status () const
 Returns status. More...
 
void setStatus (int value)
 Sets status. More...
 
int pivots () const
 Returns number of pivots since factorization. More...
 
void setPivots (int value)
 Sets number of pivots since factorization. More...
 
int * permute () const
 Returns address of permute region. More...
 
int * pivotColumn () const
 Returns address of pivotColumn region (also used for permuting) More...
 
CoinFactorizationDoublepivotRegion () const
 Returns address of pivot region. More...
 
int * permuteBack () const
 Returns address of permuteBack region. More...
 
int * lastRow () const
 Returns address of lastRow region. More...
 
int * pivotColumnBack () const
 Returns address of pivotColumnBack region (also used for permuting) Now uses firstCount to save memory allocation. More...
 
CoinBigIndexstartRowL () const
 Start of each row in L. More...
 
CoinBigIndexstartColumnL () const
 Start of each column in L. More...
 
int * indexColumnL () const
 Index of column in row for L. More...
 
int * indexRowL () const
 Row indices of L. More...
 
CoinFactorizationDoubleelementByRowL () const
 Elements in L (row copy) More...
 
int numberRowsExtra () const
 Number of Rows after iterating. More...
 
void setNumberRows (int value)
 Set number of Rows after factorization. More...
 
int numberRows () const
 Number of Rows after factorization. More...
 
CoinBigIndex numberL () const
 Number in L. More...
 
CoinBigIndex baseL () const
 Base of L. More...
 
int maximumRowsExtra () const
 Maximum of Rows after iterating. More...
 
int numberColumns () const
 Total number of columns in factorization. More...
 
int numberElements () const
 Total number of elements in factorization. More...
 
int numberForrestTomlin () const
 Length of FT vector. More...
 
int numberGoodColumns () const
 Number of good columns in factorization. More...
 
double areaFactor () const
 Whether larger areas needed. More...
 
void areaFactor (double value)
 
double adjustedAreaFactor () const
 Returns areaFactor but adjusted for dense. More...
 
void relaxAccuracyCheck (double value)
 Allows change of pivot accuracy check 1.0 == none >1.0 relaxed. More...
 
double getAccuracyCheck () const
 
int messageLevel () const
 Level of detail of messages. More...
 
void messageLevel (int value)
 
int maximumPivots () const
 Maximum number of pivots between factorizations. More...
 
void maximumPivots (int value)
 
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)
 
double zeroTolerance () const
 Zero tolerance. More...
 
void zeroTolerance (double value)
 
double slackValue () const
 Whether slack value is +1 or -1. More...
 
void slackValue (double value)
 
double maximumCoefficient () const
 Returns maximum absolute value in factorization. More...
 
bool forrestTomlin () const
 true if Forrest Tomlin update, false if PFI More...
 
void setForrestTomlin (bool value)
 
bool spaceForForrestTomlin () const
 True if FT update and space. More...
 
some simple stuff
int numberDense () const
 Returns number of dense rows. More...
 
CoinBigIndex numberElementsU () const
 Returns number in U area. More...
 
void setNumberElementsU (CoinBigIndex value)
 Setss number in U area. More...
 
CoinBigIndex lengthAreaU () const
 Returns length of U area. More...
 
CoinBigIndex numberElementsL () const
 Returns number in L area. More...
 
CoinBigIndex lengthAreaL () const
 Returns length of L area. More...
 
CoinBigIndex numberElementsR () const
 Returns number in R area. More...
 
CoinBigIndex numberCompressions () const
 Number of compressions done. More...
 
int * numberInRow () const
 Number of entries in each row. More...
 
int * numberInColumn () const
 Number of entries in each column. More...
 
CoinFactorizationDoubleelementU () const
 Elements of U. More...
 
int * indexRowU () const
 Row indices of U. More...
 
CoinBigIndexstartColumnU () const
 Start of each column in U. More...
 
int maximumColumnsExtra ()
 Maximum number of Columns after iterating. More...
 
int biasLU () const
 L to U bias 0 - U bias, 1 - some U bias, 2 some L bias, 3 L bias. More...
 
void setBiasLU (int value)
 
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)
 
rank one updates which do exist
int replaceColumn (CoinIndexedVector *regionSparse, 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...
 
void replaceColumnU (CoinIndexedVector *regionSparse, CoinBigIndex *deleted, int internalPivotRow)
 Combines BtranU and delete elements If deleted is NULL then delete elements otherwise store where elements are. More...
 
various uses of factorization (return code number elements)

*** Below this user may not want to know about

which user may not want to know about (left over from my LP code)

int updateColumnFT (CoinIndexedVector *regionSparse, CoinIndexedVector *regionSparse2)
 Updates one column (FTRAN) from regionSparse2 Tries to do FT update number returned is negative if no room regionSparse starts as zero and is zero at end. More...
 
int updateColumn (CoinIndexedVector *regionSparse, CoinIndexedVector *regionSparse2, bool noPermute=false) const
 This version has same effect as above with FTUpdate==false so number returned is always >=0. 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 updateColumnTranspose (CoinIndexedVector *regionSparse, CoinIndexedVector *regionSparse2) const
 Updates one column (BTRAN) from regionSparse2 regionSparse starts as zero and is zero at end Note - if regionSparse2 packed on input - will be packed on output. More...
 
void goSparse ()
 makes a row copy of L for speed and to allow very sparse problems More...
 
int sparseThreshold () const
 get sparse threshold More...
 
void sparseThreshold (int value)
 set sparse threshold More...
 
void clearArrays ()
 Get rid of all memory. More...
 
various updates - none of which have been written!
int add (CoinBigIndex numberElements, int indicesRow[], int indicesColumn[], double elements[])
 Adds given elements to Basis and updates factorization, can increase size of basis. More...
 
int addColumn (CoinBigIndex numberElements, int indicesRow[], double elements[])
 Adds one Column to basis, can increase size of basis. More...
 
int addRow (CoinBigIndex numberElements, int indicesColumn[], double elements[])
 Adds one Row to basis, can increase size of basis. More...
 
int deleteColumn (int Row)
 Deletes one Column from basis, returns rank. More...
 
int deleteRow (int Row)
 Deletes one Row from basis, returns rank. More...
 
int replaceRow (int whichRow, int numberElements, const int indicesColumn[], const double elements[])
 Replaces one Row in basis, At present assumes just a singleton on row is in basis returns 0=OK, 1=Probably OK, 2=singular, 3 no space. More...
 
void emptyRows (int numberToEmpty, const int which[])
 Takes out all entries for given rows. More...
 
used by ClpFactorization
void checkSparse ()
 See if worth going sparse. More...
 
bool collectStatistics () const
 For statistics. More...
 
void setCollectStatistics (bool onOff) const
 For statistics. More...
 
void gutsOfDestructor (int type=1)
 The real work of constructors etc 0 just scalars, 1 bit normal. More...
 
void gutsOfInitialize (int type)
 1 bit - tolerances etc, 2 more, 4 dummy arrays More...
 
void gutsOfCopy (const CoinFactorization &other)
 
void resetStatistics ()
 Reset all sparsity etc statistics. More...
 

Friends

void CoinFactorizationUnitTest (const std::string &mpsDir)
 

used by factorization

void getAreas (int numberRows, int numberColumns, CoinBigIndex maximumL, CoinBigIndex maximumU)
 Gets space for a factorization, called by constructors. More...
 
void preProcess (int state, int possibleDuplicates=-1)
 PreProcesses raw triplet data. More...
 
int factor ()
 Does most of factorization. More...
 
int replaceColumnPFI (CoinIndexedVector *regionSparse, int pivotRow, double alpha)
 Replaces one Column to basis for PFI returns 0=OK, 1=Probably OK, 2=singular, 3=no room. More...
 
int factorSparse ()
 Does sparse phase of factorization return code is <0 error, 0= finished. More...
 
int factorSparseSmall ()
 Does sparse phase of factorization (for smaller problems) return code is <0 error, 0= finished. More...
 
int factorSparseLarge ()
 Does sparse phase of factorization (for larger problems) return code is <0 error, 0= finished. More...
 
int factorDense ()
 Does dense phase of factorization return code is <0 error, 0= finished. More...
 
bool pivotOneOtherRow (int pivotRow, int pivotColumn)
 Pivots when just one other row so faster? More...
 
bool pivotRowSingleton (int pivotRow, int pivotColumn)
 Does one pivot on Row Singleton in factorization. More...
 
bool pivotColumnSingleton (int pivotRow, int pivotColumn)
 Does one pivot on Column Singleton in factorization. More...
 
bool getColumnSpace (int iColumn, int extraNeeded)
 Gets space for one Column with given length, may have to do compression (returns True if successful), also moves existing vector, extraNeeded is over and above present. More...
 
bool reorderU ()
 Reorders U so contiguous and in order (if there is space) Returns true if it could. More...
 
bool getColumnSpaceIterateR (int iColumn, double value, int iRow)
 getColumnSpaceIterateR. More...
 
CoinBigIndex getColumnSpaceIterate (int iColumn, double value, int iRow)
 getColumnSpaceIterate. More...
 
bool getRowSpace (int iRow, int extraNeeded)
 
Gets space for one Row with given length,

may have to do compression (returns True if successful), also moves existing vector More...

 
bool getRowSpaceIterate (int iRow, int extraNeeded)
 
Gets space for one Row with given length while iterating,

may have to do compression (returns True if successful), also moves existing vector More...

 
void checkConsistency ()
 Checks that row and column copies look OK. More...
 
void addLink (int index, int count)
 Adds a link in chain of equal counts. More...
 
void deleteLink (int index)
 Deletes a link in chain of equal counts. More...
 
void separateLinks (int count, bool rowsFirst)
 Separate out links with same row/column count. More...
 
void cleanup ()
 Cleans up at end of factorization. More...
 
void updateColumnL (CoinIndexedVector *region, int *indexIn) const
 Updates part of column (FTRANL) More...
 
void updateColumnLDensish (CoinIndexedVector *region, int *indexIn) const
 Updates part of column (FTRANL) when densish. More...
 
void updateColumnLSparse (CoinIndexedVector *region, int *indexIn) const
 Updates part of column (FTRANL) when sparse. More...
 
void updateColumnLSparsish (CoinIndexedVector *region, int *indexIn) const
 Updates part of column (FTRANL) when sparsish. More...
 
void updateColumnR (CoinIndexedVector *region) const
 Updates part of column (FTRANR) without FT update. More...
 
void updateColumnRFT (CoinIndexedVector *region, int *indexIn)
 Updates part of column (FTRANR) with FT update. More...
 
void updateColumnU (CoinIndexedVector *region, int *indexIn) const
 Updates part of column (FTRANU) More...
 
void updateColumnUSparse (CoinIndexedVector *regionSparse, int *indexIn) const
 Updates part of column (FTRANU) when sparse. More...
 
void updateColumnUSparsish (CoinIndexedVector *regionSparse, int *indexIn) const
 Updates part of column (FTRANU) when sparsish. More...
 
int updateColumnUDensish (double *COIN_RESTRICT region, int *COIN_RESTRICT regionIndex) const
 Updates part of column (FTRANU) More...
 
void updateTwoColumnsUDensish (int &numberNonZero1, double *COIN_RESTRICT region1, int *COIN_RESTRICT index1, int &numberNonZero2, double *COIN_RESTRICT region2, int *COIN_RESTRICT index2) const
 Updates part of 2 columns (FTRANU) real work. More...
 
void updateColumnPFI (CoinIndexedVector *regionSparse) const
 Updates part of column PFI (FTRAN) (after rest) More...
 
void permuteBack (CoinIndexedVector *regionSparse, CoinIndexedVector *outVector) const
 Permutes back at end of updateColumn. More...
 
void updateColumnTransposePFI (CoinIndexedVector *region) const
 Updates part of column transpose PFI (BTRAN) (before rest) More...
 
void updateColumnTransposeU (CoinIndexedVector *region, int smallestIndex) const
 Updates part of column transpose (BTRANU), assumes index is sorted i.e. More...
 
void updateColumnTransposeUSparsish (CoinIndexedVector *region, int smallestIndex) const
 Updates part of column transpose (BTRANU) when sparsish, assumes index is sorted i.e. More...
 
void updateColumnTransposeUDensish (CoinIndexedVector *region, int smallestIndex) const
 Updates part of column transpose (BTRANU) when densish, assumes index is sorted i.e. More...
 
void updateColumnTransposeUSparse (CoinIndexedVector *region) const
 Updates part of column transpose (BTRANU) when sparse, assumes index is sorted i.e. More...
 
void updateColumnTransposeUByColumn (CoinIndexedVector *region, int smallestIndex) const
 Updates part of column transpose (BTRANU) by column assumes index is sorted i.e. More...
 
void updateColumnTransposeR (CoinIndexedVector *region) const
 Updates part of column transpose (BTRANR) More...
 
void updateColumnTransposeRDensish (CoinIndexedVector *region) const
 Updates part of column transpose (BTRANR) when dense. More...
 
void updateColumnTransposeRSparse (CoinIndexedVector *region) const
 Updates part of column transpose (BTRANR) when sparse. More...
 
void updateColumnTransposeL (CoinIndexedVector *region) const
 Updates part of column transpose (BTRANL) More...
 
void updateColumnTransposeLDensish (CoinIndexedVector *region) const
 Updates part of column transpose (BTRANL) when densish by column. More...
 
void updateColumnTransposeLByRow (CoinIndexedVector *region) const
 Updates part of column transpose (BTRANL) when densish by row. More...
 
void updateColumnTransposeLSparsish (CoinIndexedVector *region) const
 Updates part of column transpose (BTRANL) when sparsish by row. More...
 
void updateColumnTransposeLSparse (CoinIndexedVector *region) const
 Updates part of column transpose (BTRANL) when sparse (by Row) More...
 
int checkPivot (double saveFromU, double oldPivot) const
 Returns accuracy status of replaceColumn returns 0=OK, 1=Probably OK, 2=singular. More...
 
template<class T >
bool pivot (int pivotRow, int pivotColumn, CoinBigIndex pivotRowPosition, CoinBigIndex pivotColumnPosition, CoinFactorizationDouble work[], unsigned int workArea2[], int increment2, T markRow[], int largeInteger)
 

data

double pivotTolerance_
 Pivot tolerance. More...
 
double zeroTolerance_
 Zero tolerance. More...
 
double slackValue_
 Whether slack value is +1 or -1. More...
 
double areaFactor_
 How much to multiply areas by. More...
 
double relaxCheck_
 Relax check on accuracy in replaceColumn. More...
 
int numberRows_
 Number of Rows in factorization. More...
 
int numberRowsExtra_
 Number of Rows after iterating. More...
 
int maximumRowsExtra_
 Maximum number of Rows after iterating. More...
 
int numberColumns_
 Number of Columns in factorization. More...
 
int numberColumnsExtra_
 Number of Columns after iterating. More...
 
int maximumColumnsExtra_
 Maximum number of Columns after iterating. More...
 
int numberGoodU_
 Number factorized in U (not row singletons) More...
 
int numberGoodL_
 Number factorized in L. More...
 
int maximumPivots_
 Maximum number of pivots before factorization. More...
 
int numberPivots_
 Number pivots since last factorization. More...
 
CoinBigIndex totalElements_
 Number of elements in U (to go) or while iterating total overall. More...
 
CoinBigIndex factorElements_
 Number of elements after factorization. More...
 
CoinIntArrayWithLength pivotColumn_
 Pivot order for each Column. More...
 
CoinIntArrayWithLength permute_
 Permutation vector for pivot row order. More...
 
CoinIntArrayWithLength permuteBack_
 DePermutation vector for pivot row order. More...
 
CoinIntArrayWithLength pivotColumnBack_
 Inverse Pivot order for each Column. More...
 
int status_
 Status of factorization. More...
 
int numberTrials_
 0 - no increasing rows - no permutations, 1 - no increasing rows but permutations 2 - increasing rows More...
 
CoinBigIndexArrayWithLength startRowU_
 Start of each Row as pointer. More...
 
CoinIntArrayWithLength numberInRow_
 Number in each Row. More...
 
CoinIntArrayWithLength numberInColumn_
 Number in each Column. More...
 
CoinIntArrayWithLength numberInColumnPlus_
 Number in each Column including pivoted. More...
 
CoinIntArrayWithLength firstCount_
 First Row/Column with count of k, can tell which by offset - Rows then Columns. More...
 
CoinIntArrayWithLength nextCount_
 Next Row/Column with count. More...
 
CoinIntArrayWithLength lastCount_
 Previous Row/Column with count. More...
 
CoinIntArrayWithLength nextColumn_
 Next Column in memory order. More...
 
CoinIntArrayWithLength lastColumn_
 Previous Column in memory order. More...
 
CoinIntArrayWithLength nextRow_
 Next Row in memory order. More...
 
CoinIntArrayWithLength lastRow_
 Previous Row in memory order. More...
 
CoinIntArrayWithLength saveColumn_
 Columns left to do in a single pivot. More...
 
CoinIntArrayWithLength markRow_
 Marks rows to be updated. More...
 
int messageLevel_
 Detail in messages. More...
 
int biggerDimension_
 Larger of row and column size. More...
 
CoinIntArrayWithLength indexColumnU_
 Base address for U (may change) More...
 
CoinIntArrayWithLength pivotRowL_
 Pivots for L. More...
 
CoinFactorizationDoubleArrayWithLength pivotRegion_
 Inverses of pivot values. More...
 
int numberSlacks_
 Number of slacks at beginning of U. More...
 
int numberU_
 Number in U. More...
 
CoinBigIndex maximumU_
 Maximum space used in U. More...
 
CoinBigIndex lengthU_
 Base of U is always 0. More...
 
CoinBigIndex lengthAreaU_
 Length of area reserved for U. More...
 
CoinFactorizationDoubleArrayWithLength elementU_
 Elements of U. More...
 
CoinIntArrayWithLength indexRowU_
 Row indices of U. More...
 
CoinBigIndexArrayWithLength startColumnU_
 Start of each column in U. More...
 
CoinBigIndexArrayWithLength convertRowToColumnU_
 Converts rows to columns in U. More...
 
CoinBigIndex numberL_
 Number in L. More...
 
CoinBigIndex baseL_
 Base of L. More...
 
CoinBigIndex lengthL_
 Length of L. More...
 
CoinBigIndex lengthAreaL_
 Length of area reserved for L. More...
 
CoinFactorizationDoubleArrayWithLength elementL_
 Elements of L. More...
 
CoinIntArrayWithLength indexRowL_
 Row indices of L. More...
 
CoinBigIndexArrayWithLength startColumnL_
 Start of each column in L. More...
 
bool doForrestTomlin_
 true if Forrest Tomlin update, false if PFI More...
 
int numberR_
 Number in R. More...
 
CoinBigIndex lengthR_
 Length of R stuff. More...
 
CoinBigIndex lengthAreaR_
 length of area reserved for R More...
 
CoinFactorizationDoubleelementR_
 Elements of R. More...
 
int * indexRowR_
 Row indices for R. More...
 
CoinBigIndexArrayWithLength startColumnR_
 Start of columns for R. More...
 
double * denseArea_
 Dense area. More...
 
double * denseAreaAddress_
 Dense area - actually used (for alignment etc) More...
 
int * densePermute_
 Dense permutation. More...
 
int numberDense_
 Number of dense rows. More...
 
int denseThreshold_
 Dense threshold. More...
 
CoinFactorizationDoubleArrayWithLength workArea_
 First work area. More...
 
CoinUnsignedIntArrayWithLength workArea2_
 Second work area. More...
 
CoinBigIndex numberCompressions_
 Number of compressions done. More...
 
int sparseThreshold_
 Below this use sparse technology - if 0 then no L row copy. More...
 
int sparseThreshold2_
 And one for "sparsish". More...
 
CoinBigIndexArrayWithLength startRowL_
 Start of each row in L. More...
 
CoinIntArrayWithLength indexColumnL_
 Index of column in row for L. More...
 
CoinFactorizationDoubleArrayWithLength elementByRowL_
 Elements in L (row copy) More...
 
CoinIntArrayWithLength sparse_
 Sparse regions. More...
 
int biasLU_
 L to U bias 0 - U bias, 1 - some U bias, 2 some L bias, 3 L bias. More...
 
int persistenceFlag_
 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...
 
double ftranCountInput_
 Below are all to collect. More...
 
double ftranCountAfterL_
 
double ftranCountAfterR_
 
double ftranCountAfterU_
 
double btranCountInput_
 
double btranCountAfterU_
 
double btranCountAfterR_
 
double btranCountAfterL_
 
int numberFtranCounts_
 We can roll over factorizations. More...
 
int numberBtranCounts_
 
double ftranAverageAfterL_
 While these are average ratios collected over last period. More...
 
double ftranAverageAfterR_
 
double ftranAverageAfterU_
 
double btranAverageAfterU_
 
double btranAverageAfterR_
 
double btranAverageAfterL_
 

Detailed Description

This deals with Factorization and Updates.

This class started with a parallel simplex code I was writing in the mid 90's. The need for parallelism led to many complications and I have simplified as much as I could to get back to this.

I was aiming at problems where I might get speed-up so I was looking at dense problems or ones with structure. This led to permuting input and output vectors and to increasing the number of rows each rank-one update. This is still in as a minor overhead.

I have also put in handling for hyper-sparsity. I have taken out all outer loop unrolling, dense matrix handling and most of the book-keeping for slacks. Also I always use FTRAN approach to updating even if factorization fairly dense. All these could improve performance.

I blame some of the coding peculiarities on the history of the code but mostly it is just because I can't do elegant code (or useful comments).

I am assuming that 32 bits is enough for number of rows or columns, but CoinBigIndex may be redefined to get 64 bits.

Definition at line 50 of file CoinFactorization.hpp.

Constructor & Destructor Documentation

CoinFactorization::CoinFactorization ( )

Default constructor.

CoinFactorization::CoinFactorization ( const CoinFactorization other)

Copy constructor.

CoinFactorization::~CoinFactorization ( )

Destructor.

Member Function Documentation

void CoinFactorization::almostDestructor ( )

Delete all stuff (leaves as after CoinFactorization())

void CoinFactorization::show_self ( ) const

Debug show object (shows one representation)

int CoinFactorization::saveFactorization ( const char *  file) const

Debug - save on file - 0 if no error.

int CoinFactorization::restoreFactorization ( const char *  file,
bool  factor = false 
)

Debug - restore from file - 0 if no error on file.

If factor true then factorizes as if called from ClpFactorization

void CoinFactorization::sort ( ) const

Debug - sort so can compare.

CoinFactorization& CoinFactorization::operator= ( const CoinFactorization other)

= copy

int CoinFactorization::factorize ( const CoinPackedMatrix matrix,
int  rowIsBasic[],
int  columnIsBasic[],
double  areaFactor = 0.0 
)

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 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

int CoinFactorization::factorize ( int  numberRows,
int  numberColumns,
CoinBigIndex  numberElements,
CoinBigIndex  maximumL,
CoinBigIndex  maximumU,
const int  indicesRow[],
const int  indicesColumn[],
const double  elements[],
int  permutation[],
double  areaFactor = 0.0 
)

When given as triplets.

Actually does factorization. maximumL is guessed maximum size of L part of final factorization, maximumU of U part. These are multiplied by areaFactor which can be computed by user or internally. Arrays are copied in. I could add flag to delete arrays to save a bit of memory. If status okay, permutation has pivot rows - this is only needed If status is singular, then basic variables have pivot row and ones thrown out have -1 returns 0 -okay, -1 singular, -99 memory

int CoinFactorization::factorizePart1 ( int  numberRows,
int  numberColumns,
CoinBigIndex  estimateNumberElements,
int *  indicesRow[],
int *  indicesColumn[],
CoinFactorizationDouble elements[],
double  areaFactor = 0.0 
)

Two part version for maximum flexibility This part creates arrays for user to fill.

estimateNumberElements is safe estimate of number returns 0 -okay, -99 memory

int CoinFactorization::factorizePart2 ( int  permutation[],
int  exactNumberElements 
)

This is part two of factorization Arrays belong to factorization and were returned by part 1 If status okay, permutation has pivot rows - this is only needed If status is singular, then basic variables have pivot row and ones thrown out have -1 returns 0 -okay, -1 singular, -99 memory.

double CoinFactorization::conditionNumber ( ) const

Condition number - product of pivots after factorization.

int CoinFactorization::status ( ) const
inline

Returns status.

Definition at line 137 of file CoinFactorization.hpp.

void CoinFactorization::setStatus ( int  value)
inline

Sets status.

Definition at line 141 of file CoinFactorization.hpp.

int CoinFactorization::pivots ( ) const
inline

Returns number of pivots since factorization.

Definition at line 144 of file CoinFactorization.hpp.

void CoinFactorization::setPivots ( int  value)
inline

Sets number of pivots since factorization.

Definition at line 148 of file CoinFactorization.hpp.

int* CoinFactorization::permute ( ) const
inline

Returns address of permute region.

Definition at line 151 of file CoinFactorization.hpp.

int* CoinFactorization::pivotColumn ( ) const
inline

Returns address of pivotColumn region (also used for permuting)

Definition at line 155 of file CoinFactorization.hpp.

CoinFactorizationDouble* CoinFactorization::pivotRegion ( ) const
inline

Returns address of pivot region.

Definition at line 159 of file CoinFactorization.hpp.

int* CoinFactorization::permuteBack ( ) const
inline

Returns address of permuteBack region.

Definition at line 163 of file CoinFactorization.hpp.

int* CoinFactorization::lastRow ( ) const
inline

Returns address of lastRow region.

Definition at line 167 of file CoinFactorization.hpp.

int* CoinFactorization::pivotColumnBack ( ) const
inline

Returns address of pivotColumnBack region (also used for permuting) Now uses firstCount to save memory allocation.

Definition at line 172 of file CoinFactorization.hpp.

CoinBigIndex* CoinFactorization::startRowL ( ) const
inline

Start of each row in L.

Definition at line 177 of file CoinFactorization.hpp.

CoinBigIndex* CoinFactorization::startColumnL ( ) const
inline

Start of each column in L.

Definition at line 181 of file CoinFactorization.hpp.

int* CoinFactorization::indexColumnL ( ) const
inline

Index of column in row for L.

Definition at line 185 of file CoinFactorization.hpp.

int* CoinFactorization::indexRowL ( ) const
inline

Row indices of L.

Definition at line 189 of file CoinFactorization.hpp.

CoinFactorizationDouble* CoinFactorization::elementByRowL ( ) const
inline

Elements in L (row copy)

Definition at line 193 of file CoinFactorization.hpp.

int CoinFactorization::numberRowsExtra ( ) const
inline

Number of Rows after iterating.

Definition at line 197 of file CoinFactorization.hpp.

void CoinFactorization::setNumberRows ( int  value)
inline

Set number of Rows after factorization.

Definition at line 201 of file CoinFactorization.hpp.

int CoinFactorization::numberRows ( ) const
inline

Number of Rows after factorization.

Definition at line 204 of file CoinFactorization.hpp.

CoinBigIndex CoinFactorization::numberL ( ) const
inline

Number in L.

Definition at line 208 of file CoinFactorization.hpp.

CoinBigIndex CoinFactorization::baseL ( ) const
inline

Base of L.

Definition at line 212 of file CoinFactorization.hpp.

int CoinFactorization::maximumRowsExtra ( ) const
inline

Maximum of Rows after iterating.

Definition at line 215 of file CoinFactorization.hpp.

int CoinFactorization::numberColumns ( ) const
inline

Total number of columns in factorization.

Definition at line 219 of file CoinFactorization.hpp.

int CoinFactorization::numberElements ( ) const
inline

Total number of elements in factorization.

Definition at line 223 of file CoinFactorization.hpp.

int CoinFactorization::numberForrestTomlin ( ) const
inline

Length of FT vector.

Definition at line 227 of file CoinFactorization.hpp.

int CoinFactorization::numberGoodColumns ( ) const
inline

Number of good columns in factorization.

Definition at line 231 of file CoinFactorization.hpp.

double CoinFactorization::areaFactor ( ) const
inline

Whether larger areas needed.

Definition at line 235 of file CoinFactorization.hpp.

void CoinFactorization::areaFactor ( double  value)
inline

Definition at line 238 of file CoinFactorization.hpp.

double CoinFactorization::adjustedAreaFactor ( ) const

Returns areaFactor but adjusted for dense.

void CoinFactorization::relaxAccuracyCheck ( double  value)
inline

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

Definition at line 244 of file CoinFactorization.hpp.

double CoinFactorization::getAccuracyCheck ( ) const
inline

Definition at line 246 of file CoinFactorization.hpp.

int CoinFactorization::messageLevel ( ) const
inline

Level of detail of messages.

Definition at line 249 of file CoinFactorization.hpp.

void CoinFactorization::messageLevel ( int  value)
int CoinFactorization::maximumPivots ( ) const
inline

Maximum number of pivots between factorizations.

Definition at line 254 of file CoinFactorization.hpp.

void CoinFactorization::maximumPivots ( int  value)
int CoinFactorization::denseThreshold ( ) const
inline

Gets dense threshold.

Definition at line 260 of file CoinFactorization.hpp.

void CoinFactorization::setDenseThreshold ( int  value)
inline

Sets dense threshold.

Definition at line 263 of file CoinFactorization.hpp.

double CoinFactorization::pivotTolerance ( ) const
inline

Pivot tolerance.

Definition at line 266 of file CoinFactorization.hpp.

void CoinFactorization::pivotTolerance ( double  value)
double CoinFactorization::zeroTolerance ( ) const
inline

Zero tolerance.

Definition at line 271 of file CoinFactorization.hpp.

void CoinFactorization::zeroTolerance ( double  value)
double CoinFactorization::slackValue ( ) const
inline

Whether slack value is +1 or -1.

Definition at line 277 of file CoinFactorization.hpp.

void CoinFactorization::slackValue ( double  value)
double CoinFactorization::maximumCoefficient ( ) const

Returns maximum absolute value in factorization.

bool CoinFactorization::forrestTomlin ( ) const
inline

true if Forrest Tomlin update, false if PFI

Definition at line 285 of file CoinFactorization.hpp.

void CoinFactorization::setForrestTomlin ( bool  value)
inline

Definition at line 287 of file CoinFactorization.hpp.

bool CoinFactorization::spaceForForrestTomlin ( ) const
inline

True if FT update and space.

Definition at line 290 of file CoinFactorization.hpp.

int CoinFactorization::numberDense ( ) const
inline

Returns number of dense rows.

Definition at line 302 of file CoinFactorization.hpp.

CoinBigIndex CoinFactorization::numberElementsU ( ) const
inline

Returns number in U area.

Definition at line 306 of file CoinFactorization.hpp.

void CoinFactorization::setNumberElementsU ( CoinBigIndex  value)
inline

Setss number in U area.

Definition at line 310 of file CoinFactorization.hpp.

CoinBigIndex CoinFactorization::lengthAreaU ( ) const
inline

Returns length of U area.

Definition at line 313 of file CoinFactorization.hpp.

CoinBigIndex CoinFactorization::numberElementsL ( ) const
inline

Returns number in L area.

Definition at line 317 of file CoinFactorization.hpp.

CoinBigIndex CoinFactorization::lengthAreaL ( ) const
inline

Returns length of L area.

Definition at line 321 of file CoinFactorization.hpp.

CoinBigIndex CoinFactorization::numberElementsR ( ) const
inline

Returns number in R area.

Definition at line 325 of file CoinFactorization.hpp.

CoinBigIndex CoinFactorization::numberCompressions ( ) const
inline

Number of compressions done.

Definition at line 329 of file CoinFactorization.hpp.

int* CoinFactorization::numberInRow ( ) const
inline

Number of entries in each row.

Definition at line 332 of file CoinFactorization.hpp.

int* CoinFactorization::numberInColumn ( ) const
inline

Number of entries in each column.

Definition at line 335 of file CoinFactorization.hpp.

CoinFactorizationDouble* CoinFactorization::elementU ( ) const
inline

Elements of U.

Definition at line 338 of file CoinFactorization.hpp.

int* CoinFactorization::indexRowU ( ) const
inline

Row indices of U.

Definition at line 341 of file CoinFactorization.hpp.

CoinBigIndex* CoinFactorization::startColumnU ( ) const
inline

Start of each column in U.

Definition at line 344 of file CoinFactorization.hpp.

int CoinFactorization::maximumColumnsExtra ( )
inline

Maximum number of Columns after iterating.

Definition at line 347 of file CoinFactorization.hpp.

int CoinFactorization::biasLU ( ) const
inline

L to U bias 0 - U bias, 1 - some U bias, 2 some L bias, 3 L bias.

Definition at line 352 of file CoinFactorization.hpp.

void CoinFactorization::setBiasLU ( int  value)
inline

Definition at line 354 of file CoinFactorization.hpp.

int CoinFactorization::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 361 of file CoinFactorization.hpp.

void CoinFactorization::setPersistenceFlag ( int  value)
int CoinFactorization::replaceColumn ( CoinIndexedVector regionSparse,
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

void CoinFactorization::replaceColumnU ( CoinIndexedVector regionSparse,
CoinBigIndex deleted,
int  internalPivotRow 
)

Combines BtranU and delete elements If deleted is NULL then delete elements otherwise store where elements are.

int CoinFactorization::updateColumnFT ( CoinIndexedVector regionSparse,
CoinIndexedVector regionSparse2 
)

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

Note - if regionSparse2 packed on input - will be packed on output

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

This version has same effect as above with FTUpdate==false so number returned is always >=0.

int CoinFactorization::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 CoinFactorization::updateColumnTranspose ( CoinIndexedVector regionSparse,
CoinIndexedVector regionSparse2 
) const

Updates one column (BTRAN) from regionSparse2 regionSparse starts as zero and is zero at end Note - if regionSparse2 packed on input - will be packed on output.

void CoinFactorization::goSparse ( )

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

int CoinFactorization::sparseThreshold ( ) const
inline

get sparse threshold

Definition at line 521 of file CoinFactorization.hpp.

void CoinFactorization::sparseThreshold ( int  value)

set sparse threshold

void CoinFactorization::clearArrays ( )
inline

Get rid of all memory.

Definition at line 532 of file CoinFactorization.hpp.

int CoinFactorization::add ( CoinBigIndex  numberElements,
int  indicesRow[],
int  indicesColumn[],
double  elements[] 
)

Adds given elements to Basis and updates factorization, can increase size of basis.

Returns rank

int CoinFactorization::addColumn ( CoinBigIndex  numberElements,
int  indicesRow[],
double  elements[] 
)

Adds one Column to basis, can increase size of basis.

Returns rank

int CoinFactorization::addRow ( CoinBigIndex  numberElements,
int  indicesColumn[],
double  elements[] 
)

Adds one Row to basis, can increase size of basis.

Returns rank

int CoinFactorization::deleteColumn ( int  Row)

Deletes one Column from basis, returns rank.

int CoinFactorization::deleteRow ( int  Row)

Deletes one Row from basis, returns rank.

int CoinFactorization::replaceRow ( int  whichRow,
int  numberElements,
const int  indicesColumn[],
const double  elements[] 
)

Replaces one Row in basis, At present assumes just a singleton on row is in basis returns 0=OK, 1=Probably OK, 2=singular, 3 no space.

void CoinFactorization::emptyRows ( int  numberToEmpty,
const int  which[] 
)

Takes out all entries for given rows.

void CoinFactorization::checkSparse ( )

See if worth going sparse.

bool CoinFactorization::collectStatistics ( ) const
inline

For statistics.

Definition at line 579 of file CoinFactorization.hpp.

void CoinFactorization::setCollectStatistics ( bool  onOff) const
inline

For statistics.

Definition at line 582 of file CoinFactorization.hpp.

void CoinFactorization::gutsOfDestructor ( int  type = 1)

The real work of constructors etc 0 just scalars, 1 bit normal.

void CoinFactorization::gutsOfInitialize ( int  type)

1 bit - tolerances etc, 2 more, 4 dummy arrays

void CoinFactorization::gutsOfCopy ( const CoinFactorization other)
void CoinFactorization::resetStatistics ( )

Reset all sparsity etc statistics.

void CoinFactorization::getAreas ( int  numberRows,
int  numberColumns,
CoinBigIndex  maximumL,
CoinBigIndex  maximumU 
)

Gets space for a factorization, called by constructors.

void CoinFactorization::preProcess ( int  state,
int  possibleDuplicates = -1 
)

PreProcesses raw triplet data.

state is 0 - triplets, 1 - some counts etc , 2 - ..

int CoinFactorization::factor ( )

Does most of factorization.

int CoinFactorization::factorSparse ( )
protected

Does sparse phase of factorization return code is <0 error, 0= finished.

int CoinFactorization::factorSparseSmall ( )
protected

Does sparse phase of factorization (for smaller problems) return code is <0 error, 0= finished.

int CoinFactorization::factorSparseLarge ( )
protected

Does sparse phase of factorization (for larger problems) return code is <0 error, 0= finished.

int CoinFactorization::factorDense ( )
protected

Does dense phase of factorization return code is <0 error, 0= finished.

bool CoinFactorization::pivotOneOtherRow ( int  pivotRow,
int  pivotColumn 
)
protected

Pivots when just one other row so faster?

bool CoinFactorization::pivotRowSingleton ( int  pivotRow,
int  pivotColumn 
)
protected

Does one pivot on Row Singleton in factorization.

bool CoinFactorization::pivotColumnSingleton ( int  pivotRow,
int  pivotColumn 
)
protected

Does one pivot on Column Singleton in factorization.

bool CoinFactorization::getColumnSpace ( int  iColumn,
int  extraNeeded 
)
protected

Gets space for one Column with given length, may have to do compression (returns True if successful), also moves existing vector, extraNeeded is over and above present.

bool CoinFactorization::reorderU ( )
protected

Reorders U so contiguous and in order (if there is space) Returns true if it could.

bool CoinFactorization::getColumnSpaceIterateR ( int  iColumn,
double  value,
int  iRow 
)
protected

getColumnSpaceIterateR.

Gets space for one extra R element in Column may have to do compression (returns true) also moves existing vector

CoinBigIndex CoinFactorization::getColumnSpaceIterate ( int  iColumn,
double  value,
int  iRow 
)
protected

getColumnSpaceIterate.

Gets space for one extra U element in Column may have to do compression (returns true) also moves existing vector. Returns -1 if no memory or where element was put Used by replaceRow (turns off R version)

bool CoinFactorization::getRowSpace ( int  iRow,
int  extraNeeded 
)
protected

Gets space for one Row with given length,

may have to do compression (returns True if successful), also moves existing vector

bool CoinFactorization::getRowSpaceIterate ( int  iRow,
int  extraNeeded 
)
protected

Gets space for one Row with given length while iterating,

may have to do compression (returns True if successful), also moves existing vector

void CoinFactorization::checkConsistency ( )
protected

Checks that row and column copies look OK.

void CoinFactorization::addLink ( int  index,
int  count 
)
inlineprotected

Adds a link in chain of equal counts.

Definition at line 669 of file CoinFactorization.hpp.

void CoinFactorization::deleteLink ( int  index)
inlineprotected

Deletes a link in chain of equal counts.

Definition at line 685 of file CoinFactorization.hpp.

void CoinFactorization::separateLinks ( int  count,
bool  rowsFirst 
)
protected

Separate out links with same row/column count.

void CoinFactorization::cleanup ( )
protected

Cleans up at end of factorization.

void CoinFactorization::updateColumnL ( CoinIndexedVector region,
int *  indexIn 
) const
protected

Updates part of column (FTRANL)

void CoinFactorization::updateColumnLDensish ( CoinIndexedVector region,
int *  indexIn 
) const
protected

Updates part of column (FTRANL) when densish.

void CoinFactorization::updateColumnLSparse ( CoinIndexedVector region,
int *  indexIn 
) const
protected

Updates part of column (FTRANL) when sparse.

void CoinFactorization::updateColumnLSparsish ( CoinIndexedVector region,
int *  indexIn 
) const
protected

Updates part of column (FTRANL) when sparsish.

void CoinFactorization::updateColumnR ( CoinIndexedVector region) const
protected

Updates part of column (FTRANR) without FT update.

void CoinFactorization::updateColumnRFT ( CoinIndexedVector region,
int *  indexIn 
)
protected

Updates part of column (FTRANR) with FT update.

Also stores update after L and R

void CoinFactorization::updateColumnU ( CoinIndexedVector region,
int *  indexIn 
) const
protected

Updates part of column (FTRANU)

void CoinFactorization::updateColumnUSparse ( CoinIndexedVector regionSparse,
int *  indexIn 
) const
protected

Updates part of column (FTRANU) when sparse.

void CoinFactorization::updateColumnUSparsish ( CoinIndexedVector regionSparse,
int *  indexIn 
) const
protected

Updates part of column (FTRANU) when sparsish.

int CoinFactorization::updateColumnUDensish ( double *COIN_RESTRICT  region,
int *COIN_RESTRICT  regionIndex 
) const
protected

Updates part of column (FTRANU)

void CoinFactorization::updateTwoColumnsUDensish ( int &  numberNonZero1,
double *COIN_RESTRICT  region1,
int *COIN_RESTRICT  index1,
int &  numberNonZero2,
double *COIN_RESTRICT  region2,
int *COIN_RESTRICT  index2 
) const
protected

Updates part of 2 columns (FTRANU) real work.

void CoinFactorization::updateColumnPFI ( CoinIndexedVector regionSparse) const
protected

Updates part of column PFI (FTRAN) (after rest)

void CoinFactorization::permuteBack ( CoinIndexedVector regionSparse,
CoinIndexedVector outVector 
) const
protected

Permutes back at end of updateColumn.

void CoinFactorization::updateColumnTransposePFI ( CoinIndexedVector region) const
protected

Updates part of column transpose PFI (BTRAN) (before rest)

void CoinFactorization::updateColumnTransposeU ( CoinIndexedVector region,
int  smallestIndex 
) const
protected

Updates part of column transpose (BTRANU), assumes index is sorted i.e.

region is correct

void CoinFactorization::updateColumnTransposeUSparsish ( CoinIndexedVector region,
int  smallestIndex 
) const
protected

Updates part of column transpose (BTRANU) when sparsish, assumes index is sorted i.e.

region is correct

void CoinFactorization::updateColumnTransposeUDensish ( CoinIndexedVector region,
int  smallestIndex 
) const
protected

Updates part of column transpose (BTRANU) when densish, assumes index is sorted i.e.

region is correct

void CoinFactorization::updateColumnTransposeUSparse ( CoinIndexedVector region) const
protected

Updates part of column transpose (BTRANU) when sparse, assumes index is sorted i.e.

region is correct

void CoinFactorization::updateColumnTransposeUByColumn ( CoinIndexedVector region,
int  smallestIndex 
) const
protected

Updates part of column transpose (BTRANU) by column assumes index is sorted i.e.

region is correct

void CoinFactorization::updateColumnTransposeR ( CoinIndexedVector region) const
protected

Updates part of column transpose (BTRANR)

void CoinFactorization::updateColumnTransposeRDensish ( CoinIndexedVector region) const
protected

Updates part of column transpose (BTRANR) when dense.

void CoinFactorization::updateColumnTransposeRSparse ( CoinIndexedVector region) const
protected

Updates part of column transpose (BTRANR) when sparse.

void CoinFactorization::updateColumnTransposeL ( CoinIndexedVector region) const
protected

Updates part of column transpose (BTRANL)

void CoinFactorization::updateColumnTransposeLDensish ( CoinIndexedVector region) const
protected

Updates part of column transpose (BTRANL) when densish by column.

void CoinFactorization::updateColumnTransposeLByRow ( CoinIndexedVector region) const
protected

Updates part of column transpose (BTRANL) when densish by row.

void CoinFactorization::updateColumnTransposeLSparsish ( CoinIndexedVector region) const
protected

Updates part of column transpose (BTRANL) when sparsish by row.

void CoinFactorization::updateColumnTransposeLSparse ( CoinIndexedVector region) const
protected

Updates part of column transpose (BTRANL) when sparse (by Row)

int CoinFactorization::replaceColumnPFI ( CoinIndexedVector regionSparse,
int  pivotRow,
double  alpha 
)

Replaces one Column to basis for PFI returns 0=OK, 1=Probably OK, 2=singular, 3=no room.

In this case region is not empty - it is incoming variable (updated)

int CoinFactorization::checkPivot ( double  saveFromU,
double  oldPivot 
) const
protected

Returns accuracy status of replaceColumn returns 0=OK, 1=Probably OK, 2=singular.

template<class T >
bool CoinFactorization::pivot ( int  pivotRow,
int  pivotColumn,
CoinBigIndex  pivotRowPosition,
CoinBigIndex  pivotColumnPosition,
CoinFactorizationDouble  work[],
unsigned int  workArea2[],
int  increment2,
markRow[],
int  largeInteger 
)
inlineprotected

Definition at line 812 of file CoinFactorization.hpp.

Friends And Related Function Documentation

void CoinFactorizationUnitTest ( const std::string &  mpsDir)
friend

Member Data Documentation

double CoinFactorization::pivotTolerance_
protected

Pivot tolerance.

Definition at line 1296 of file CoinFactorization.hpp.

double CoinFactorization::zeroTolerance_
protected

Zero tolerance.

Definition at line 1298 of file CoinFactorization.hpp.

double CoinFactorization::slackValue_
protected

Whether slack value is +1 or -1.

Definition at line 1301 of file CoinFactorization.hpp.

double CoinFactorization::areaFactor_
protected

How much to multiply areas by.

Definition at line 1308 of file CoinFactorization.hpp.

double CoinFactorization::relaxCheck_
protected

Relax check on accuracy in replaceColumn.

Definition at line 1310 of file CoinFactorization.hpp.

int CoinFactorization::numberRows_
protected

Number of Rows in factorization.

Definition at line 1312 of file CoinFactorization.hpp.

int CoinFactorization::numberRowsExtra_
protected

Number of Rows after iterating.

Definition at line 1314 of file CoinFactorization.hpp.

int CoinFactorization::maximumRowsExtra_
protected

Maximum number of Rows after iterating.

Definition at line 1316 of file CoinFactorization.hpp.

int CoinFactorization::numberColumns_
protected

Number of Columns in factorization.

Definition at line 1318 of file CoinFactorization.hpp.

int CoinFactorization::numberColumnsExtra_
protected

Number of Columns after iterating.

Definition at line 1320 of file CoinFactorization.hpp.

int CoinFactorization::maximumColumnsExtra_
protected

Maximum number of Columns after iterating.

Definition at line 1322 of file CoinFactorization.hpp.

int CoinFactorization::numberGoodU_
protected

Number factorized in U (not row singletons)

Definition at line 1324 of file CoinFactorization.hpp.

int CoinFactorization::numberGoodL_
protected

Number factorized in L.

Definition at line 1326 of file CoinFactorization.hpp.

int CoinFactorization::maximumPivots_
protected

Maximum number of pivots before factorization.

Definition at line 1328 of file CoinFactorization.hpp.

int CoinFactorization::numberPivots_
protected

Number pivots since last factorization.

Definition at line 1330 of file CoinFactorization.hpp.

CoinBigIndex CoinFactorization::totalElements_
protected

Number of elements in U (to go) or while iterating total overall.

Definition at line 1333 of file CoinFactorization.hpp.

CoinBigIndex CoinFactorization::factorElements_
protected

Number of elements after factorization.

Definition at line 1335 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::pivotColumn_
protected

Pivot order for each Column.

Definition at line 1337 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::permute_
protected

Permutation vector for pivot row order.

Definition at line 1339 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::permuteBack_
protected

DePermutation vector for pivot row order.

Definition at line 1341 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::pivotColumnBack_
protected

Inverse Pivot order for each Column.

Definition at line 1343 of file CoinFactorization.hpp.

int CoinFactorization::status_
protected

Status of factorization.

Definition at line 1345 of file CoinFactorization.hpp.

int CoinFactorization::numberTrials_
protected

0 - no increasing rows - no permutations, 1 - no increasing rows but permutations 2 - increasing rows

  • taken out as always 2 Number of trials before rejection

Definition at line 1354 of file CoinFactorization.hpp.

CoinBigIndexArrayWithLength CoinFactorization::startRowU_
protected

Start of each Row as pointer.

Definition at line 1356 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::numberInRow_
protected

Number in each Row.

Definition at line 1359 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::numberInColumn_
protected

Number in each Column.

Definition at line 1362 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::numberInColumnPlus_
protected

Number in each Column including pivoted.

Definition at line 1365 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::firstCount_
protected

First Row/Column with count of k, can tell which by offset - Rows then Columns.

Definition at line 1369 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::nextCount_
protected

Next Row/Column with count.

Definition at line 1372 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::lastCount_
protected

Previous Row/Column with count.

Definition at line 1375 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::nextColumn_
protected

Next Column in memory order.

Definition at line 1378 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::lastColumn_
protected

Previous Column in memory order.

Definition at line 1381 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::nextRow_
protected

Next Row in memory order.

Definition at line 1384 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::lastRow_
protected

Previous Row in memory order.

Definition at line 1387 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::saveColumn_
protected

Columns left to do in a single pivot.

Definition at line 1390 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::markRow_
protected

Marks rows to be updated.

Definition at line 1393 of file CoinFactorization.hpp.

int CoinFactorization::messageLevel_
protected

Detail in messages.

Definition at line 1396 of file CoinFactorization.hpp.

int CoinFactorization::biggerDimension_
protected

Larger of row and column size.

Definition at line 1399 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::indexColumnU_
protected

Base address for U (may change)

Definition at line 1402 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::pivotRowL_
protected

Pivots for L.

Definition at line 1405 of file CoinFactorization.hpp.

CoinFactorizationDoubleArrayWithLength CoinFactorization::pivotRegion_
protected

Inverses of pivot values.

Definition at line 1408 of file CoinFactorization.hpp.

int CoinFactorization::numberSlacks_
protected

Number of slacks at beginning of U.

Definition at line 1411 of file CoinFactorization.hpp.

int CoinFactorization::numberU_
protected

Number in U.

Definition at line 1414 of file CoinFactorization.hpp.

CoinBigIndex CoinFactorization::maximumU_
protected

Maximum space used in U.

Definition at line 1417 of file CoinFactorization.hpp.

CoinBigIndex CoinFactorization::lengthU_
protected

Base of U is always 0.

Length of U

Definition at line 1423 of file CoinFactorization.hpp.

CoinBigIndex CoinFactorization::lengthAreaU_
protected

Length of area reserved for U.

Definition at line 1426 of file CoinFactorization.hpp.

CoinFactorizationDoubleArrayWithLength CoinFactorization::elementU_
protected

Elements of U.

Definition at line 1429 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::indexRowU_
protected

Row indices of U.

Definition at line 1432 of file CoinFactorization.hpp.

CoinBigIndexArrayWithLength CoinFactorization::startColumnU_
protected

Start of each column in U.

Definition at line 1435 of file CoinFactorization.hpp.

CoinBigIndexArrayWithLength CoinFactorization::convertRowToColumnU_
protected

Converts rows to columns in U.

Definition at line 1438 of file CoinFactorization.hpp.

CoinBigIndex CoinFactorization::numberL_
protected

Number in L.

Definition at line 1441 of file CoinFactorization.hpp.

CoinBigIndex CoinFactorization::baseL_
protected

Base of L.

Definition at line 1444 of file CoinFactorization.hpp.

CoinBigIndex CoinFactorization::lengthL_
protected

Length of L.

Definition at line 1447 of file CoinFactorization.hpp.

CoinBigIndex CoinFactorization::lengthAreaL_
protected

Length of area reserved for L.

Definition at line 1450 of file CoinFactorization.hpp.

CoinFactorizationDoubleArrayWithLength CoinFactorization::elementL_
protected

Elements of L.

Definition at line 1453 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::indexRowL_
protected

Row indices of L.

Definition at line 1456 of file CoinFactorization.hpp.

CoinBigIndexArrayWithLength CoinFactorization::startColumnL_
protected

Start of each column in L.

Definition at line 1459 of file CoinFactorization.hpp.

bool CoinFactorization::doForrestTomlin_
protected

true if Forrest Tomlin update, false if PFI

Definition at line 1462 of file CoinFactorization.hpp.

int CoinFactorization::numberR_
protected

Number in R.

Definition at line 1465 of file CoinFactorization.hpp.

CoinBigIndex CoinFactorization::lengthR_
protected

Length of R stuff.

Definition at line 1468 of file CoinFactorization.hpp.

CoinBigIndex CoinFactorization::lengthAreaR_
protected

length of area reserved for R

Definition at line 1471 of file CoinFactorization.hpp.

CoinFactorizationDouble* CoinFactorization::elementR_
protected

Elements of R.

Definition at line 1474 of file CoinFactorization.hpp.

int* CoinFactorization::indexRowR_
protected

Row indices for R.

Definition at line 1477 of file CoinFactorization.hpp.

CoinBigIndexArrayWithLength CoinFactorization::startColumnR_
protected

Start of columns for R.

Definition at line 1480 of file CoinFactorization.hpp.

double* CoinFactorization::denseArea_
protected

Dense area.

Definition at line 1483 of file CoinFactorization.hpp.

double* CoinFactorization::denseAreaAddress_
protected

Dense area - actually used (for alignment etc)

Definition at line 1486 of file CoinFactorization.hpp.

int* CoinFactorization::densePermute_
protected

Dense permutation.

Definition at line 1489 of file CoinFactorization.hpp.

int CoinFactorization::numberDense_
protected

Number of dense rows.

Definition at line 1492 of file CoinFactorization.hpp.

int CoinFactorization::denseThreshold_
protected

Dense threshold.

Definition at line 1495 of file CoinFactorization.hpp.

CoinFactorizationDoubleArrayWithLength CoinFactorization::workArea_
protected

First work area.

Definition at line 1498 of file CoinFactorization.hpp.

CoinUnsignedIntArrayWithLength CoinFactorization::workArea2_
protected

Second work area.

Definition at line 1501 of file CoinFactorization.hpp.

CoinBigIndex CoinFactorization::numberCompressions_
protected

Number of compressions done.

Definition at line 1504 of file CoinFactorization.hpp.

double CoinFactorization::ftranCountInput_
mutable

Below are all to collect.

Definition at line 1508 of file CoinFactorization.hpp.

double CoinFactorization::ftranCountAfterL_
mutable

Definition at line 1509 of file CoinFactorization.hpp.

double CoinFactorization::ftranCountAfterR_
mutable

Definition at line 1510 of file CoinFactorization.hpp.

double CoinFactorization::ftranCountAfterU_
mutable

Definition at line 1511 of file CoinFactorization.hpp.

double CoinFactorization::btranCountInput_
mutable

Definition at line 1512 of file CoinFactorization.hpp.

double CoinFactorization::btranCountAfterU_
mutable

Definition at line 1513 of file CoinFactorization.hpp.

double CoinFactorization::btranCountAfterR_
mutable

Definition at line 1514 of file CoinFactorization.hpp.

double CoinFactorization::btranCountAfterL_
mutable

Definition at line 1515 of file CoinFactorization.hpp.

int CoinFactorization::numberFtranCounts_
mutable

We can roll over factorizations.

Definition at line 1518 of file CoinFactorization.hpp.

int CoinFactorization::numberBtranCounts_
mutable

Definition at line 1519 of file CoinFactorization.hpp.

double CoinFactorization::ftranAverageAfterL_

While these are average ratios collected over last period.

Definition at line 1522 of file CoinFactorization.hpp.

double CoinFactorization::ftranAverageAfterR_

Definition at line 1523 of file CoinFactorization.hpp.

double CoinFactorization::ftranAverageAfterU_

Definition at line 1524 of file CoinFactorization.hpp.

double CoinFactorization::btranAverageAfterU_

Definition at line 1525 of file CoinFactorization.hpp.

double CoinFactorization::btranAverageAfterR_

Definition at line 1526 of file CoinFactorization.hpp.

double CoinFactorization::btranAverageAfterL_

Definition at line 1527 of file CoinFactorization.hpp.

int CoinFactorization::sparseThreshold_
protected

Below this use sparse technology - if 0 then no L row copy.

Definition at line 1538 of file CoinFactorization.hpp.

int CoinFactorization::sparseThreshold2_
protected

And one for "sparsish".

Definition at line 1541 of file CoinFactorization.hpp.

CoinBigIndexArrayWithLength CoinFactorization::startRowL_
protected

Start of each row in L.

Definition at line 1544 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::indexColumnL_
protected

Index of column in row for L.

Definition at line 1547 of file CoinFactorization.hpp.

CoinFactorizationDoubleArrayWithLength CoinFactorization::elementByRowL_
protected

Elements in L (row copy)

Definition at line 1550 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::sparse_
mutableprotected

Sparse regions.

Definition at line 1553 of file CoinFactorization.hpp.

int CoinFactorization::biasLU_
protected

L to U bias 0 - U bias, 1 - some U bias, 2 some L bias, 3 L bias.

Definition at line 1557 of file CoinFactorization.hpp.

int CoinFactorization::persistenceFlag_
protected

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 1563 of file CoinFactorization.hpp.


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