Cbc  2.9.9
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Member Functions | Friends | List of all members
CoinSimpFactorization Class Reference

#include <CoinSimpFactorization.hpp>

+ Inheritance diagram for CoinSimpFactorization:
+ Collaboration diagram for CoinSimpFactorization:

Public Member Functions

void gutsOfDestructor ()
 The real work of destructor. More...
 
void gutsOfInitialize ()
 The real work of constructor. More...
 
void gutsOfCopy (const CoinSimpFactorization &other)
 The real work of copy. More...
 
void factorize (int numberOfRows, int numberOfColumns, const int colStarts[], const int indicesRow[], const double elements[])
 calls factorization More...
 
int mainLoopFactor (FactorPointers &pointers)
 main loop of factorization More...
 
void copyLbyRows ()
 copies L by rows More...
 
void copyUbyColumns ()
 copies U by columns More...
 
int findPivot (FactorPointers &pointers, int &r, int &s, bool &ifSlack)
 finds a pivot element using Markowitz count More...
 
int findPivotShCol (FactorPointers &pointers, int &r, int &s)
 finds a pivot in a shortest column More...
 
int findPivotSimp (FactorPointers &pointers, int &r, int &s)
 finds a pivot in the first column available More...
 
void GaussEliminate (FactorPointers &pointers, int &r, int &s)
 does Gauss elimination More...
 
int findShortRow (const int column, const int length, int &minRow, int &minRowLength, FactorPointers &pointers)
 finds short row that intersects a given column More...
 
int findShortColumn (const int row, const int length, int &minCol, int &minColLength, FactorPointers &pointers)
 finds short column that intersects a given row More...
 
double findMaxInRrow (const int row, FactorPointers &pointers)
 finds maximum absolute value in a row More...
 
void pivoting (const int pivotRow, const int pivotColumn, const double invPivot, FactorPointers &pointers)
 does pivoting More...
 
void updateCurrentRow (const int pivotRow, const int row, const double multiplier, FactorPointers &pointers, int &newNonZeros)
 part of pivoting More...
 
void increaseLsize ()
 allocates more space for L More...
 
void increaseRowSize (const int row, const int newSize)
 allocates more space for a row of U More...
 
void increaseColSize (const int column, const int newSize, const bool b)
 allocates more space for a column of U More...
 
void enlargeUrow (const int numNewElements)
 allocates more space for rows of U More...
 
void enlargeUcol (const int numNewElements, const bool b)
 allocates more space for columns of U More...
 
int findInRow (const int row, const int column)
 finds a given row in a column More...
 
int findInColumn (const int column, const int row)
 finds a given column in a row More...
 
void removeRowFromActSet (const int row, FactorPointers &pointers)
 declares a row inactive More...
 
void removeColumnFromActSet (const int column, FactorPointers &pointers)
 declares a column inactive More...
 
void allocateSpaceForU ()
 allocates space for U More...
 
void allocateSomeArrays ()
 allocates several working arrays More...
 
void initialSomeNumbers ()
 initializes some numbers More...
 
void Lxeqb (double *b) const
 solves L x = b More...
 
void Lxeqb2 (double *b1, double *b2) const
 same as above but with two rhs More...
 
void Uxeqb (double *b, double *sol) const
 solves U x = b More...
 
void Uxeqb2 (double *b1, double *sol1, double *sol2, double *b2) const
 same as above but with two rhs More...
 
void xLeqb (double *b) const
 solves x L = b More...
 
void xUeqb (double *b, double *sol) const
 solves x U = b More...
 
int LUupdate (int newBasicCol)
 updates factorization after a Simplex iteration More...
 
void newEta (int row, int numNewElements)
 creates a new eta vector More...
 
void copyRowPermutations ()
 makes a copy of row permutations More...
 
void Hxeqb (double *b) const
 solves H x = b, where H is a product of eta matrices More...
 
void Hxeqb2 (double *b1, double *b2) const
 same as above but with two rhs More...
 
void xHeqb (double *b) const
 solves x H = b More...
 
