12#ifndef CoinDenseFactorization_H
13#define CoinDenseFactorization_H
21#if COIN_FACTORIZATION_DENSE_CODE == 2
22#undef COIN_FACTORIZATION_DENSE_CODE
116#ifndef COIN_FAST_CODE
193 virtual void postProcess(
const int *sequence,
int *pivotVariable) = 0;
211 bool checkBeforeModifying =
false,
212 double acceptablePivot = 1.0e-8)
227 bool noPermute =
false)
233 bool noPermute =
false)
const = 0;
238 bool noPermute =
false)
256#ifndef COIN_FAST_CODE
261#define slackValue_ -1.0
343 virtual void postProcess(
const int *sequence,
int *pivotVariable);
372 bool checkBeforeModifying =
false,
373 double acceptablePivot = 1.0e-8);
395 bool noPermute =
false)
const;
400 bool noPermute =
false);
double CoinFactorizationDouble
virtual CoinOtherFactorization * clone() const
Clone.
virtual int factor()
Does most of factorization returning status 0 - OK -99 - needs more memory -1 - singular - use number...
void gutsOfInitialize()
The real work of constructor.
friend void CoinDenseFactorizationUnitTest(const std::string &mpsDir)
void clearArrays()
Get rid of all memory.
virtual int * indices() const
Returns array to put basis indices in.
void gutsOfDestructor()
The real work of desstructor.
virtual void postProcess(const int *sequence, int *pivotVariable)
Does post processing on valid factorization - putting variables on correct rows.
virtual int * permute() const
Returns permute in.
virtual void makeNonSingular(int *sequence, int numberColumns)
Makes a non-singular basis by replacing variables.
virtual void getAreas(int numberRows, int numberColumns, int maximumL, int maximumU)
Gets space for a factorization.
virtual ~CoinDenseFactorization()
Destructor.
CoinDenseFactorization & operator=(const CoinDenseFactorization &other)
= copy
int checkPivot(double saveFromU, double oldPivot) const
Returns accuracy status of replaceColumn returns 0=OK, 1=Probably OK, 2=singular.
double maximumCoefficient() const
Returns maximum absolute value in factorization.
void gutsOfCopy(const CoinDenseFactorization &other)
The real work of copy.
virtual void preProcess()
PreProcesses column ordered copy of basis.
CoinDenseFactorization(const CoinDenseFactorization &other)
Copy constructor.
virtual int updateTwoColumnsFT(CoinIndexedVector *regionSparse1, CoinIndexedVector *regionSparse2, CoinIndexedVector *regionSparse3, bool noPermute=false)
does FTRAN on two columns
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.
CoinDenseFactorization()
Default constructor.
virtual int updateColumnTranspose(CoinIndexedVector *regionSparse, CoinIndexedVector *regionSparse2) const
Updates one column (BTRAN) from regionSparse2 regionSparse starts as zero and is zero at end Note - i...
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 checkBeforeModify...
virtual int numberElements() const
Total number of elements in factorization.
virtual int updateColumnFT(CoinIndexedVector *regionSparse, CoinIndexedVector *regionSparse2, bool=false)
Updates one column (FTRAN) from regionSparse2 Tries to do FT update number returned is negative if no...
int factorElements_
Number of elements after factorization.
int numberGoodColumns() const
Number of good columns in factorization.
int maximumSpace_
Maximum length of iterating area.
virtual int numberElements() const =0
Total number of elements in factorization.
void setStatus(int value)
Sets status.
double slackValue_
Whether slack value is +1 or -1.
void pivotTolerance(double value)
double pivotTolerance_
Pivot tolerance.
int numberPivots_
Number pivots since last factorization.
double slackValue() const
Whether slack value is +1 or -1.
CoinOtherFactorization & operator=(const CoinOtherFactorization &other)
= copy
double zeroTolerance_
Zero tolerance.
double zeroTolerance() const
Zero tolerance.
int numberRows_
Number of Rows in factorization.
virtual CoinFactorizationDouble * elements() const
Returns array to put basis elements in.
virtual int * indices() const =0
Returns array to put basis indices in.
virtual void getAreas(int numberRows, int numberColumns, int maximumL, int maximumU)=0
Gets space for a factorization.
virtual int * intWorkArea() const
Returns int work area.
void setNumberRows(int value)
Set number of Rows after factorization.
int maximumRows_
Maximum rows ever (i.e. use to copy arrays etc)
virtual void makeNonSingular(int *sequence, int numberColumns)=0
Makes a non-singular basis by replacing variables.
CoinOtherFactorization(const CoinOtherFactorization &other)
Copy constructor.
virtual int updateTwoColumnsFT(CoinIndexedVector *regionSparse1, CoinIndexedVector *regionSparse2, CoinIndexedVector *regionSparse3, bool noPermute=false)=0
does FTRAN on two columns
virtual bool wantsTableauColumn() const
Returns true if wants tableauColumn in replaceColumn.
int maximumPivots_
Maximum number of pivots before factorization.
virtual void maximumPivots(int value)
Set maximum pivots.
void setPivots(int value)
Sets number of pivots since factorization.
virtual int updateColumn(CoinIndexedVector *regionSparse, CoinIndexedVector *regionSparse2, bool noPermute=false) const =0
This version has same effect as above with FTUpdate==false so number returned is always >=0.
CoinFactorizationDouble * workArea_
Work area of numberRows_.
CoinFactorizationDouble * elements_
Elements of factorization and updates length is maxR*maxR+maxSpace will always be long enough so can ...
virtual int * numberInColumn() const
Number of entries in each column.
virtual int * permute() const =0
Returns permute in.
int numberColumns_
Number of Columns in factorization.
int numberRows() const
Number of Rows after factorization.
virtual void postProcess(const int *sequence, int *pivotVariable)=0
Does post processing on valid factorization - putting variables on correct rows.
virtual int * permuteBack() const
Returns permute back.
int status_
Status of factorization.
double getAccuracyCheck() const
virtual int updateColumnTranspose(CoinIndexedVector *regionSparse, CoinIndexedVector *regionSparse2) const =0
Updates one column (BTRAN) from regionSparse2 regionSparse starts as zero and is zero at end Note - i...
virtual int updateColumnFT(CoinIndexedVector *regionSparse, CoinIndexedVector *regionSparse2, bool noPermute=false)=0
Updates one column (FTRAN) from regionSparse2 Tries to do FT update number returned is negative if no...
virtual int * starts() const
Returns array to put basis starts in.
void setSolveMode(int value)
Set solve mode e.g.
virtual void setUsefulInformation(const int *info, int whereFrom)
Useful information for factorization 0 - iteration number whereFrom is 0 for factorize and 1 for repl...
virtual void preProcess()=0
PreProcesses column ordered copy of basis.
virtual ~CoinOtherFactorization()
Destructor.
double relaxCheck_
Relax check on accuracy in replaceColumn.
int solveMode_
Solve mode e.g.
virtual CoinFactorizationDouble * workArea() const
Returns work area.
virtual int * numberInRow() const
Number of entries in each row.
virtual int replaceColumn(CoinIndexedVector *regionSparse, int pivotRow, double pivotCheck, bool checkBeforeModifying=false, double acceptablePivot=1.0e-8)=0
Replaces one Column to basis, returns 0=OK, 1=Probably OK, 2=singular, 3=no room If checkBeforeModify...
void relaxAccuracyCheck(double value)
Allows change of pivot accuracy check 1.0 == none >1.0 relaxed.
int solveMode() const
Get solve mode e.g.
int maximumPivots() const
Maximum number of pivots between factorizations.
virtual int * pivotRow() const
Returns pivot row.
int pivots() const
Returns number of pivots since factorization.
void zeroTolerance(double value)
int numberGoodU_
Number factorized in U (not row singletons)
CoinOtherFactorization()
Default constructor.
double pivotTolerance() const
Pivot tolerance.
int status() const
Returns status.
virtual int factor()=0
Does most of factorization returning status 0 - OK -99 - needs more memory -1 - singular - use number...
virtual void clearArrays()
Get rid of all memory.
virtual CoinOtherFactorization * clone() const =0
Clone.
void slackValue(double value)
int numberColumns() const
Total number of columns in factorization.
int * pivotRow_
Pivot row.
Sparse Matrix Base Class.