# ClpFactorization Class Reference

This just implements CoinFactorization when an ClpMatrixBase object is passed. More...

`#include <ClpFactorization.hpp>`

Collaboration diagram for ClpFactorization:
[legend]

List of all members.

## Public Member Functions
factorization
int | factorize (ClpSimplex *model, int solveType, bool valuesPass)
| When part of LP - given by basic variables.
Constructors, destructor
| ClpFactorization ()
| Default constructor.
| ~ClpFactorization ()
| Destructor.
Copy method
| ClpFactorization (const CoinFactorization &)
| The copy constructor from an CoinFactorization.
| ClpFactorization (const ClpFactorization &, int denseIfSmaller=0)
| The copy constructor.
| ClpFactorization (const CoinOtherFactorization &)
| The copy constructor from an CoinOtherFactorization.
ClpFactorization & | operator= (const ClpFactorization &)
| The copy constructor from an CoinFactorization.
rank one updates which do exist
int | replaceColumn (const ClpSimplex *model, CoinIndexedVector *regionSparse, CoinIndexedVector *tableauColumn, 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.
various uses of factorization (return code number elements)
which user may want to know about
int | updateColumnFT (CoinIndexedVector *regionSparse, CoinIndexedVector *regionSparse2)
| Updates one column (FTRAN) from region2 Tries to do FT update number returned is negative if no room region1 starts as zero and is zero at end.
int | updateColumn (CoinIndexedVector *regionSparse, CoinIndexedVector *regionSparse2, bool noPermute=false) const
| Updates one column (FTRAN) from region2 region1 starts as zero and is zero at end.
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.
int | updateColumnForDebug (CoinIndexedVector *regionSparse, CoinIndexedVector *regionSparse2, bool noPermute=false) const
| For debug (no statistics update).
int | updateColumnTranspose (CoinIndexedVector *regionSparse, CoinIndexedVector *regionSparse2) const
| Updates one column (BTRAN) from region2 region1 starts as zero and is zero at end.
Lifted from CoinFactorization
int | numberElements () const
| Total number of elements in factorization.
int * | permute () const
| Returns address of permute region.
int * | pivotColumn () const
| Returns address of pivotColumn region (also used for permuting).
int | maximumPivots () const
| Maximum number of pivots between factorizations.
void | maximumPivots (int value)
| Set maximum number of pivots between factorizations.
int | pivots () const
| Returns 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 | sparseThreshold () const
| get sparse threshold
void | sparseThreshold (int value)
| Set sparse threshold.
int | status () const
| Returns status.
void | setStatus (int value)
| Sets status.
int | numberDense () const
| Returns number of dense rows.
CoinBigIndex | numberElementsU () const
| Returns number in U area.
CoinBigIndex | numberElementsL () const
| Returns number in L area.
CoinBigIndex | numberElementsR () const
| Returns number in R area.
bool | timeToRefactorize () const
| Total number of elements in factorization.
int | messageLevel () const
| Level of detail of messages.
void | messageLevel (int value)
| Set level of detail of messages.
void | clearArrays ()
| Get rid of all memory.
int | numberRows () const
| Number of Rows after factorization.
int | denseThreshold () const
| Gets dense threshold.
void | setDenseThreshold (int value)
| Sets dense threshold.
double | pivotTolerance () const
| Pivot tolerance.
void | pivotTolerance (double value)
| Set pivot tolerance.
void | relaxAccuracyCheck (double value)
| Allows change of pivot accuracy check 1.0 == none >1.0 relaxed.
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.
void | setPersistenceFlag (int value)
| Total number of elements in factorization.
void | almostDestructor ()
| Delete all stuff (leaves as after CoinFactorization()).
double | adjustedAreaFactor () const
| Returns areaFactor but adjusted for dense.
void | setBiasLU (int value)
| Total number of elements in factorization.
void | setForrestTomlin (bool value)
| true if Forrest Tomlin update, false if PFI
void | setDefaultValues ()
| Sets default values.
void | forceOtherFactorization (int which)
| If nonzero force use of 1,dense 2,small 3,osl.
int | goOslThreshold () const
| Get switch to osl if number rows <= this.
void | setGoOslThreshold (int value)
| Set switch to osl if number rows <= this.
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.
void | goDenseOrSmall (int numberRows)
| Go over to dense or small code if small enough.
void | setFactorization (ClpFactorization &factorization)
| Sets factorization.
int | isDenseOrSmall () const
| Return 1 if dense code.
other stuff
void | goSparse ()
| makes a row copy of L for speed and to allow very sparse problems
void | cleanUp ()
| Cleans up i.e. gets rid of network basis.
bool | needToReorder () const
| Says whether to redo pivot order.
bool | networkBasis () const
| Says if a network basis.
void | getWeights (int *weights) const
| Fills weighted row list.
## Private Attributes
data
ClpNetworkBasis * | networkBasis_
| Pointer to network basis.
CoinFactorization * | coinFactorizationA_
| Pointer to CoinFactorization.
CoinOtherFactorization * | coinFactorizationB_
| Pointer to CoinOtherFactorization.
int | forceB_
| If nonzero force use of 1,dense 2,small 3,osl.
int | goOslThreshold_
| Switch to osl if number rows <= this.
int | goSmallThreshold_
| Switch to small if number rows <= this.
int | goDenseThreshold_
| Switch to dense if number rows <= this.
double | shortestAverage_
| For guessing when to re-factorize.
double | totalInR_
| Pointer to network basis.
double | totalInIncreasingU_
| Pointer to network basis.
int | endLengthU_
| Pointer to network basis.
int | lastNumberPivots_
| Pointer to network basis.
int | effectiveStartNumberU_
| Pointer to network basis.

## Detailed Description

This just implements CoinFactorization when an ClpMatrixBase object is passed.

If a network then has a dummy CoinFactorization and a genuine ClpNetworkBasis object

Definition at line 35 of file ClpFactorization.hpp.

## Constructor & Destructor Documentation

ClpFactorization::ClpFactorization | ( |  | ) |

Default constructor.

ClpFactorization::~ClpFactorization | ( |  | ) |

Destructor.

ClpFactorization::ClpFactorization | ( | const CoinFactorization & |  | ) |

The copy constructor from an CoinFactorization.

ClpFactorization::ClpFactorization | ( | const ClpFactorization & | ,
|  | int | denseIfSmaller = `0` |
| ) |  |  |

The copy constructor.

ClpFactorization::ClpFactorization | ( | const CoinOtherFactorization & |  | ) |

The copy constructor from an CoinOtherFactorization.

## Member Function Documentation

int ClpFactorization::factorize | ( | ClpSimplex * | 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

ClpFactorization& ClpFactorization::operator= | ( | const ClpFactorization & |  | ) |

The copy constructor from an CoinFactorization.

int ClpFactorization::replaceColumn | ( | const ClpSimplex * | model,
|  | CoinIndexedVector * | regionSparse,
|  | CoinIndexedVector * | tableauColumn,
|  | 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

int ClpFactorization::updateColumnFT | ( | CoinIndexedVector * | regionSparse,
|  | CoinIndexedVector * | regionSparse2 |
| ) |  |  |

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

int ClpFactorization::updateColumn | ( | CoinIndexedVector * | regionSparse,
|  | CoinIndexedVector * | regionSparse2,
|  | bool | noPermute = `false` |
| ) |  |  | const

Updates one column (FTRAN) from region2 region1 starts as zero and is zero at end.

int ClpFactorization::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 ClpFactorization::updateColumnForDebug | ( | CoinIndexedVector * | regionSparse,
|  | CoinIndexedVector * | regionSparse2,
|  | bool | noPermute = `false` |
| ) |  |  | const

For debug (no statistics update).

int ClpFactorization::updateColumnTranspose | ( | CoinIndexedVector * | regionSparse,
|  | CoinIndexedVector * | regionSparse2 |
| ) |  |  | const

Updates one column (BTRAN) from region2 region1 starts as zero and is zero at end.

int ClpFactorization::numberElements | ( |  | ) | const`[inline]`

Total number of elements in factorization.

Definition at line 136 of file ClpFactorization.hpp.

int* ClpFactorization::permute | ( |  | ) | const`[inline]`

Returns address of permute region.

Definition at line 141 of file ClpFactorization.hpp.

int* ClpFactorization::pivotColumn | ( |  | ) | const`[inline]`

Returns address of pivotColumn region (also used for permuting).

Definition at line 146 of file ClpFactorization.hpp.

int ClpFactorization::maximumPivots | ( |  | ) | const`[inline]`

Maximum number of pivots between factorizations.

Definition at line 151 of file ClpFactorization.hpp.

void ClpFactorization::maximumPivots | ( | int | value | ) | `[inline]`

Set maximum number of pivots between factorizations.

Definition at line 156 of file ClpFactorization.hpp.

int ClpFactorization::pivots | ( |  | ) | const`[inline]`

Returns number of pivots since factorization.

Definition at line 161 of file ClpFactorization.hpp.

double ClpFactorization::areaFactor | ( |  | ) | const`[inline]`

Whether larger areas needed.

Definition at line 166 of file ClpFactorization.hpp.

void ClpFactorization::areaFactor | ( | double | value | ) | `[inline]`

Set whether larger areas needed.

Definition at line 171 of file ClpFactorization.hpp.

double ClpFactorization::zeroTolerance | ( |  | ) | const`[inline]`

Zero tolerance.

Definition at line 175 of file ClpFactorization.hpp.

void ClpFactorization::zeroTolerance | ( | double | value | ) | `[inline]`

Set zero tolerance.

Definition at line 180 of file ClpFactorization.hpp.

void ClpFactorization::saferTolerances | ( | double | zeroTolerance,
|  | double | pivotTolerance |
| ) |  |  |

Set tolerances to safer of existing and given.

int ClpFactorization::sparseThreshold | ( |  | ) | const`[inline]`

get sparse threshold

Definition at line 187 of file ClpFactorization.hpp.

void ClpFactorization::sparseThreshold | ( | int | value | ) | `[inline]`

Set sparse threshold.

Definition at line 192 of file ClpFactorization.hpp.

int ClpFactorization::status | ( |  | ) | const`[inline]`

Returns status.

Definition at line 196 of file ClpFactorization.hpp.

void ClpFactorization::setStatus | ( | int | value | ) | `[inline]`

Sets status.

Definition at line 201 of file ClpFactorization.hpp.

int ClpFactorization::numberDense | ( |  | ) | const`[inline]`

Returns number of dense rows.

Definition at line 206 of file ClpFactorization.hpp.

CoinBigIndex ClpFactorization::numberElementsU | ( |  | ) | const`[inline]`

Returns number in U area.

Definition at line 212 of file ClpFactorization.hpp.

CoinBigIndex ClpFactorization::numberElementsL | ( |  | ) | const`[inline]`

Returns number in L area.

Definition at line 217 of file ClpFactorization.hpp.

CoinBigIndex ClpFactorization::numberElementsR | ( |  | ) | const`[inline]`

Returns number in R area.

Definition at line 222 of file ClpFactorization.hpp.

bool ClpFactorization::timeToRefactorize | ( |  | ) | const

Total number of elements in factorization.

int ClpFactorization::messageLevel | ( |  | ) | const`[inline]`

Level of detail of messages.

Definition at line 232 of file ClpFactorization.hpp.

void ClpFactorization::messageLevel | ( | int | value | ) | `[inline]`

Set level of detail of messages.

Definition at line 237 of file ClpFactorization.hpp.

void ClpFactorization::clearArrays | ( |  | ) | `[inline]`

Get rid of all memory.

Definition at line 241 of file ClpFactorization.hpp.

int ClpFactorization::numberRows | ( |  | ) | const`[inline]`

Number of Rows after factorization.

Definition at line 248 of file ClpFactorization.hpp.

int ClpFactorization::denseThreshold | ( |  | ) | const`[inline]`

Gets dense threshold.

Definition at line 253 of file ClpFactorization.hpp.

void ClpFactorization::setDenseThreshold | ( | int | value | ) | `[inline]`

Sets dense threshold.

Definition at line 258 of file ClpFactorization.hpp.

double ClpFactorization::pivotTolerance | ( |  | ) | const`[inline]`

Pivot tolerance.

Definition at line 262 of file ClpFactorization.hpp.

void ClpFactorization::pivotTolerance | ( | double | value | ) | `[inline]`

Set pivot tolerance.

Definition at line 268 of file ClpFactorization.hpp.

void ClpFactorization::relaxAccuracyCheck | ( | double | value | ) | `[inline]`

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

Definition at line 273 of file ClpFactorization.hpp.

int ClpFactorization::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 281 of file ClpFactorization.hpp.

void ClpFactorization::setPersistenceFlag | ( | int | value | ) | `[inline]`

Total number of elements in factorization.

Definition at line 285 of file ClpFactorization.hpp.

void ClpFactorization::almostDestructor | ( |  | ) | `[inline]`

Delete all stuff (leaves as after CoinFactorization()).

Definition at line 289 of file ClpFactorization.hpp.

double ClpFactorization::adjustedAreaFactor | ( |  | ) | const`[inline]`

Returns areaFactor but adjusted for dense.

Definition at line 296 of file ClpFactorization.hpp.

void ClpFactorization::setBiasLU | ( | int | value | ) | `[inline]`

Total number of elements in factorization.

Definition at line 300 of file ClpFactorization.hpp.

void ClpFactorization::setForrestTomlin | ( | bool | value | ) | `[inline]`

true if Forrest Tomlin update, false if PFI

Definition at line 304 of file ClpFactorization.hpp.

void ClpFactorization::setDefaultValues | ( |  | ) | `[inline]`

Sets default values.

Definition at line 308 of file ClpFactorization.hpp.

void ClpFactorization::forceOtherFactorization | ( | int | which | ) |

If nonzero force use of 1,dense 2,small 3,osl.

int ClpFactorization::goOslThreshold | ( |  | ) | const`[inline]`

Get switch to osl if number rows <= this.

Definition at line 320 of file ClpFactorization.hpp.

void ClpFactorization::setGoOslThreshold | ( | int | value | ) | `[inline]`

Set switch to osl if number rows <= this.

Definition at line 324 of file ClpFactorization.hpp.

int ClpFactorization::goDenseThreshold | ( |  | ) | const`[inline]`

Get switch to dense if number rows <= this.

Definition at line 328 of file ClpFactorization.hpp.

void ClpFactorization::setGoDenseThreshold | ( | int | value | ) | `[inline]`

Set switch to dense if number rows <= this.

Definition at line 332 of file ClpFactorization.hpp.

int ClpFactorization::goSmallThreshold | ( |  | ) | const`[inline]`

Get switch to small if number rows <= this.

Definition at line 336 of file ClpFactorization.hpp.

void ClpFactorization::setGoSmallThreshold | ( | int | value | ) | `[inline]`

Set switch to small if number rows <= this.

Definition at line 340 of file ClpFactorization.hpp.

void ClpFactorization::goDenseOrSmall | ( | int | numberRows | ) |

Go over to dense or small code if small enough.

void ClpFactorization::setFactorization | ( | ClpFactorization & | factorization | ) |

Sets factorization.

int ClpFactorization::isDenseOrSmall | ( |  | ) | const`[inline]`

Return 1 if dense code.

Definition at line 348 of file ClpFactorization.hpp.

void ClpFactorization::goSparse | ( |  | ) |

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

void ClpFactorization::cleanUp | ( |  | ) |

Cleans up i.e. gets rid of network basis.

bool ClpFactorization::needToReorder | ( |  | ) | const

Says whether to redo pivot order.

bool ClpFactorization::networkBasis | ( |  | ) | const`[inline]`

Says if a network basis.

Definition at line 380 of file ClpFactorization.hpp.

void ClpFactorization::getWeights | ( | int * | weights | ) | const

Fills weighted row list.

## Member Data Documentation

ClpNetworkBasis* ClpFactorization::networkBasis_`[private]`

Pointer to network basis.

Definition at line 400 of file ClpFactorization.hpp.

CoinFactorization* ClpFactorization::coinFactorizationA_`[private]`

Pointer to CoinFactorization.

Definition at line 404 of file ClpFactorization.hpp.

CoinOtherFactorization* ClpFactorization::coinFactorizationB_`[private]`

Pointer to CoinOtherFactorization.

Definition at line 406 of file ClpFactorization.hpp.

int ClpFactorization::forceB_`[private]`

If nonzero force use of 1,dense 2,small 3,osl.

Definition at line 412 of file ClpFactorization.hpp.

int ClpFactorization::goOslThreshold_`[private]`

Switch to osl if number rows <= this.

Definition at line 414 of file ClpFactorization.hpp.

int ClpFactorization::goSmallThreshold_`[private]`

Switch to small if number rows <= this.

Definition at line 416 of file ClpFactorization.hpp.

int ClpFactorization::goDenseThreshold_`[private]`

Switch to dense if number rows <= this.

Definition at line 418 of file ClpFactorization.hpp.

double ClpFactorization::shortestAverage_`[mutable, private]`

For guessing when to re-factorize.

Definition at line 422 of file ClpFactorization.hpp.

double ClpFactorization::totalInR_`[mutable, private]`

Pointer to network basis.

Definition at line 423 of file ClpFactorization.hpp.

double ClpFactorization::totalInIncreasingU_`[mutable, private]`

Pointer to network basis.

Definition at line 424 of file ClpFactorization.hpp.

int ClpFactorization::endLengthU_`[mutable, private]`

Pointer to network basis.

Definition at line 425 of file ClpFactorization.hpp.

int ClpFactorization::lastNumberPivots_`[mutable, private]`

Pointer to network basis.

Definition at line 426 of file ClpFactorization.hpp.

int ClpFactorization::effectiveStartNumberU_`[mutable, private]`

Pointer to network basis.

Definition at line 427 of file ClpFactorization.hpp.

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

- /home/coin/svn-release/Alps-1.5.0/Clp/src/ClpFactorization.hpp