void ftran (double *b, double *sol, bool save) const
 does FTRAN More...
 
void ftran2 (double *b1, double *sol1, double *b2, double *sol2) const
 same as above but with two columns More...
 
void btran (double *b, double *sol) const
 does BTRAN More...
 
Constructors and destructor and copy
 CoinSimpFactorization ()
 Default constructor. More...
 
 CoinSimpFactorization (const CoinSimpFactorization &other)
 Copy constructor. More...
 
virtual ~CoinSimpFactorization ()
 Destructor. More...
 
CoinSimpFactorizationoperator= (const CoinSimpFactorization &other)
 = copy More...
 
virtual CoinOtherFactorizationclone () const
 Clone. More...
 
Do factorization - public
virtual void getAreas (int numberRows, int numberColumns, CoinBigIndex maximumL, CoinBigIndex maximumU)
 Gets space for a factorization. More...
 
virtual void preProcess ()
 PreProcesses column ordered copy of basis. More...
 
virtual int factor ()
 Does most of factorization returning status 0 - OK -99 - needs more memory -1 - singular - use numberGoodColumns and redo. More...
 
virtual void postProcess (const int *sequence, int *pivotVariable)
 Does post processing on valid factorization - putting variables on correct rows. More...
 
virtual void makeNonSingular (int *sequence, int numberColumns)
 Makes a non-singular basis by replacing variables. More...
 
general stuff such as status
virtual int numberElements () const
 Total number of elements in factorization. More...
 
double maximumCoefficient () const
 Returns maximum absolute value in factorization. More...
 
rank one updates which do exist
virtual 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...
 
various uses of factorization (return code number elements)

which user may want to know about

virtual int updateColumnFT (CoinIndexedVector *regionSparse, CoinIndexedVector *regionSparse2, bool noPermute=false)
 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...
 
virtual 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...
 
virtual int updateTwoColumnsFT (CoinIndexedVector *regionSparse1, CoinIndexedVector *regionSparse2, CoinIndexedVector *regionSparse3, bool noPermute=false)
 does FTRAN on two columns More...
 
int upColumn (CoinIndexedVector *regionSparse, CoinIndexedVector *regionSparse2, bool noPermute=false, bool save=false) const
 does updatecolumn if save==true keeps column for replace column More...
 
virtual 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...
 
int upColumnTranspose (CoinIndexedVector *regionSparse, CoinIndexedVector *regionSparse2) const
 does updateColumnTranspose, the other is a wrapper More...
 
various uses of factorization

*** Below this user may not want to know about

which user may not want to know about (left over from my LP code)

void clearArrays ()
 Get rid of all memory. More...
 
int * indices () const
 Returns array to put basis indices in. More...
 
virtual int * permute () const
 Returns permute in. More...
 
- Public Member Functions inherited from CoinOtherFactorization
 CoinOtherFactorization ()
 Default constructor. More...
 
 CoinOtherFactorization (const CoinOtherFactorization &other)
 Copy constructor. More...
 
virtual ~CoinOtherFactorization ()
 Destructor. More...
 
CoinOtherFactorizationoperator= (const CoinOtherFactorization &other)
 = copy More...
 
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...
 
void setNumberRows (int value)
 Set number of Rows after factorization. More...
 
int numberRows () const
 Number of Rows after factorization. More...
 
int numberColumns () const
 Total number of columns in factorization. More...
 
int numberGoodColumns () const
 Number of good columns in factorization. More...
 
void relaxAccuracyCheck (double value)
 Allows change of pivot accuracy check 1.0 == none >1.0 relaxed. More...
 
double getAccuracyCheck () const
 
int maximumPivots () const
 Maximum number of pivots between factorizations. More...
 
virtual void maximumPivots (int value)
 Set maximum pivots. 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)
 
virtual CoinFactorizationDoubleelements () const
 Returns array to put basis elements in. More...
 
virtual int * pivotRow () const
 Returns pivot row. More...
 
virtual CoinFactorizationDoubleworkArea () const
 Returns work area. More...
 
