Clp 1.17.6

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

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:
[legend]

## 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...
CoinFactorization & | operator= (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, int numberElements, int maximumL, int 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, int 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...
CoinFactorizationDouble * | pivotRegion () 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...
int * | startRowL () const
| Start of each row in L. More...
int * | startColumnL () 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...
CoinFactorizationDouble * | elementByRowL () 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...
int | numberL () const
| Number in L. More...
int | 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...
int | numberElementsU () const
| Returns number in U area. More...
void | setNumberElementsU (int value)
| Setss number in U area. More...
int | lengthAreaU () const
| Returns length of U area. More...
int | numberElementsL () const
| Returns number in L area. More...
int | lengthAreaL () const
| Returns length of L area. More...
int | numberElementsR () const
| Returns number in R area. More...
int | 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...
CoinFactorizationDouble * | elementU () const
| Elements of U. More...
int * | indexRowU () const
| Row indices of U. More...
int * | startColumnU () 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, int *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 | updateOneColumnTranspose (CoinIndexedVector *regionWork, int &statistics) const
| Part of twocolumnsTranspose. More...
void | updateTwoColumnsTranspose (CoinIndexedVector *regionSparse, CoinIndexedVector *regionSparse2, CoinIndexedVector *regionSparse3, int type) const
| Updates two columns (BTRAN) from regionSparse2 and 3 regionSparse starts as zero and is zero at end Note - if regionSparse2 packed on input - will be packed on output - same for 3. 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 (int numberElements, int indicesRow[], int indicesColumn[], double elements[])
| Adds given elements to Basis and updates factorization, can increase size of basis. More...
int | addColumn (int numberElements, int indicesRow[], double elements[])
| Adds one Column to basis, can increase size of basis. More...
int | addRow (int 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, int maximumL, int 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...
int | 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, int pivotRowPosition, int 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...
int | totalElements_
| Number of elements in U (to go) or while iterating total overall. More...
int | 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...
CoinIntArrayWithLength | 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...
int | maximumU_
| Maximum space used in U. More...
int | lengthU_
| Base of U is always 0. More...
int | lengthAreaU_
| Length of area reserved for U. More...
CoinFactorizationDoubleArrayWithLength | elementU_
| Elements of U. More...
CoinIntArrayWithLength | indexRowU_
| Row indices of U. More...
CoinIntArrayWithLength | startColumnU_
| Start of each column in U. More...
CoinIntArrayWithLength | convertRowToColumnU_
| Converts rows to columns in U. More...
int | numberL_
| Number in L. More...
int | baseL_
| Base of L. More...
int | lengthL_
| Length of L. More...
int | lengthAreaL_
| Length of area reserved for L. More...
CoinFactorizationDoubleArrayWithLength | elementL_
| Elements of L. More...
CoinIntArrayWithLength | indexRowL_
| Row indices of L. More...
CoinIntArrayWithLength | 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...
int | lengthR_
| Length of R stuff. More...
int | lengthAreaR_
| length of area reserved for R More...
CoinFactorizationDouble * | elementR_
| Elements of R. More...
int * | indexRowR_
| Row indices for R. More...
CoinIntArrayWithLength | 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...
int | 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...
CoinIntArrayWithLength | 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,
|  | int | numberElements,
|  | int | maximumL,
|  | int | 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,
|  | int | 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 136 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 146 of file CoinFactorization.hpp.

void CoinFactorization::setPivots | ( | int | value | ) |
| inline

Sets number of pivots since factorization.

Definition at line 151 of file CoinFactorization.hpp.

int* CoinFactorization::permute | ( |  | ) | const
| inline

Returns address of permute region.

Definition at line 156 of file CoinFactorization.hpp.

int* CoinFactorization::pivotColumn | ( |  | ) | const
| inline

Returns address of pivotColumn region (also used for permuting)

Definition at line 161 of file CoinFactorization.hpp.

CoinFactorizationDouble* CoinFactorization::pivotRegion | ( |  | ) | const
| inline

Returns address of pivot region.

Definition at line 166 of file CoinFactorization.hpp.

int* CoinFactorization::permuteBack | ( |  | ) | const
| inline

Returns address of permuteBack region.

Definition at line 171 of file CoinFactorization.hpp.

int* CoinFactorization::lastRow | ( |  | ) | const
| inline

Returns address of lastRow region.

Definition at line 176 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 182 of file CoinFactorization.hpp.

int* CoinFactorization::startRowL | ( |  | ) | const
| inline

Start of each row in L.

Definition at line 188 of file CoinFactorization.hpp.

int* CoinFactorization::startColumnL | ( |  | ) | const
| inline

Start of each column in L.

Definition at line 194 of file CoinFactorization.hpp.

int* CoinFactorization::indexColumnL | ( |  | ) | const
| inline

Index of column in row for L.

Definition at line 200 of file CoinFactorization.hpp.

int* CoinFactorization::indexRowL | ( |  | ) | const
| inline

Row indices of L.

Definition at line 206 of file CoinFactorization.hpp.

CoinFactorizationDouble* CoinFactorization::elementByRowL | ( |  | ) | const
| inline

Elements in L (row copy)

Definition at line 212 of file CoinFactorization.hpp.

int CoinFactorization::numberRowsExtra | ( |  | ) | const
| inline

Number of Rows after iterating.

Definition at line 218 of file CoinFactorization.hpp.

void CoinFactorization::setNumberRows | ( | int | value | ) |
| inline

Set number of Rows after factorization.

Definition at line 223 of file CoinFactorization.hpp.

int CoinFactorization::numberRows | ( |  | ) | const
| inline

Number of Rows after factorization.

Definition at line 228 of file CoinFactorization.hpp.

int CoinFactorization::numberL | ( |  | ) | const
| inline

Number in L.

Definition at line 233 of file CoinFactorization.hpp.

int CoinFactorization::baseL | ( |  | ) | const
| inline

Base of L.

Definition at line 239 of file CoinFactorization.hpp.

int CoinFactorization::maximumRowsExtra | ( |  | ) | const
| inline

Maximum of Rows after iterating.

Definition at line 244 of file CoinFactorization.hpp.

int CoinFactorization::numberColumns | ( |  | ) | const
| inline

Total number of columns in factorization.

Definition at line 249 of file CoinFactorization.hpp.

int CoinFactorization::numberElements | ( |  | ) | const
| inline

Total number of elements in factorization.

Definition at line 254 of file CoinFactorization.hpp.

int CoinFactorization::numberForrestTomlin | ( |  | ) | const
| inline

Length of FT vector.

Definition at line 259 of file CoinFactorization.hpp.

int CoinFactorization::numberGoodColumns | ( |  | ) | const
| inline

Number of good columns in factorization.

Definition at line 264 of file CoinFactorization.hpp.

double CoinFactorization::areaFactor | ( |  | ) | const
| inline

Whether larger areas needed.

Definition at line 269 of file CoinFactorization.hpp.

void CoinFactorization::areaFactor | ( | double | value | ) |
| inline

Definition at line 273 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 280 of file CoinFactorization.hpp.

double CoinFactorization::getAccuracyCheck | ( |  | ) | const
| inline

Definition at line 284 of file CoinFactorization.hpp.

int CoinFactorization::messageLevel | ( |  | ) | const
| inline

Level of detail of messages.

Definition at line 289 of file CoinFactorization.hpp.

void CoinFactorization::messageLevel | ( | int | value | ) |

int CoinFactorization::maximumPivots | ( |  | ) | const
| inline

Maximum number of pivots between factorizations.

Definition at line 295 of file CoinFactorization.hpp.

void CoinFactorization::maximumPivots | ( | int | value | ) |

int CoinFactorization::denseThreshold | ( |  | ) | const
| inline

Gets dense threshold.

Definition at line 302 of file CoinFactorization.hpp.

void CoinFactorization::setDenseThreshold | ( | int | value | ) |
| inline

Sets dense threshold.

Definition at line 307 of file CoinFactorization.hpp.

double CoinFactorization::pivotTolerance | ( |  | ) | const
| inline

Pivot tolerance.

Definition at line 312 of file CoinFactorization.hpp.

void CoinFactorization::pivotTolerance | ( | double | value | ) |

double CoinFactorization::zeroTolerance | ( |  | ) | const
| inline

Zero tolerance.

Definition at line 318 of file CoinFactorization.hpp.

void CoinFactorization::zeroTolerance | ( | double | value | ) |

double CoinFactorization::slackValue | ( |  | ) | const
| inline

Whether slack value is +1 or -1.

Definition at line 325 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 334 of file CoinFactorization.hpp.

void CoinFactorization::setForrestTomlin | ( | bool | value | ) |
| inline

Definition at line 338 of file CoinFactorization.hpp.

bool CoinFactorization::spaceForForrestTomlin | ( |  | ) | const
| inline

True if FT update and space.

Definition at line 343 of file CoinFactorization.hpp.

int CoinFactorization::numberDense | ( |  | ) | const
| inline

Returns number of dense rows.

Definition at line 355 of file CoinFactorization.hpp.

int CoinFactorization::numberElementsU | ( |  | ) | const
| inline

Returns number in U area.

Definition at line 361 of file CoinFactorization.hpp.

void CoinFactorization::setNumberElementsU | ( | int | value | ) |
| inline

Setss number in U area.

Definition at line 366 of file CoinFactorization.hpp.

int CoinFactorization::lengthAreaU | ( |  | ) | const
| inline

Returns length of U area.

Definition at line 371 of file CoinFactorization.hpp.

int CoinFactorization::numberElementsL | ( |  | ) | const
| inline

Returns number in L area.

Definition at line 376 of file CoinFactorization.hpp.

int CoinFactorization::lengthAreaL | ( |  | ) | const
| inline

Returns length of L area.

Definition at line 381 of file CoinFactorization.hpp.

int CoinFactorization::numberElementsR | ( |  | ) | const
| inline

Returns number in R area.

Definition at line 386 of file CoinFactorization.hpp.

int CoinFactorization::numberCompressions | ( |  | ) | const
| inline

Number of compressions done.

Definition at line 391 of file CoinFactorization.hpp.

int* CoinFactorization::numberInRow | ( |  | ) | const
| inline

Number of entries in each row.

Definition at line 396 of file CoinFactorization.hpp.

int* CoinFactorization::numberInColumn | ( |  | ) | const
| inline

Number of entries in each column.

Definition at line 401 of file CoinFactorization.hpp.

CoinFactorizationDouble* CoinFactorization::elementU | ( |  | ) | const
| inline

Elements of U.

Definition at line 406 of file CoinFactorization.hpp.

int* CoinFactorization::indexRowU | ( |  | ) | const
| inline

Row indices of U.

Definition at line 411 of file CoinFactorization.hpp.

int* CoinFactorization::startColumnU | ( |  | ) | const
| inline

Start of each column in U.

Definition at line 416 of file CoinFactorization.hpp.

int CoinFactorization::maximumColumnsExtra | ( |  | ) |
| inline

Maximum number of Columns after iterating.

Definition at line 421 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 428 of file CoinFactorization.hpp.

void CoinFactorization::setBiasLU | ( | int | value | ) |
| inline

Definition at line 432 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 441 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,
|  | int * | 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::updateOneColumnTranspose | ( | CoinIndexedVector * | regionWork,
|  | int & | statistics
| ) |  | const

Part of twocolumnsTranspose.

void CoinFactorization::updateTwoColumnsTranspose | ( | CoinIndexedVector * | regionSparse,
|  | CoinIndexedVector * | regionSparse2,
|  | CoinIndexedVector * | regionSparse3,
|  | int | type
| ) |  | const

Updates two columns (BTRAN) from regionSparse2 and 3 regionSparse starts as zero and is zero at end Note - if regionSparse2 packed on input - will be packed on output - same for 3.

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

void CoinFactorization::sparseThreshold | ( | int | value | ) |

set sparse threshold

void CoinFactorization::clearArrays | ( |  | ) |
| inline

Get rid of all memory.

Definition at line 646 of file CoinFactorization.hpp.

int CoinFactorization::add | ( | int | 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 | ( | int | numberElements,
|  | int | indicesRow[],
|  | double | elements[]
| ) |  |

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

Returns rank

int CoinFactorization::addRow | ( | int | 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 695 of file CoinFactorization.hpp.

void CoinFactorization::setCollectStatistics | ( | bool | onOff | ) | const
| inline

For statistics.

Definition at line 700 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,
|  | int | maximumL,
|  | int | 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

int 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
| ) |  |
| inline protected

Adds a link in chain of equal counts.

Definition at line 788 of file CoinFactorization.hpp.

void CoinFactorization::deleteLink | ( | int | index | ) |
| inline protected

Deletes a link in chain of equal counts.

Definition at line 806 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,
|  | int | pivotRowPosition,
|  | int | pivotColumnPosition,
|  | CoinFactorizationDouble | work[],
|  | unsigned int | workArea2[],
|  | int | increment2,
|  | T | markRow[],
|  | int | largeInteger
| ) |  |
| inline protected

Definition at line 937 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 1420 of file CoinFactorization.hpp.

double CoinFactorization::zeroTolerance_
| protected

Zero tolerance.

Definition at line 1422 of file CoinFactorization.hpp.

double CoinFactorization::slackValue_
| protected

Whether slack value is +1 or -1.

Definition at line 1425 of file CoinFactorization.hpp.

double CoinFactorization::areaFactor_
| protected

How much to multiply areas by.

Definition at line 1432 of file CoinFactorization.hpp.

double CoinFactorization::relaxCheck_
| protected

Relax check on accuracy in replaceColumn.

Definition at line 1434 of file CoinFactorization.hpp.

int CoinFactorization::numberRows_
| protected

Number of Rows in factorization.

Definition at line 1436 of file CoinFactorization.hpp.

int CoinFactorization::numberRowsExtra_
| protected

Number of Rows after iterating.

Definition at line 1438 of file CoinFactorization.hpp.

int CoinFactorization::maximumRowsExtra_
| protected

Maximum number of Rows after iterating.

Definition at line 1440 of file CoinFactorization.hpp.

int CoinFactorization::numberColumns_
| protected

Number of Columns in factorization.

Definition at line 1442 of file CoinFactorization.hpp.

int CoinFactorization::numberColumnsExtra_
| protected

Number of Columns after iterating.

Definition at line 1444 of file CoinFactorization.hpp.

int CoinFactorization::maximumColumnsExtra_
| protected

Maximum number of Columns after iterating.

Definition at line 1446 of file CoinFactorization.hpp.

int CoinFactorization::numberGoodU_
| protected

Number factorized in U (not row singletons)

Definition at line 1448 of file CoinFactorization.hpp.

int CoinFactorization::numberGoodL_
| protected

Number factorized in L.

Definition at line 1450 of file CoinFactorization.hpp.

int CoinFactorization::maximumPivots_
| protected

Maximum number of pivots before factorization.

Definition at line 1452 of file CoinFactorization.hpp.

int CoinFactorization::numberPivots_
| protected

Number pivots since last factorization.

Definition at line 1454 of file CoinFactorization.hpp.

int CoinFactorization::totalElements_
| protected

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

Definition at line 1457 of file CoinFactorization.hpp.

int CoinFactorization::factorElements_
| protected

Number of elements after factorization.

Definition at line 1459 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::pivotColumn_
| protected

Pivot order for each Column.

Definition at line 1461 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::permute_
| protected

Permutation vector for pivot row order.

Definition at line 1463 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::permuteBack_
| protected

DePermutation vector for pivot row order.

Definition at line 1465 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::pivotColumnBack_
| protected

Inverse Pivot order for each Column.

Definition at line 1467 of file CoinFactorization.hpp.

int CoinFactorization::status_
| protected

Status of factorization.

Definition at line 1469 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 1478 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::startRowU_
| protected

Start of each Row as pointer.

Definition at line 1480 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::numberInRow_
| protected

Number in each Row.

Definition at line 1483 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::numberInColumn_
| protected

Number in each Column.

Definition at line 1486 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::numberInColumnPlus_
| protected

Number in each Column including pivoted.

Definition at line 1489 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 1493 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::nextCount_
| protected

Next Row/Column with count.

Definition at line 1496 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::lastCount_
| protected

Previous Row/Column with count.

Definition at line 1499 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::nextColumn_
| protected

Next Column in memory order.

Definition at line 1502 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::lastColumn_
| protected

Previous Column in memory order.

Definition at line 1505 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::nextRow_
| protected

Next Row in memory order.

Definition at line 1508 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::lastRow_
| protected

Previous Row in memory order.

Definition at line 1511 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::saveColumn_
| protected

Columns left to do in a single pivot.

Definition at line 1514 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::markRow_
| protected

Marks rows to be updated.

Definition at line 1517 of file CoinFactorization.hpp.

int CoinFactorization::messageLevel_
| protected

Detail in messages.

Definition at line 1520 of file CoinFactorization.hpp.

int CoinFactorization::biggerDimension_
| protected

Larger of row and column size.

Definition at line 1523 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::indexColumnU_
| protected

Base address for U (may change)

Definition at line 1526 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::pivotRowL_
| protected

Pivots for L.

Definition at line 1529 of file CoinFactorization.hpp.

CoinFactorizationDoubleArrayWithLength CoinFactorization::pivotRegion_
| protected

Inverses of pivot values.

Definition at line 1532 of file CoinFactorization.hpp.

int CoinFactorization::numberSlacks_
| protected

Number of slacks at beginning of U.

Definition at line 1535 of file CoinFactorization.hpp.

int CoinFactorization::numberU_
| protected

Number in U.

Definition at line 1538 of file CoinFactorization.hpp.

int CoinFactorization::maximumU_
| protected

Maximum space used in U.

Definition at line 1541 of file CoinFactorization.hpp.

int CoinFactorization::lengthU_
| protected

Base of U is always 0.

Length of U

Definition at line 1547 of file CoinFactorization.hpp.

int CoinFactorization::lengthAreaU_
| protected

Length of area reserved for U.

Definition at line 1550 of file CoinFactorization.hpp.

CoinFactorizationDoubleArrayWithLength CoinFactorization::elementU_
| protected

Elements of U.

Definition at line 1553 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::indexRowU_
| protected

Row indices of U.

Definition at line 1556 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::startColumnU_
| protected

Start of each column in U.

Definition at line 1559 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::convertRowToColumnU_
| protected

Converts rows to columns in U.

Definition at line 1562 of file CoinFactorization.hpp.

int CoinFactorization::numberL_
| protected

Number in L.

Definition at line 1565 of file CoinFactorization.hpp.

int CoinFactorization::baseL_
| protected

Base of L.

Definition at line 1568 of file CoinFactorization.hpp.

int CoinFactorization::lengthL_
| protected

Length of L.

Definition at line 1571 of file CoinFactorization.hpp.

int CoinFactorization::lengthAreaL_
| protected

Length of area reserved for L.

Definition at line 1574 of file CoinFactorization.hpp.

CoinFactorizationDoubleArrayWithLength CoinFactorization::elementL_
| protected

Elements of L.

Definition at line 1577 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::indexRowL_
| protected

Row indices of L.

Definition at line 1580 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::startColumnL_
| protected

Start of each column in L.

Definition at line 1583 of file CoinFactorization.hpp.

bool CoinFactorization::doForrestTomlin_
| protected

true if Forrest Tomlin update, false if PFI

Definition at line 1586 of file CoinFactorization.hpp.

int CoinFactorization::numberR_
| protected

Number in R.

Definition at line 1589 of file CoinFactorization.hpp.

int CoinFactorization::lengthR_
| protected

Length of R stuff.

Definition at line 1592 of file CoinFactorization.hpp.

int CoinFactorization::lengthAreaR_
| protected

length of area reserved for R

Definition at line 1595 of file CoinFactorization.hpp.

CoinFactorizationDouble* CoinFactorization::elementR_
| protected

Elements of R.

Definition at line 1598 of file CoinFactorization.hpp.

int* CoinFactorization::indexRowR_
| protected

Row indices for R.

Definition at line 1601 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::startColumnR_
| protected

Start of columns for R.

Definition at line 1604 of file CoinFactorization.hpp.

double* CoinFactorization::denseArea_
| protected

Dense area.

Definition at line 1607 of file CoinFactorization.hpp.

double* CoinFactorization::denseAreaAddress_
| protected

Dense area - actually used (for alignment etc)

Definition at line 1610 of file CoinFactorization.hpp.

int* CoinFactorization::densePermute_
| protected

Dense permutation.

Definition at line 1613 of file CoinFactorization.hpp.

int CoinFactorization::numberDense_
| protected

Number of dense rows.

Definition at line 1616 of file CoinFactorization.hpp.

int CoinFactorization::denseThreshold_
| protected

Dense threshold.

Definition at line 1619 of file CoinFactorization.hpp.

CoinFactorizationDoubleArrayWithLength CoinFactorization::workArea_
| protected

First work area.

Definition at line 1622 of file CoinFactorization.hpp.

CoinUnsignedIntArrayWithLength CoinFactorization::workArea2_
| protected

Second work area.

Definition at line 1625 of file CoinFactorization.hpp.

int CoinFactorization::numberCompressions_
| protected

Number of compressions done.

Definition at line 1628 of file CoinFactorization.hpp.

double CoinFactorization::ftranCountInput_
| mutable

Below are all to collect.

Definition at line 1632 of file CoinFactorization.hpp.

double CoinFactorization::ftranCountAfterL_
| mutable

Definition at line 1633 of file CoinFactorization.hpp.

double CoinFactorization::ftranCountAfterR_
| mutable

Definition at line 1634 of file CoinFactorization.hpp.

double CoinFactorization::ftranCountAfterU_
| mutable

Definition at line 1635 of file CoinFactorization.hpp.

double CoinFactorization::btranCountInput_
| mutable

Definition at line 1636 of file CoinFactorization.hpp.

double CoinFactorization::btranCountAfterU_
| mutable

Definition at line 1637 of file CoinFactorization.hpp.

double CoinFactorization::btranCountAfterR_
| mutable

Definition at line 1638 of file CoinFactorization.hpp.

double CoinFactorization::btranCountAfterL_
| mutable

Definition at line 1639 of file CoinFactorization.hpp.

int CoinFactorization::numberFtranCounts_
| mutable

We can roll over factorizations.

Definition at line 1642 of file CoinFactorization.hpp.

int CoinFactorization::numberBtranCounts_
| mutable

Definition at line 1643 of file CoinFactorization.hpp.

double CoinFactorization::ftranAverageAfterL_

While these are average ratios collected over last period.

Definition at line 1646 of file CoinFactorization.hpp.

double CoinFactorization::ftranAverageAfterR_

Definition at line 1647 of file CoinFactorization.hpp.

double CoinFactorization::ftranAverageAfterU_

Definition at line 1648 of file CoinFactorization.hpp.

double CoinFactorization::btranAverageAfterU_

Definition at line 1649 of file CoinFactorization.hpp.

double CoinFactorization::btranAverageAfterR_

Definition at line 1650 of file CoinFactorization.hpp.

double CoinFactorization::btranAverageAfterL_

Definition at line 1651 of file CoinFactorization.hpp.

int CoinFactorization::sparseThreshold_
| protected

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

Definition at line 1662 of file CoinFactorization.hpp.

int CoinFactorization::sparseThreshold2_
| protected

And one for "sparsish".

Definition at line 1665 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::startRowL_
| protected

Start of each row in L.

Definition at line 1668 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::indexColumnL_
| protected

Index of column in row for L.

Definition at line 1671 of file CoinFactorization.hpp.

CoinFactorizationDoubleArrayWithLength CoinFactorization::elementByRowL_
| protected

Elements in L (row copy)

Definition at line 1674 of file CoinFactorization.hpp.

CoinIntArrayWithLength CoinFactorization::sparse_
| mutable protected

Sparse regions.

Definition at line 1677 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 1685 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 1691 of file CoinFactorization.hpp.

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

- /tmp/Clp-1.17.6/CoinUtils/src/CoinFactorization.hpp