Dip
0.92.4
|
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. More... | |
Constructors, destructor | |
AbcSimplexFactorization (int numberRows=0) | |
Default constructor. More... | |
~AbcSimplexFactorization () | |
Destructor. More... | |
Copy method | |
AbcSimplexFactorization (const AbcSimplexFactorization &, int denseIfSmaller=0) | |
The copy constructor. More... | |
AbcSimplexFactorization & | operator= (const AbcSimplexFactorization &) |
The copy constructor. More... | |
void | setFactorization (AbcSimplexFactorization &rhs) |
Sets factorization. More... | |
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. More... | |
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. More... | |
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. More... | |
void | replaceColumnPart3 (const AbcSimplex *model, CoinIndexedVector *regionSparse, CoinIndexedVector *tableauColumn, int pivotRow, double alpha) |
Replaces one Column to basis, partial update already in U. More... | |
void | replaceColumnPart3 (const AbcSimplex *model, CoinIndexedVector *regionSparse, CoinIndexedVector *tableauColumn, CoinIndexedVector *partialUpdate, int pivotRow, double alpha) |
Replaces one Column to basis, partial update in vector. More... | |
various uses of factorization (return code number elements) | |
which user may want to know about | |
int | updateColumnFT (CoinIndexedVector ®ionSparseFT) |
Updates one column (FTRAN) Tries to do FT update number returned is negative if no room. More... | |
int | updateColumnFTPart1 (CoinIndexedVector ®ionSparseFT) |
Updates one column (FTRAN) Tries to do FT update number returned is negative if no room. More... | |
void | updateColumnFTPart2 (CoinIndexedVector ®ionSparseFT) |
Updates one column (FTRAN) Tries to do FT update number returned is negative if no room. More... | |
void | updateColumnFT (CoinIndexedVector ®ionSparseFT, CoinIndexedVector &partialUpdate, int which) |
Updates one column (FTRAN) Tries to do FT update puts partial update in vector. More... | |
int | updateColumn (CoinIndexedVector ®ionSparse) const |
Updates one column (FTRAN) More... | |
int | updateTwoColumnsFT (CoinIndexedVector ®ionSparseFT, CoinIndexedVector ®ionSparseOther) |
Updates one column (FTRAN) from regionFT Tries to do FT update number returned is negative if no room. More... | |
int | updateColumnTranspose (CoinIndexedVector ®ionSparse) const |
Updates one column (BTRAN) More... | |
void | updateColumnCpu (CoinIndexedVector ®ionSparse, int whichCpu) const |
Updates one column (FTRAN) More... | |
void | updateColumnTransposeCpu (CoinIndexedVector ®ionSparse, int whichCpu) const |
Updates one column (BTRAN) More... | |
void | updateFullColumn (CoinIndexedVector ®ionSparse) const |
Updates one full column (FTRAN) More... | |
void | updateFullColumnTranspose (CoinIndexedVector ®ionSparse) const |
Updates one full column (BTRAN) More... | |
void | updateWeights (CoinIndexedVector ®ionSparse) const |
Updates one column for dual steepest edge weights (FTRAN) More... | |
Lifted from CoinFactorization | |
int | numberElements () const |
Total number of elements in factorization. More... | |
int | maximumPivots () const |
Maximum number of pivots between factorizations. More... | |
void | maximumPivots (int value) |
Set maximum number of pivots between factorizations. More... | |
bool | usingFT () const |
Returns true if doing FT. More... | |
int | pivots () const |
Returns number of pivots since factorization. More... | |
void | setModel (AbcSimplex *model) |
Sets model. More... | |
void | setPivots (int value) const |
Sets number of pivots since factorization. More... | |
double | areaFactor () const |
Whether larger areas needed. More... | |
void | areaFactor (double value) |
Set whether larger areas needed. More... | |
double | zeroTolerance () const |
Zero tolerance. More... | |
void | zeroTolerance (double value) |
Set zero tolerance. More... | |
void | saferTolerances (double zeroTolerance, double pivotTolerance) |
Set tolerances to safer of existing and given. More... | |
int | status () const |
Returns status. More... | |
void | setStatus (int value) |
Sets status. More... | |
int | numberDense () const |
Returns number of dense rows. More... | |
bool | timeToRefactorize () const |
Total number of elements in factorization. More... | |
void | clearArrays () |
Get rid of all memory. More... | |
int | numberRows () const |
Number of Rows after factorization. More... | |
int | numberSlacks () const |
Number of slacks at last factorization. More... | |
double | pivotTolerance () const |
Pivot tolerance. More... | |
void | pivotTolerance (double value) |
Set pivot tolerance. More... | |
double | minimumPivotTolerance () const |
Minimum pivot tolerance. More... | |
void | minimumPivotTolerance (double value) |
Set minimum pivot tolerance. More... | |
double * | pivotRegion () const |
pivot region More... | |
void | almostDestructor () |
Allows change of pivot accuracy check 1.0 == none >1.0 relaxed. More... | |
void | setDenseThreshold (int number) |
So we can temporarily switch off dense. More... | |
int | getDenseThreshold () const |
Total number of elements in factorization. More... | |
void | forceOtherFactorization (int which) |
If nonzero force use of 1,dense 2,small 3,long. More... | |
void | goDenseOrSmall (int numberRows) |
Go over to dense code. More... | |
int | goDenseThreshold () const |
Get switch to dense if number rows <= this. More... | |
void | setGoDenseThreshold (int value) |
Set switch to dense if number rows <= this. More... | |
int | goSmallThreshold () const |
Get switch to small if number rows <= this. More... | |
void | setGoSmallThreshold (int value) |
Set switch to small if number rows <= this. More... | |
int | goLongThreshold () const |
Get switch to long/ordered if number rows >= this. More... | |
void | setGoLongThreshold (int value) |
Set switch to long/ordered if number rows >= this. More... | |
int | typeOfFactorization () const |
Returns type. More... | |
void | synchronize (const ClpFactorization *otherFactorization, const AbcSimplex *model) |
Synchronize stuff. More... | |
other stuff | |
void | goSparse () |
makes a row copy of L for speed and to allow very sparse problems More... | |
void | checkMarkArrays () const |
makes a row copy of L for speed and to allow very sparse problems More... | |
bool | needToReorder () const |
Says whether to redo pivot order. More... | |
CoinAbcAnyFactorization * | factorization () const |
Pointer to factorization. More... | |
Private Attributes | |
data | |
AbcSimplex * | model_ |
Pointer to model. More... | |
CoinAbcAnyFactorization * | coinAbcFactorization_ |
Pointer to factorization. More... | |
int | forceB_ |
If nonzero force use of 1,dense 2,small 3,long. More... | |
int | goDenseThreshold_ |
Switch to dense if number rows <= this. More... | |
int | goSmallThreshold_ |
Switch to small if number rows <= this. More... | |
int | goLongThreshold_ |
Switch to long/ordered if number rows >= this. More... | |
int | numberSlacks_ |
Number of slacks at last factorization. More... | |
This just implements AbcFactorization when an AbcMatrix object is passed.
Definition at line 26 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 & | ) |
The copy constructor.
void AbcSimplexFactorization::setFactorization | ( | AbcSimplexFactorization & | rhs | ) |
Sets factorization.
|
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 80 of file AbcSimplexFactorization.hpp.
References CoinAbcAnyFactorization::checkReplacePart1(), and coinAbcFactorization_.
|
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 94 of file AbcSimplexFactorization.hpp.
References CoinAbcAnyFactorization::checkReplacePart1(), and coinAbcFactorization_.
|
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 118 of file AbcSimplexFactorization.hpp.
References CoinAbcAnyFactorization::checkReplacePart2(), and coinAbcFactorization_.
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.
|
inline |
Updates one column (FTRAN) Tries to do FT update number returned is negative if no room.
Definition at line 197 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::updateColumnFT().
|
inline |
Updates one column (FTRAN) Tries to do FT update number returned is negative if no room.
Definition at line 201 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::updateColumnFTPart1().
|
inline |
Updates one column (FTRAN) Tries to do FT update number returned is negative if no room.
Definition at line 205 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::updateColumnFTPart2().
|
inline |
Updates one column (FTRAN) Tries to do FT update puts partial update in vector.
Definition at line 212 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::updateColumnFT().
|
inline |
Updates one column (FTRAN)
Definition at line 219 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::updateColumn().
|
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 227 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::updateTwoColumnsFT().
|
inline |
Updates one column (BTRAN)
Definition at line 233 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::updateColumnTranspose().
|
inline |
Updates one column (FTRAN)
Definition at line 238 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::updateColumnCpu().
|
inline |
Updates one column (BTRAN)
Definition at line 249 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::updateColumnTransposeCpu().
|
inline |
Updates one full column (FTRAN)
Definition at line 260 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::updateFullColumn().
|
inline |
Updates one full column (BTRAN)
Definition at line 265 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::updateFullColumnTranspose().
|
inline |
Updates one column for dual steepest edge weights (FTRAN)
Definition at line 270 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::updateWeights().
|
inline |
Total number of elements in factorization.
Definition at line 284 of file AbcSimplexFactorization.hpp.
|
inline |
Maximum number of pivots between factorizations.
Definition at line 289 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::maximumPivots().
|
inline |
Set maximum number of pivots between factorizations.
Definition at line 294 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::maximumPivots().
|
inline |
Returns true if doing FT.
Definition at line 299 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::wantsTableauColumn().
|
inline |
Returns number of pivots since factorization.
Definition at line 304 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::pivots().
|
inline |
|
inline |
Sets number of pivots since factorization.
Definition at line 314 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::setPivots().
|
inline |
Whether larger areas needed.
Definition at line 319 of file AbcSimplexFactorization.hpp.
References CoinAbcAnyFactorization::areaFactor(), and coinAbcFactorization_.
|
inline |
Set whether larger areas needed.
Definition at line 324 of file AbcSimplexFactorization.hpp.
References CoinAbcAnyFactorization::areaFactor(), and coinAbcFactorization_.
|
inline |
Zero tolerance.
Definition at line 329 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::zeroTolerance().
|
inline |
Set zero tolerance.
Definition at line 334 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::zeroTolerance().
void AbcSimplexFactorization::saferTolerances | ( | double | zeroTolerance, |
double | pivotTolerance | ||
) |
Set tolerances to safer of existing and given.
|
inline |
Returns status.
Definition at line 341 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::status().
|
inline |
Sets status.
Definition at line 346 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::setStatus().
|
inline |
Returns number of dense rows.
Definition at line 358 of file AbcSimplexFactorization.hpp.
bool AbcSimplexFactorization::timeToRefactorize | ( | ) | const |
Total number of elements in factorization.
|
inline |
Get rid of all memory.
Definition at line 367 of file AbcSimplexFactorization.hpp.
|
inline |
Number of Rows after factorization.
Definition at line 372 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::numberRows().
|
inline |
Number of slacks at last factorization.
Definition at line 377 of file AbcSimplexFactorization.hpp.
References numberSlacks_.
|
inline |
Pivot tolerance.
Definition at line 382 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::pivotTolerance().
|
inline |
Set pivot tolerance.
Definition at line 387 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::pivotTolerance().
|
inline |
Minimum pivot tolerance.
Definition at line 392 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::minimumPivotTolerance().
|
inline |
Set minimum pivot tolerance.
Definition at line 397 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::minimumPivotTolerance().
|
inline |
pivot region
Definition at line 402 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_, and CoinAbcAnyFactorization::pivotRegion().
|
inline |
Allows change of pivot accuracy check 1.0 == none >1.0 relaxed.
Delete all stuff (leaves as after CoinFactorization())
Definition at line 411 of file AbcSimplexFactorization.hpp.
References CoinAbcAnyFactorization::clearArrays(), and coinAbcFactorization_.
void AbcSimplexFactorization::setDenseThreshold | ( | int | number | ) |
So we can temporarily switch off dense.
int AbcSimplexFactorization::getDenseThreshold | ( | ) | const |
Total number of elements in factorization.
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.
|
inline |
Get switch to dense if number rows <= this.
Definition at line 423 of file AbcSimplexFactorization.hpp.
References goDenseThreshold_.
|
inline |
Set switch to dense if number rows <= this.
Definition at line 428 of file AbcSimplexFactorization.hpp.
References goDenseThreshold_.
|
inline |
Get switch to small if number rows <= this.
Definition at line 433 of file AbcSimplexFactorization.hpp.
References goSmallThreshold_.
|
inline |
Set switch to small if number rows <= this.
Definition at line 438 of file AbcSimplexFactorization.hpp.
References goSmallThreshold_.
|
inline |
Get switch to long/ordered if number rows >= this.
Definition at line 443 of file AbcSimplexFactorization.hpp.
References goLongThreshold_.
|
inline |
Set switch to long/ordered if number rows >= this.
Definition at line 448 of file AbcSimplexFactorization.hpp.
References goLongThreshold_.
|
inline |
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
|
inline |
makes a row copy of L for speed and to allow very sparse problems
Definition at line 467 of file AbcSimplexFactorization.hpp.
References CoinAbcAnyFactorization::checkMarkArrays(), and coinAbcFactorization_.
|
inline |
Says whether to redo pivot order.
Definition at line 478 of file AbcSimplexFactorization.hpp.
|
inline |
Pointer to factorization.
Definition at line 485 of file AbcSimplexFactorization.hpp.
References coinAbcFactorization_.
|
private |
Pointer to model.
Definition at line 502 of file AbcSimplexFactorization.hpp.
Referenced by setModel().
|
private |
Pointer to factorization.
Definition at line 505 of file AbcSimplexFactorization.hpp.
Referenced by almostDestructor(), areaFactor(), checkMarkArrays(), checkReplacePart1(), checkReplacePart2(), factorization(), maximumPivots(), minimumPivotTolerance(), numberRows(), pivotRegion(), pivots(), pivotTolerance(), setPivots(), setStatus(), status(), updateColumn(), updateColumnCpu(), updateColumnFT(), updateColumnFTPart1(), updateColumnFTPart2(), updateColumnTranspose(), updateColumnTransposeCpu(), updateFullColumn(), updateFullColumnTranspose(), updateTwoColumnsFT(), updateWeights(), usingFT(), and zeroTolerance().
|
private |
If nonzero force use of 1,dense 2,small 3,long.
Definition at line 519 of file AbcSimplexFactorization.hpp.
Referenced by typeOfFactorization().
|
private |
Switch to dense if number rows <= this.
Definition at line 521 of file AbcSimplexFactorization.hpp.
Referenced by goDenseThreshold(), and setGoDenseThreshold().
|
private |
Switch to small if number rows <= this.
Definition at line 523 of file AbcSimplexFactorization.hpp.
Referenced by goSmallThreshold(), and setGoSmallThreshold().
|
private |
Switch to long/ordered if number rows >= this.
Definition at line 525 of file AbcSimplexFactorization.hpp.
Referenced by goLongThreshold(), and setGoLongThreshold().
|
private |
Number of slacks at last factorization.
Definition at line 527 of file AbcSimplexFactorization.hpp.
Referenced by numberSlacks().