virtual int * intWorkArea () const
 Returns int work area. More...
 
virtual int * numberInRow () const
 Number of entries in each row. More...
 
virtual int * numberInColumn () const
 Number of entries in each column. More...
 
virtual CoinBigIndexstarts () const
 Returns array to put basis starts in. More...
 
virtual int * permuteBack () const
 Returns permute back. More...
 
int solveMode () const
 Get solve mode e.g. More...
 
void setSolveMode (int value)
 Set solve mode e.g. More...
 
virtual bool wantsTableauColumn () const
 Returns true if wants tableauColumn in replaceColumn. More...
 
virtual void setUsefulInformation (const int *info, int whereFrom)
 Useful information for factorization 0 - iteration number whereFrom is 0 for factorize and 1 for replaceColumn. More...
 

Protected Member Functions

int checkPivot (double saveFromU, double oldPivot) const
 
More...
 

Protected Attributes

data
double * denseVector_
 work array (should be initialized to zero) More...
 
double * workArea2_
 work array More...
 
double * workArea3_
 work array More...
 
int * vecLabels_
 array of labels (should be initialized to zero) More...
 
int * indVector_
 array of indices More...
 
double * auxVector_
 auxiliary vector More...
 
int * auxInd_
 auxiliary vector More...
 
double * vecKeep_
 vector to keep for LUupdate More...
 
int * indKeep_
 indices of this vector More...
 
int keepSize_
 number of nonzeros More...
 
int * LrowStarts_
 Starts of the rows of L. More...
 
int * LrowLengths_
 Lengths of the rows of L. More...
 
double * Lrows_
 L by rows. More...
 
int * LrowInd_
 indices in the rows of L More...
 
int LrowSize_
 Size of Lrows_;. More...
 
int LrowCap_
 Capacity of Lrows_. More...
 
int * LcolStarts_
 Starts of the columns of L. More...
 
int * LcolLengths_
 Lengths of the columns of L. More...
 
double * Lcolumns_
 L by columns. More...
 
int * LcolInd_
 indices in the columns of L More...
 
int LcolSize_
 numbers of elements in L More...
 
int LcolCap_
 maximum capacity of L More...
 
int * UrowStarts_
 Starts of the rows of U. More...
 
int * UrowLengths_
 Lengths of the rows of U. More...
 
double * Urows_
 U by rows. More...
 
int * UrowInd_
 Indices in the rows of U. More...
 
int UrowMaxCap_
 maximum capacity of Urows More...
 
int UrowEnd_
 number of used places in Urows More...
 
int firstRowInU_
 first row in U More...
 
int lastRowInU_
 last row in U More...
 
int * prevRowInU_
 previous row in U More...
 
int * nextRowInU_
 next row in U More...
 
int * UcolStarts_
 Starts of the columns of U. More...
 
int * UcolLengths_
 Lengths of the columns of U. More...
 
double * Ucolumns_
 U by columns. More...
 
int * UcolInd_
 Indices in the columns of U. More...
 
int * prevColInU_
 previous column in U More...
 
int * nextColInU_
 next column in U More...
 
int firstColInU_
 first column in U More...
 
int lastColInU_
 last column in U More...
 
int UcolMaxCap_
 maximum capacity of Ucolumns_ More...
 
int UcolEnd_
 last used position in Ucolumns_ More...
 
int * colSlack_
 indicator of slack variables More...
 
double * invOfPivots_
 inverse values of the elements of diagonal of U More...
 
int * colOfU_
 permutation of columns More...
 
int * colPosition_
 position of column after permutation More...
 
int * rowOfU_
 permutations of rows More...
 
int * rowPosition_
 position of row after permutation More...
 
int * secRowOfU_
 permutations of rows during LUupdate More...
 
int * secRowPosition_
 position of row after permutation during LUupdate More...
 
int * EtaPosition_
 position of Eta vector More...
 
int * EtaStarts_
 Starts of eta vectors. More...
 
