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 &) |
The copy constructor. | |
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. | |
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) |
Updates one column (FTRAN) Tries to do FT update number returned is negative if no room. | |
void | updateColumnFTPart2 (CoinIndexedVector ®ionSparseFT) |
Updates one column (FTRAN) Tries to do FT update number returned is negative if no room. | |
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 | setModel (AbcSimplex *model) |
Sets model. | |
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 |
Total number of elements in factorization. | |
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 |
Total number of elements in factorization. | |
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 |
makes a row copy of L for speed and to allow very sparse problems | |
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 27 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.
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 80 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 91 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 109 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 182 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::updateColumnFTPart1 | ( | CoinIndexedVector & | regionSparseFT | ) | [inline] |
Updates one column (FTRAN) Tries to do FT update number returned is negative if no room.
Definition at line 184 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::updateColumnFTPart2 | ( | CoinIndexedVector & | regionSparseFT | ) | [inline] |
Updates one column (FTRAN) Tries to do FT update number returned is negative if no room.
Definition at line 186 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 191 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::updateColumn | ( | CoinIndexedVector & | regionSparse | ) | const [inline] |
Updates one column (FTRAN).
Definition at line 196 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 202 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::updateColumnTranspose | ( | CoinIndexedVector & | regionSparse | ) | const [inline] |
Updates one column (BTRAN).
Definition at line 206 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::updateColumnCpu | ( | CoinIndexedVector & | regionSparse, | |
int | whichCpu | |||
) | const [inline] |
Updates one column (FTRAN).
Definition at line 209 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::updateColumnTransposeCpu | ( | CoinIndexedVector & | regionSparse, | |
int | whichCpu | |||
) | const [inline] |
Updates one column (BTRAN).
Definition at line 216 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::updateFullColumn | ( | CoinIndexedVector & | regionSparse | ) | const [inline] |
Updates one full column (FTRAN).
Definition at line 223 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::updateFullColumnTranspose | ( | CoinIndexedVector & | regionSparse | ) | const [inline] |
Updates one full column (BTRAN).
Definition at line 226 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::updateWeights | ( | CoinIndexedVector & | regionSparse | ) | const [inline] |
Updates one column for dual steepest edge weights (FTRAN).
Definition at line 229 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::numberElements | ( | ) | const [inline] |
Total number of elements in factorization.
Definition at line 239 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::maximumPivots | ( | ) | const [inline] |
Maximum number of pivots between factorizations.
Definition at line 243 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::maximumPivots | ( | int | value | ) | [inline] |
Set maximum number of pivots between factorizations.
Definition at line 247 of file AbcSimplexFactorization.hpp.
bool AbcSimplexFactorization::usingFT | ( | ) | const [inline] |
Returns true if doing FT.
Definition at line 251 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::pivots | ( | ) | const [inline] |
Returns number of pivots since factorization.
Definition at line 254 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::setModel | ( | AbcSimplex * | model | ) | [inline] |
Sets model.
Definition at line 258 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::setPivots | ( | int | value | ) | const [inline] |
Sets number of pivots since factorization.
Definition at line 261 of file AbcSimplexFactorization.hpp.
double AbcSimplexFactorization::areaFactor | ( | ) | const [inline] |
Whether larger areas needed.
Definition at line 265 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::areaFactor | ( | double | value | ) | [inline] |
Set whether larger areas needed.
Definition at line 269 of file AbcSimplexFactorization.hpp.
double AbcSimplexFactorization::zeroTolerance | ( | ) | const [inline] |
Zero tolerance.
Definition at line 273 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::zeroTolerance | ( | double | value | ) | [inline] |
Set zero tolerance.
Definition at line 277 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 283 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::setStatus | ( | int | value | ) | [inline] |
Sets status.
Definition at line 287 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::numberDense | ( | ) | const [inline] |
Returns number of dense rows.
Definition at line 296 of file AbcSimplexFactorization.hpp.
bool AbcSimplexFactorization::timeToRefactorize | ( | ) | const |
Total number of elements in factorization.
void AbcSimplexFactorization::clearArrays | ( | ) | [inline] |
Get rid of all memory.
Definition at line 304 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::numberRows | ( | ) | const [inline] |
Number of Rows after factorization.
Definition at line 308 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::numberSlacks | ( | ) | const [inline] |
Number of slacks at last factorization.
Definition at line 312 of file AbcSimplexFactorization.hpp.
double AbcSimplexFactorization::pivotTolerance | ( | ) | const [inline] |
Pivot tolerance.
Definition at line 315 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::pivotTolerance | ( | double | value | ) | [inline] |
Set pivot tolerance.
Definition at line 319 of file AbcSimplexFactorization.hpp.
double AbcSimplexFactorization::minimumPivotTolerance | ( | ) | const [inline] |
Minimum pivot tolerance.
Definition at line 323 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::minimumPivotTolerance | ( | double | value | ) | [inline] |
Set minimum pivot tolerance.
Definition at line 327 of file AbcSimplexFactorization.hpp.
double* AbcSimplexFactorization::pivotRegion | ( | ) | const [inline] |
pivot region
Definition at line 331 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 338 of file AbcSimplexFactorization.hpp.
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.
int AbcSimplexFactorization::goDenseThreshold | ( | ) | const [inline] |
Get switch to dense if number rows <= this.
Definition at line 349 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::setGoDenseThreshold | ( | int | value | ) | [inline] |
Set switch to dense if number rows <= this.
Definition at line 353 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::goSmallThreshold | ( | ) | const [inline] |
Get switch to small if number rows <= this.
Definition at line 357 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::setGoSmallThreshold | ( | int | value | ) | [inline] |
Set switch to small if number rows <= this.
Definition at line 361 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::goLongThreshold | ( | ) | const [inline] |
Get switch to long/ordered if number rows >= this.
Definition at line 365 of file AbcSimplexFactorization.hpp.
void AbcSimplexFactorization::setGoLongThreshold | ( | int | value | ) | [inline] |
Set switch to long/ordered if number rows >= this.
Definition at line 369 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::typeOfFactorization | ( | ) | const [inline] |
Returns type.
Definition at line 373 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] |
makes a row copy of L for speed and to allow very sparse problems
Definition at line 385 of file AbcSimplexFactorization.hpp.
bool AbcSimplexFactorization::needToReorder | ( | ) | const [inline] |
Says whether to redo pivot order.
Definition at line 393 of file AbcSimplexFactorization.hpp.
CoinAbcAnyFactorization* AbcSimplexFactorization::factorization | ( | ) | const [inline] |
Pointer to factorization.
Definition at line 396 of file AbcSimplexFactorization.hpp.
AbcSimplex* AbcSimplexFactorization::model_ [private] |
Pointer to model.
Definition at line 410 of file AbcSimplexFactorization.hpp.
Pointer to factorization.
Definition at line 413 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::forceB_ [private] |
If nonzero force use of 1,dense 2,small 3,long.
Definition at line 427 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::goDenseThreshold_ [private] |
Switch to dense if number rows <= this.
Definition at line 429 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::goSmallThreshold_ [private] |
Switch to small if number rows <= this.
Definition at line 431 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::goLongThreshold_ [private] |
Switch to long/ordered if number rows >= this.
Definition at line 433 of file AbcSimplexFactorization.hpp.
int AbcSimplexFactorization::numberSlacks_ [private] |
Number of slacks at last factorization.
Definition at line 435 of file AbcSimplexFactorization.hpp.