This just implements AbcFactorization when an AbcMatrix object is passed. More...
#include <AbcSimplexFactorization.hpp>
Public Member Functions | |
factorization | |
int | factorize (AbcSimplex *model, int solveType, bool valuesPass) |
When part of LP - given by basic variables. | |
Constructors, destructor | |
AbcSimplexFactorization (int numberRows=0) | |
Default constructor. | |
~AbcSimplexFactorization () | |
Destructor. | |
Copy method | |
AbcSimplexFactorization (const AbcSimplexFactorization &, int denseIfSmaller=0) | |
The copy constructor. | |
AbcSimplexFactorization & | operator= (const AbcSimplexFactorization &) |
void | setFactorization (AbcSimplexFactorization &rhs) |
Sets factorization. | |
rank one updates which do exist | |
double | checkReplacePart1 (CoinIndexedVector *regionSparse, int pivotRow) |
Checks if can replace one Column to basis, returns update alpha Fills in region for use later partial update already in U. | |
double | checkReplacePart1 (CoinIndexedVector *regionSparse, CoinIndexedVector *partialUpdate, int pivotRow) |
Checks if can replace one Column to basis, returns update alpha Fills in region for use later partial update in vector. | |
void | checkReplacePart1a (CoinIndexedVector *regionSparse, int pivotRow) |
Checks if can replace one Column to basis, returns update alpha Fills in region for use later partial update already in U. | |
double | checkReplacePart1b (CoinIndexedVector *regionSparse, int pivotRow) |
int | checkReplacePart2 (int pivotRow, double btranAlpha, double ftranAlpha, double ftAlpha) |
Checks if can replace one Column to basis, returns 0=OK, 1=Probably OK, 2=singular, 3=no room, 5 max pivots. | |
void | replaceColumnPart3 (const AbcSimplex *model, CoinIndexedVector *regionSparse, CoinIndexedVector *tableauColumn, int pivotRow, double alpha) |
Replaces one Column to basis, partial update already in U. | |
void | replaceColumnPart3 (const AbcSimplex *model, CoinIndexedVector *regionSparse, CoinIndexedVector *tableauColumn, CoinIndexedVector *partialUpdate, int pivotRow, double alpha) |
Replaces one Column to basis, partial update in vector. | |
various uses of factorization (return code number elements) | |
int | updateColumnFT (CoinIndexedVector ®ionSparseFT) |
Updates one column (FTRAN) Tries to do FT update number returned is negative if no room. | |
int | updateColumnFTPart1 (CoinIndexedVector ®ionSparseFT) |
void | updateColumnFTPart2 (CoinIndexedVector ®ionSparseFT) |
void | updateColumnFT (CoinIndexedVector ®ionSparseFT, CoinIndexedVector &partialUpdate, int which) |
Updates one column (FTRAN) Tries to do FT update puts partial update in vector. | |
int | updateColumn (CoinIndexedVector ®ionSparse) const |
Updates one column (FTRAN). | |
int | updateTwoColumnsFT (CoinIndexedVector ®ionSparseFT, CoinIndexedVector ®ionSparseOther) |
Updates one column (FTRAN) from regionFT Tries to do FT update number returned is negative if no room. | |
int | updateColumnTranspose (CoinIndexedVector ®ionSparse) const |
Updates one column (BTRAN). | |
void | updateColumnCpu (CoinIndexedVector ®ionSparse, int whichCpu) const |
Updates one column (FTRAN). | |
void | updateColumnTransposeCpu (CoinIndexedVector ®ionSparse, int whichCpu) const |
Updates one column (BTRAN). | |
void | updateFullColumn (CoinIndexedVector ®ionSparse) const |
Updates one full column (FTRAN). | |
void | updateFullColumnTranspose (CoinIndexedVector ®ionSparse) const |
Updates one full column (BTRAN). | |
void | updateWeights (CoinIndexedVector ®ionSparse) const |
Updates one column for dual steepest edge weights (FTRAN). | |
Lifted from CoinFactorization | |
int | numberElements () const |
Total number of elements in factorization. | |
int | maximumPivots () const |
Maximum number of pivots between factorizations. | |
void | maximumPivots (int value) |
Set maximum number of pivots between factorizations. | |
bool | usingFT () const |
Returns true if doing FT. | |
int | pivots () const |
Returns number of pivots since factorization. | |
void | setPivots (int value) const |
Sets number of pivots since factorization. | |
double | areaFactor () const |
Whether larger areas needed. | |
void | areaFactor (double value) |
Set whether larger areas needed. | |
double | zeroTolerance () const |
Zero tolerance. | |
void | zeroTolerance (double value) |
Set zero tolerance. | |
void | saferTolerances (double zeroTolerance, double pivotTolerance) |
Set tolerances to safer of existing and given. | |
int | status () const |
Returns status. | |
void | setStatus (int value) |
Sets status. | |
int | numberDense () const |
Returns number of dense rows. | |
bool | timeToRefactorize () const |
void | clearArrays () |
Get rid of all memory. | |
int | numberRows () const |
Number of Rows after factorization. | |
int | numberSlacks () const |
Number of slacks at last factorization. | |
double | pivotTolerance () const |
Pivot tolerance. | |
void | pivotTolerance (double value) |
Set pivot tolerance. | |
double | minimumPivotTolerance () const |
Minimum pivot tolerance. | |
void | minimumPivotTolerance (double value) |
Set minimum pivot tolerance. | |
double * | pivotRegion () const |
pivot region | |
void | almostDestructor () |
Allows change of pivot accuracy check 1.0 == none >1.0 relaxed. | |
void | setDenseThreshold (int number) |
So we can temporarily switch off dense. | |
int | getDenseThreshold () const |
void | forceOtherFactorization (int which) |
If nonzero force use of 1,dense 2,small 3,long. | |
void | goDenseOrSmall (int numberRows) |
Go over to dense code. | |
int | goDenseThreshold () const |
Get switch to dense if number rows <= this. | |
void | setGoDenseThreshold (int value) |
Set switch to dense if number rows <= this. | |
int | goSmallThreshold () const |
Get switch to small if number rows <= this. | |
void | setGoSmallThreshold (int value) |
Set switch to small if number rows <= this. | |
int | goLongThreshold () const |
Get switch to long/ordered if number rows >= this. | |
void | setGoLongThreshold (int value) |
Set switch to long/ordered if number rows >= this. | |
int | typeOfFactorization () const |
Returns type. | |
void | synchronize (const ClpFactorization *otherFactorization, const AbcSimplex *model) |
Synchronize stuff. | |
other stuff | |
void | goSparse () |
makes a row copy of L for speed and to allow very sparse problems | |
void | checkMarkArrays () const |
bool | needToReorder () const |
Says whether to redo pivot order. | |
CoinAbcAnyFactorization * | factorization () const |
Pointer to factorization. | |
Private Attributes | |
data | |
AbcSimplex * | model_ |
Pointer to model. | |
CoinAbcAnyFactorization * | coinAbcFactorization_ |
Pointer to factorization. | |
int | forceB_ |
If nonzero force use of 1,dense 2,small 3,long. | |
int | goDenseThreshold_ |
Switch to dense if number rows <= this. | |
int | goSmallThreshold_ |
Switch to small if number rows <= this. | |
int | goLongThreshold_ |
Switch to long/ordered if number rows >= this. | |
int | numberSlacks_ |
Number of slacks at last factorization. |
This just implements AbcFactorization when an AbcMatrix object is passed.
Definition at line 22 of file AbcSimplexFactorization.hpp.
AbcSimplexFactorization::AbcSimplexFactorization | ( | int | numberRows = 0 |
) |
Default constructor.
AbcSimplexFactorization::~AbcSimplexFactorization | ( | ) |
Destructor.
AbcSimplexFactorization::AbcSimplexFactorization | ( | const AbcSimplexFactorization & | , | |
int | denseIfSmaller = 0 | |||
) |
The copy constructor.
int AbcSimplexFactorization::factorize | ( | AbcSimplex * | model, | |
int | solveType, | |||
bool | valuesPass | |||
) |
When part of LP - given by basic variables.
Actually does factorization. Arrays passed in have non negative value to say basic. If status is okay, basic variables have pivot row - this is only needed if increasingRows_ >1. Allows scaling If status is singular, then basic variables have pivot row and ones thrown out have -1 returns 0 -okay, -1 singular, -2 too many in basis, -99 memory
AbcSimplexFactorization& AbcSimplexFactorization::operator= | ( | const AbcSimplexFactorization & | ) |
void AbcSimplexFactorization::setFactorization | ( | AbcSimplexFactorization & | rhs | ) |
Sets factorization.
double AbcSimplexFactorization::checkReplacePart1 | ( | CoinIndexedVector * | regionSparse, | |
int | pivotRow | |||
) | [inline] |
Checks if can replace one Column to basis, returns update alpha Fills in region for use later partial update already in U.
Definition at line 75 of file AbcSimplexFactorization.hpp.
double AbcSimplexFactorization::checkReplacePart1 | ( | CoinIndexedVector * | regionSparse, | |
CoinIndexedVector * | partialUpdate, | |||
int | pivotRow | |||
) | [inline] |
Checks if can replace one Column to basis, returns update alpha Fills in region for use later partial update in vector.
Definition at line 86 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::checkReplacePart1a | ( | CoinIndexedVector * | regionSparse, | |
int | pivotRow | |||
) | [inline] |
Checks if can replace one Column to basis, returns update alpha Fills in region for use later partial update already in U.
Definition at line 94 of file AbcSimplexFactorization.hpp.
double AbcSimplexFactorization::checkReplacePart1b | ( | CoinIndexedVector * | regionSparse, | |
int | pivotRow | |||
) | [inline] |
Definition at line 97 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::checkReplacePart2 | ( | int | pivotRow, | |
double | btranAlpha, | |||
double | ftranAlpha, | |||
double | ftAlpha | |||
) | [inline] |
Checks if can replace one Column to basis, returns 0=OK, 1=Probably OK, 2=singular, 3=no room, 5 max pivots.
Definition at line 102 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::replaceColumnPart3 | ( | const AbcSimplex * | model, | |
CoinIndexedVector * | regionSparse, | |||
CoinIndexedVector * | tableauColumn, | |||
int | pivotRow, | |||
double | alpha | |||
) |
Replaces one Column to basis, partial update already in U.
void AbcSimplexFactorization::replaceColumnPart3 | ( | const AbcSimplex * | model, | |
CoinIndexedVector * | regionSparse, | |||
CoinIndexedVector * | tableauColumn, | |||
CoinIndexedVector * | partialUpdate, | |||
int | pivotRow, | |||
double | alpha | |||
) |
Replaces one Column to basis, partial update in vector.
int AbcSimplexFactorization::updateColumnFT | ( | CoinIndexedVector & | regionSparseFT | ) | [inline] |
Updates one column (FTRAN) Tries to do FT update number returned is negative if no room.
Definition at line 175 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::updateColumnFTPart1 | ( | CoinIndexedVector & | regionSparseFT | ) | [inline] |
Definition at line 177 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::updateColumnFTPart2 | ( | CoinIndexedVector & | regionSparseFT | ) | [inline] |
Definition at line 179 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::updateColumnFT | ( | CoinIndexedVector & | regionSparseFT, | |
CoinIndexedVector & | partialUpdate, | |||
int | which | |||
) | [inline] |
Updates one column (FTRAN) Tries to do FT update puts partial update in vector.
Definition at line 184 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::updateColumn | ( | CoinIndexedVector & | regionSparse | ) | const [inline] |
Updates one column (FTRAN).
Definition at line 189 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::updateTwoColumnsFT | ( | CoinIndexedVector & | regionSparseFT, | |
CoinIndexedVector & | regionSparseOther | |||
) | [inline] |
Updates one column (FTRAN) from regionFT Tries to do FT update number returned is negative if no room.
Also updates regionOther
Definition at line 195 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::updateColumnTranspose | ( | CoinIndexedVector & | regionSparse | ) | const [inline] |
Updates one column (BTRAN).
Definition at line 199 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::updateColumnCpu | ( | CoinIndexedVector & | regionSparse, | |
int | whichCpu | |||
) | const [inline] |
Updates one column (FTRAN).
Definition at line 202 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::updateColumnTransposeCpu | ( | CoinIndexedVector & | regionSparse, | |
int | whichCpu | |||
) | const [inline] |
Updates one column (BTRAN).
Definition at line 205 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::updateFullColumn | ( | CoinIndexedVector & | regionSparse | ) | const [inline] |
Updates one full column (FTRAN).
Definition at line 208 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::updateFullColumnTranspose | ( | CoinIndexedVector & | regionSparse | ) | const [inline] |
Updates one full column (BTRAN).
Definition at line 211 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::updateWeights | ( | CoinIndexedVector & | regionSparse | ) | const [inline] |
Updates one column for dual steepest edge weights (FTRAN).
Definition at line 214 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::numberElements | ( | ) | const [inline] |
Total number of elements in factorization.
Definition at line 220 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::maximumPivots | ( | ) | const [inline] |
Maximum number of pivots between factorizations.
Definition at line 224 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::maximumPivots | ( | int | value | ) | [inline] |
Set maximum number of pivots between factorizations.
Definition at line 228 of file AbcSimplexFactorization.hpp.
bool AbcSimplexFactorization::usingFT | ( | ) | const [inline] |
Returns true if doing FT.
Definition at line 232 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::pivots | ( | ) | const [inline] |
Returns number of pivots since factorization.
Definition at line 235 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::setPivots | ( | int | value | ) | const [inline] |
Sets number of pivots since factorization.
Definition at line 239 of file AbcSimplexFactorization.hpp.
double AbcSimplexFactorization::areaFactor | ( | ) | const [inline] |
Whether larger areas needed.
Definition at line 243 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::areaFactor | ( | double | value | ) | [inline] |
Set whether larger areas needed.
Definition at line 247 of file AbcSimplexFactorization.hpp.
double AbcSimplexFactorization::zeroTolerance | ( | ) | const [inline] |
Zero tolerance.
Definition at line 251 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::zeroTolerance | ( | double | value | ) | [inline] |
Set zero tolerance.
Definition at line 255 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::saferTolerances | ( | double | zeroTolerance, | |
double | pivotTolerance | |||
) |
Set tolerances to safer of existing and given.
int AbcSimplexFactorization::status | ( | ) | const [inline] |
Returns status.
Definition at line 261 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::setStatus | ( | int | value | ) | [inline] |
Sets status.
Definition at line 265 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::numberDense | ( | ) | const [inline] |
Returns number of dense rows.
Definition at line 274 of file AbcSimplexFactorization.hpp.
bool AbcSimplexFactorization::timeToRefactorize | ( | ) | const [inline] |
Definition at line 277 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::clearArrays | ( | ) | [inline] |
Get rid of all memory.
Definition at line 281 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::numberRows | ( | ) | const [inline] |
Number of Rows after factorization.
Definition at line 285 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::numberSlacks | ( | ) | const [inline] |
Number of slacks at last factorization.
Definition at line 289 of file AbcSimplexFactorization.hpp.
double AbcSimplexFactorization::pivotTolerance | ( | ) | const [inline] |
Pivot tolerance.
Definition at line 292 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::pivotTolerance | ( | double | value | ) | [inline] |
Set pivot tolerance.
Definition at line 296 of file AbcSimplexFactorization.hpp.
double AbcSimplexFactorization::minimumPivotTolerance | ( | ) | const [inline] |
Minimum pivot tolerance.
Definition at line 300 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::minimumPivotTolerance | ( | double | value | ) | [inline] |
Set minimum pivot tolerance.
Definition at line 304 of file AbcSimplexFactorization.hpp.
double* AbcSimplexFactorization::pivotRegion | ( | ) | const [inline] |
pivot region
Definition at line 308 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::almostDestructor | ( | ) | [inline] |
Allows change of pivot accuracy check 1.0 == none >1.0 relaxed.
Delete all stuff (leaves as after CoinFactorization())
Definition at line 315 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::setDenseThreshold | ( | int | number | ) |
So we can temporarily switch off dense.
int AbcSimplexFactorization::getDenseThreshold | ( | ) | const |
void AbcSimplexFactorization::forceOtherFactorization | ( | int | which | ) |
If nonzero force use of 1,dense 2,small 3,long.
void AbcSimplexFactorization::goDenseOrSmall | ( | int | numberRows | ) |
Go over to dense code.
int AbcSimplexFactorization::goDenseThreshold | ( | ) | const [inline] |
Get switch to dense if number rows <= this.
Definition at line 326 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::setGoDenseThreshold | ( | int | value | ) | [inline] |
Set switch to dense if number rows <= this.
Definition at line 330 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::goSmallThreshold | ( | ) | const [inline] |
Get switch to small if number rows <= this.
Definition at line 334 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::setGoSmallThreshold | ( | int | value | ) | [inline] |
Set switch to small if number rows <= this.
Definition at line 338 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::goLongThreshold | ( | ) | const [inline] |
Get switch to long/ordered if number rows >= this.
Definition at line 342 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::setGoLongThreshold | ( | int | value | ) | [inline] |
Set switch to long/ordered if number rows >= this.
Definition at line 346 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::typeOfFactorization | ( | ) | const [inline] |
Returns type.
Definition at line 350 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::synchronize | ( | const ClpFactorization * | otherFactorization, | |
const AbcSimplex * | model | |||
) |
Synchronize stuff.
void AbcSimplexFactorization::goSparse | ( | ) |
makes a row copy of L for speed and to allow very sparse problems
void AbcSimplexFactorization::checkMarkArrays | ( | ) | const [inline] |
Definition at line 361 of file AbcSimplexFactorization.hpp.
bool AbcSimplexFactorization::needToReorder | ( | ) | const [inline] |
Says whether to redo pivot order.
Definition at line 365 of file AbcSimplexFactorization.hpp.
CoinAbcAnyFactorization* AbcSimplexFactorization::factorization | ( | ) | const [inline] |
Pointer to factorization.
Definition at line 367 of file AbcSimplexFactorization.hpp.
AbcSimplex* AbcSimplexFactorization::model_ [private] |
Pointer to model.
Definition at line 377 of file AbcSimplexFactorization.hpp.
Pointer to factorization.
Definition at line 379 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::forceB_ [private] |
If nonzero force use of 1,dense 2,small 3,long.
Definition at line 381 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::goDenseThreshold_ [private] |
Switch to dense if number rows <= this.
Definition at line 383 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::goSmallThreshold_ [private] |
Switch to small if number rows <= this.
Definition at line 385 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::goLongThreshold_ [private] |
Switch to long/ordered if number rows >= this.
Definition at line 387 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::numberSlacks_ [private] |
Number of slacks at last factorization.
Definition at line 389 of file AbcSimplexFactorization.hpp.