int * EtaLengths_
 Lengths of eta vectors. More...
 
int * EtaInd_
 columns of eta vectors More...
 
double * Eta_
 elements of eta vectors More...
 
int EtaSize_
 number of elements in Eta_ More...
 
int lastEtaRow_
 last eta row More...
 
int maxEtaRows_
 maximum number of eta vectors More...
 
int EtaMaxCap_
 Capacity of Eta_. More...
 
int minIncrease_
 minimum storage increase More...
 
double updateTol_
 maximum size for the diagonal of U after update More...
 
bool doSuhlHeuristic_
 do Shul heuristic More...
 
double maxU_
 maximum of U More...
 
double maxGrowth_
 bound on the growth rate More...
 
double maxA_
 maximum of A More...
 
int pivotCandLimit_
 maximum number of candidates for pivot More...
 
int numberSlacks_
 number of slacks in basis More...
 
int firstNumberSlacks_
 number of slacks in irst basis More...
 
- Protected Attributes inherited from CoinOtherFactorization
double pivotTolerance_
 Pivot tolerance. More...
 
double zeroTolerance_
 Zero tolerance. More...
 
double slackValue_
 Whether slack value is +1 or -1. More...
 
double relaxCheck_
 Relax check on accuracy in replaceColumn. More...
 
CoinBigIndex factorElements_
 Number of elements after factorization. More...
 
int numberRows_
 Number of Rows in factorization. More...
 
int numberColumns_
 Number of Columns in factorization. More...
 
int numberGoodU_
 Number factorized in U (not row singletons) More...
 
int maximumPivots_
 Maximum number of pivots before factorization. More...
 
int numberPivots_
 Number pivots since last factorization. More...
 
int status_
 Status of factorization. More...
 
int maximumRows_
 Maximum rows ever (i.e. use to copy arrays etc) More...
 
CoinBigIndex maximumSpace_
 Maximum length of iterating area. More...
 
int * pivotRow_
 Pivot row. More...
 
CoinFactorizationDoubleelements_
 Elements of factorization and updates length is maxR*maxR+maxSpace will always be long enough so can have nR*nR ints in maxSpace. More...
 
CoinFactorizationDoubleworkArea_
 Work area of numberRows_. More...
 
int solveMode_
 Solve mode e.g. More...
 

Friends

void CoinSimpFactorizationUnitTest (const std::string &mpsDir)
 

Detailed Description

Definition at line 38 of file CoinSimpFactorization.hpp.

Constructor & Destructor Documentation

CoinSimpFactorization::CoinSimpFactorization ( )

Default constructor.

CoinSimpFactorization::CoinSimpFactorization ( const CoinSimpFactorization other)

Copy constructor.

virtual CoinSimpFactorization::~CoinSimpFactorization ( )
virtual

Destructor.

Member Function Documentation

CoinSimpFactorization& CoinSimpFactorization::operator= ( const CoinSimpFactorization other)

= copy

virtual CoinOtherFactorization* CoinSimpFactorization::clone ( ) const
virtual

Clone.

Implements CoinOtherFactorization.

virtual void CoinSimpFactorization::getAreas ( int  numberRows,
int  numberColumns,
CoinBigIndex  maximumL,
CoinBigIndex  maximumU 
)
virtual

Gets space for a factorization.

Implements CoinOtherFactorization.

virtual void CoinSimpFactorization::preProcess ( )
virtual

PreProcesses column ordered copy of basis.

Implements CoinOtherFactorization.

virtual int CoinSimpFactorization::factor ( )
virtual

Does most of factorization returning status 0 - OK -99 - needs more memory -1 - singular - use numberGoodColumns and redo.

Implements CoinOtherFactorization.

virtual void CoinSimpFactorization::postProcess ( const int *  sequence,
int *  pivotVariable 
)
virtual

Does post processing on valid factorization - putting variables on correct rows.

Implements CoinOtherFactorization.

virtual void CoinSimpFactorization::makeNonSingular ( int *  sequence,
int  numberColumns 
)
virtual

Makes a non-singular basis by replacing variables.

Implements CoinOtherFactorization.

virtual int CoinSimpFactorization::numberElements ( ) const
inlinevirtual

Total number of elements in factorization.

Implements CoinOtherFactorization.

Definition at line 83 of file CoinSimpFactorization.hpp.

double CoinSimpFactorization::maximumCoefficient ( ) const

Returns maximum absolute value in factorization.

virtual int CoinSimpFactorization::replaceColumn ( CoinIndexedVector regionSparse,
int  pivotRow,
double  pivotCheck,
bool  checkBeforeModifying = false,
double  acceptablePivot = 1.0e-8 
)
virtual

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

Implements CoinOtherFactorization.

virtual int CoinSimpFactorization::updateColumnFT ( CoinIndexedVector regionSparse,
CoinIndexedVector regionSparse2,
bool  noPermute = false 
)
virtual

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

Implements CoinOtherFactorization.

virtual int CoinSimpFactorization::updateColumn ( CoinIndexedVector regionSparse,
CoinIndexedVector regionSparse2,
bool  noPermute = false 
) const
virtual

This version has same effect as above with FTUpdate==false so number returned is always >=0.

Implements CoinOtherFactorization.

virtual int CoinSimpFactorization::updateTwoColumnsFT ( CoinIndexedVector regionSparse1,
CoinIndexedVector regionSparse2,
CoinIndexedVector regionSparse3,
bool  noPermute = false 
)
virtual

does FTRAN on two columns

Implements CoinOtherFactorization.

int CoinSimpFactorization::upColumn ( CoinIndexedVector regionSparse,
CoinIndexedVector regionSparse2,
bool  noPermute = false,
bool  save = false 
) const

does updatecolumn if save==true keeps column for replace column

virtual int CoinSimpFactorization::updateColumnTranspose ( CoinIndexedVector regionSparse,
CoinIndexedVector regionSparse2 
) const
virtual

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.

Implements CoinOtherFactorization.

int CoinSimpFactorization::upColumnTranspose ( CoinIndexedVector regionSparse,
CoinIndexedVector regionSparse2 
) const

does updateColumnTranspose, the other is a wrapper

void CoinSimpFactorization::clearArrays ( )
inlinevirtual

Get rid of all memory.

Reimplemented from CoinOtherFactorization.

Definition at line 151 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::indices ( ) const
inlinevirtual

Returns array to put basis indices in.

Implements CoinOtherFactorization.

Definition at line 154 of file CoinSimpFactorization.hpp.

virtual int* CoinSimpFactorization::permute ( ) const
inlinevirtual

Returns permute in.

Implements CoinOtherFactorization.

Definition at line 157 of file CoinSimpFactorization.hpp.

void CoinSimpFactorization::gutsOfDestructor ( )

The real work of destructor.

void CoinSimpFactorization::gutsOfInitialize ( )

The real work of constructor.

void CoinSimpFactorization::gutsOfCopy ( const CoinSimpFactorization other)

The real work of copy.

void CoinSimpFactorization::factorize ( int  numberOfRows,
int  numberOfColumns,
const int  colStarts[],
const int  indicesRow[],
const double  elements[] 
)

calls factorization

int CoinSimpFactorization::mainLoopFactor ( FactorPointers pointers)

main loop of factorization

void CoinSimpFactorization::copyLbyRows ( )

copies L by rows

void CoinSimpFactorization::copyUbyColumns ( )

copies U by columns

int CoinSimpFactorization::findPivot ( FactorPointers pointers,
int &  r,
int &  s,
bool &  ifSlack 
)

finds a pivot element using Markowitz count

int CoinSimpFactorization::findPivotShCol ( FactorPointers pointers,
int &  r,
int &  s 
)

finds a pivot in a shortest column

int CoinSimpFactorization::findPivotSimp ( FactorPointers pointers,
int &  r,
int &  s 
)

finds a pivot in the first column available

void CoinSimpFactorization::GaussEliminate ( FactorPointers pointers,
int &  r,
int &  s 
)

does Gauss elimination

int CoinSimpFactorization::findShortRow ( const int  column,
const int  length,
int &  minRow,
int &  minRowLength,
FactorPointers pointers 
)

finds short row that intersects a given column

int CoinSimpFactorization::findShortColumn ( const int  row,
const int  length,
int &  minCol,
int &  minColLength,
FactorPointers pointers 
)

finds short column that intersects a given row

double CoinSimpFactorization::findMaxInRrow ( const int  row,
FactorPointers pointers 
)

finds maximum absolute value in a row

void CoinSimpFactorization::pivoting ( const int  pivotRow,
const int  pivotColumn,
const double  invPivot,
FactorPointers pointers 
)

does pivoting

void CoinSimpFactorization::updateCurrentRow ( const int  pivotRow,
const int  row,
const double  multiplier,
FactorPointers pointers,
int &  newNonZeros 
)

part of pivoting

void CoinSimpFactorization::increaseLsize ( )

allocates more space for L

void CoinSimpFactorization::increaseRowSize ( const int  row,
const int  newSize 
)

allocates more space for a row of U

void CoinSimpFactorization::increaseColSize ( const int  column,
const int  newSize,
const bool  b 
)

allocates more space for a column of U

void CoinSimpFactorization::enlargeUrow ( const int  numNewElements)

allocates more space for rows of U

void CoinSimpFactorization::enlargeUcol ( const int  numNewElements,
const bool  b 
)

allocates more space for columns of U

int CoinSimpFactorization::findInRow ( const int  row,
const int  column 
)

finds a given row in a column

int CoinSimpFactorization::findInColumn ( const int  column,
const int  row 
)

finds a given column in a row

void CoinSimpFactorization::removeRowFromActSet ( const int  row,
FactorPointers pointers 
)

declares a row inactive

void CoinSimpFactorization::removeColumnFromActSet ( const int  column,
FactorPointers pointers 
)

declares a column inactive

void CoinSimpFactorization::allocateSpaceForU ( )

allocates space for U

void CoinSimpFactorization::allocateSomeArrays ( )

allocates several working arrays

void CoinSimpFactorization::initialSomeNumbers ( )

initializes some numbers

void CoinSimpFactorization::Lxeqb ( double *  b) const

solves L x = b

void CoinSimpFactorization::Lxeqb2 ( double *  b1,
double *  b2 
) const

same as above but with two rhs

void CoinSimpFactorization::Uxeqb ( double *  b,
double *  sol 
) const

solves U x = b

void CoinSimpFactorization::Uxeqb2 ( double *  b1,
double *  sol1,
double *  sol2,
double *  b2 
) const

same as above but with two rhs

void CoinSimpFactorization::xLeqb ( double *  b) const

solves x L = b

void CoinSimpFactorization::xUeqb ( double *  b,
double *  sol 
) const

solves x U = b

int CoinSimpFactorization::LUupdate ( int  newBasicCol)

updates factorization after a Simplex iteration

void CoinSimpFactorization::newEta ( int  row,
int  numNewElements 
)

creates a new eta vector

void CoinSimpFactorization::copyRowPermutations ( )

makes a copy of row permutations

void CoinSimpFactorization::Hxeqb ( double *  b) const

solves H x = b, where H is a product of eta matrices

void CoinSimpFactorization::Hxeqb2 ( double *  b1,
double *  b2 
) const

same as above but with two rhs

void CoinSimpFactorization::xHeqb ( double *  b) const

solves x H = b

void CoinSimpFactorization::ftran ( double *  b,
double *  sol,
bool  save 
) const

does FTRAN

void CoinSimpFactorization::ftran2 ( double *  b1,
double *  sol1,
double *  b2,
double *  sol2 
) const

same as above but with two columns

void CoinSimpFactorization::btran ( double *  b,
double *  sol 
) const

does BTRAN

int CoinSimpFactorization::checkPivot ( double  saveFromU,
double  oldPivot 
) const
protected


Returns accuracy status of replaceColumn returns 0=OK, 1=Probably OK, 2=singular

Friends And Related Function Documentation

void CoinSimpFactorizationUnitTest ( const std::string &  mpsDir)
friend

Member Data Documentation

double* CoinSimpFactorization::denseVector_
protected

work array (should be initialized to zero)

Definition at line 273 of file CoinSimpFactorization.hpp.

double* CoinSimpFactorization::workArea2_
protected

work array

Definition at line 275 of file CoinSimpFactorization.hpp.

double* CoinSimpFactorization::workArea3_
protected

work array

Definition at line 277 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::vecLabels_
protected

array of labels (should be initialized to zero)

Definition at line 279 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::indVector_
protected

array of indices

Definition at line 281 of file CoinSimpFactorization.hpp.

double* CoinSimpFactorization::auxVector_
protected

auxiliary vector

Definition at line 284 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::auxInd_
protected

auxiliary vector

Definition at line 286 of file CoinSimpFactorization.hpp.

double* CoinSimpFactorization::vecKeep_
protected

vector to keep for LUupdate

Definition at line 289 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::indKeep_
protected

indices of this vector

Definition at line 291 of file CoinSimpFactorization.hpp.

int CoinSimpFactorization::keepSize_
mutableprotected

number of nonzeros

Definition at line 293 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::LrowStarts_
protected

Starts of the rows of L.

Definition at line 298 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::LrowLengths_
protected

Lengths of the rows of L.

Definition at line 300 of file CoinSimpFactorization.hpp.

double* CoinSimpFactorization::Lrows_
protected

L by rows.

Definition at line 302 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::LrowInd_
protected

indices in the rows of L

Definition at line 304 of file CoinSimpFactorization.hpp.

int CoinSimpFactorization::LrowSize_
protected

Size of Lrows_;.

Definition at line 306 of file CoinSimpFactorization.hpp.

int CoinSimpFactorization::LrowCap_
protected

Capacity of Lrows_.

Definition at line 308 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::LcolStarts_
protected

Starts of the columns of L.

Definition at line 311 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::LcolLengths_
protected

Lengths of the columns of L.

Definition at line 313 of file CoinSimpFactorization.hpp.

double* CoinSimpFactorization::Lcolumns_
protected

L by columns.

Definition at line 315 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::LcolInd_
protected

indices in the columns of L

Definition at line 317 of file CoinSimpFactorization.hpp.

int CoinSimpFactorization::LcolSize_
protected

numbers of elements in L

Definition at line 319 of file CoinSimpFactorization.hpp.

int CoinSimpFactorization::LcolCap_
protected

maximum capacity of L

Definition at line 321 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::UrowStarts_
protected

Starts of the rows of U.

Definition at line 325 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::UrowLengths_
protected

Lengths of the rows of U.

Definition at line 327 of file CoinSimpFactorization.hpp.

double* CoinSimpFactorization::Urows_
protected

U by rows.

Definition at line 333 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::UrowInd_
protected

Indices in the rows of U.

Definition at line 335 of file CoinSimpFactorization.hpp.

int CoinSimpFactorization::UrowMaxCap_
protected

maximum capacity of Urows

Definition at line 337 of file CoinSimpFactorization.hpp.

int CoinSimpFactorization::UrowEnd_
protected

number of used places in Urows

Definition at line 339 of file CoinSimpFactorization.hpp.

int CoinSimpFactorization::firstRowInU_
protected

first row in U

Definition at line 341 of file CoinSimpFactorization.hpp.

int CoinSimpFactorization::lastRowInU_
protected

last row in U

Definition at line 343 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::prevRowInU_
protected

previous row in U

Definition at line 345 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::nextRowInU_
protected

next row in U

Definition at line 347 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::UcolStarts_
protected

Starts of the columns of U.

Definition at line 350 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::UcolLengths_
protected

Lengths of the columns of U.

Definition at line 352 of file CoinSimpFactorization.hpp.

double* CoinSimpFactorization::Ucolumns_
protected

U by columns.

Definition at line 358 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::UcolInd_
protected

Indices in the columns of U.

Definition at line 360 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::prevColInU_
protected

previous column in U

Definition at line 362 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::nextColInU_
protected

next column in U

Definition at line 364 of file CoinSimpFactorization.hpp.

int CoinSimpFactorization::firstColInU_
protected

first column in U

Definition at line 366 of file CoinSimpFactorization.hpp.

int CoinSimpFactorization::lastColInU_
protected

last column in U

Definition at line 368 of file CoinSimpFactorization.hpp.

int CoinSimpFactorization::UcolMaxCap_
protected

maximum capacity of Ucolumns_

Definition at line 370 of file CoinSimpFactorization.hpp.

int CoinSimpFactorization::UcolEnd_
protected

last used position in Ucolumns_

Definition at line 372 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::colSlack_
protected

indicator of slack variables

Definition at line 374 of file CoinSimpFactorization.hpp.

double* CoinSimpFactorization::invOfPivots_
protected

inverse values of the elements of diagonal of U

Definition at line 377 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::colOfU_
protected

permutation of columns

Definition at line 380 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::colPosition_
protected

position of column after permutation

Definition at line 382 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::rowOfU_
protected

permutations of rows

Definition at line 384 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::rowPosition_
protected

position of row after permutation

Definition at line 386 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::secRowOfU_
protected

permutations of rows during LUupdate

Definition at line 388 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::secRowPosition_
protected

position of row after permutation during LUupdate

Definition at line 390 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::EtaPosition_
protected

position of Eta vector

Definition at line 393 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::EtaStarts_
protected

Starts of eta vectors.

Definition at line 395 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::EtaLengths_
protected

Lengths of eta vectors.

Definition at line 397 of file CoinSimpFactorization.hpp.

int* CoinSimpFactorization::EtaInd_
protected

columns of eta vectors

Definition at line 399 of file CoinSimpFactorization.hpp.

double* CoinSimpFactorization::Eta_
protected

elements of eta vectors

Definition at line 401 of file CoinSimpFactorization.hpp.

int CoinSimpFactorization::EtaSize_
protected

number of elements in Eta_

Definition at line 403 of file CoinSimpFactorization.hpp.

int CoinSimpFactorization::lastEtaRow_
protected

last eta row

Definition at line 405 of file CoinSimpFactorization.hpp.

int CoinSimpFactorization::maxEtaRows_
protected

maximum number of eta vectors

Definition at line 407 of file CoinSimpFactorization.hpp.

int CoinSimpFactorization::EtaMaxCap_
protected

Capacity of Eta_.

Definition at line 409 of file CoinSimpFactorization.hpp.

int CoinSimpFactorization::minIncrease_
protected

minimum storage increase

Definition at line 412 of file CoinSimpFactorization.hpp.

double CoinSimpFactorization::updateTol_
protected

maximum size for the diagonal of U after update

Definition at line 414 of file CoinSimpFactorization.hpp.

bool CoinSimpFactorization::doSuhlHeuristic_
protected

do Shul heuristic

Definition at line 416 of file CoinSimpFactorization.hpp.

double CoinSimpFactorization::maxU_
protected

maximum of U

Definition at line 418 of file CoinSimpFactorization.hpp.

double CoinSimpFactorization::maxGrowth_
protected

bound on the growth rate

Definition at line 420 of file CoinSimpFactorization.hpp.

double CoinSimpFactorization::maxA_
protected

maximum of A

Definition at line 422 of file CoinSimpFactorization.hpp.

int CoinSimpFactorization::pivotCandLimit_
protected

maximum number of candidates for pivot

Definition at line 424 of file CoinSimpFactorization.hpp.

int CoinSimpFactorization::numberSlacks_
protected

number of slacks in basis

Definition at line 426 of file CoinSimpFactorization.hpp.

int CoinSimpFactorization::firstNumberSlacks_
protected

number of slacks in irst basis

Definition at line 428 of file CoinSimpFactorization.hpp.


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