Go to the documentation of this file.
13 #ifndef CoinDenseFactorization_H
14 #define CoinDenseFactorization_H
22 #if COIN_FACTORIZATION_DENSE_CODE == 2
23 #undef COIN_FACTORIZATION_DENSE_CODE
49 inline int status ( )
const {
100 #ifndef COIN_FAST_CODE
147 virtual int *
indices()
const = 0;
171 virtual void postProcess(
const int * sequence,
int * pivotVariable) = 0;
189 bool checkBeforeModifying=
false,
190 double acceptablePivot=1.0e-8)=0;
204 bool noPermute=
false) = 0;
209 bool noPermute=
false)
const = 0;
214 bool noPermute=
false) = 0;
232 #ifndef COIN_FAST_CODE
237 #define slackValue_ -1.0
322 virtual void postProcess(
const int * sequence,
int * pivotVariable);
350 bool checkBeforeModifying=
false,
351 double acceptablePivot=1.0e-8);
371 bool noPermute=
false)
const;
376 bool noPermute=
false);
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.
void setNumberRows(int value)
Set number of Rows after factorization.
CoinOtherFactorization & operator=(const CoinOtherFactorization &other)
= copy
virtual int numberElements() const =0
Total number of elements in factorization.
void zeroTolerance(double value)
virtual void postProcess(const int *sequence, int *pivotVariable)=0
Does post processing on valid factorization - putting variables on correct rows.
virtual ~CoinDenseFactorization()
Destructor.
virtual CoinOtherFactorization * clone() const =0
Clone.
int maximumPivots() const
Maximum number of pivots between factorizations.
double getAccuracyCheck() const
void gutsOfInitialize()
The real work of constructor.
double CoinFactorizationDouble
void clearArrays()
Get rid of all memory.
int solveMode_
Solve mode e.g.
virtual void makeNonSingular(int *sequence, int numberColumns)
Makes a non-singular basis by replacing variables.
double zeroTolerance_
Zero tolerance.
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 int * numberInRow() const
Number of entries in each row.
void setSolveMode(int value)
Set solve mode e.g.
virtual void clearArrays()
Get rid of all memory.
int numberRows() const
Number of Rows after factorization.
virtual int * pivotRow() const
Returns pivot row.
void pivotTolerance(double value)
void gutsOfDestructor()
The real work of desstructor.
double maximumCoefficient() const
Returns maximum absolute value in factorization.
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...
CoinOtherFactorization(const CoinOtherFactorization &other)
Copy constructor.
virtual void maximumPivots(int value)
Set maximum pivots.
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 * numberInColumn() const
Number of entries in each column.
double slackValue() const
Whether slack value is +1 or -1.
void gutsOfCopy(const CoinDenseFactorization &other)
The real work of copy.
void slackValue(double value)
void setStatus(int value)
Sets status.
int numberGoodU_
Number factorized in U (not row singletons)
int maximumPivots_
Maximum number of pivots before factorization.
virtual void makeNonSingular(int *sequence, int numberColumns)=0
Makes a non-singular basis by replacing variables.
virtual void preProcess()
PreProcesses column ordered copy of basis.
virtual void preProcess()=0
PreProcesses column ordered copy of basis.
double slackValue_
Whether slack value is +1 or -1.
double pivotTolerance() const
Pivot tolerance.
int numberRows_
Number of Rows in factorization.
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...
int pivots() const
Returns number of pivots since factorization.
virtual void getAreas(int numberRows, int numberColumns, CoinBigIndex maximumL, CoinBigIndex maximumU)=0
Gets space for a factorization.
double relaxCheck_
Relax check on accuracy in replaceColumn.
double zeroTolerance() const
Zero tolerance.
int checkPivot(double saveFromU, double oldPivot) const
Returns accuracy status of replaceColumn returns 0=OK, 1=Probably OK, 2=singular.
void setPivots(int value)
Sets number of pivots since factorization.
CoinBigIndex maximumSpace_
Maximum length of iterating area.
virtual int numberElements() const
Total number of elements in factorization.
virtual int updateTwoColumnsFT(CoinIndexedVector *regionSparse1, CoinIndexedVector *regionSparse2, CoinIndexedVector *regionSparse3, bool noPermute=false)
does FTRAN on two columns
CoinOtherFactorization()
Default constructor.
virtual void postProcess(const int *sequence, int *pivotVariable)
Does post processing on valid factorization - putting variables on correct rows.
virtual int * permuteBack() const
Returns permute back.
int numberColumns() const
Total number of columns in factorization.
CoinFactorizationDouble * elements_
Elements of factorization and updates length is maxR*maxR+maxSpace will always be long enough so can ...
int numberGoodColumns() const
Number of good columns in factorization.
virtual ~CoinOtherFactorization()
Destructor.
CoinBigIndex factorElements_
Number of elements after factorization.
Abstract base class which also has some scalars so can be used from Dense or Simp.
int maximumRows_
Maximum rows ever (i.e. use to copy arrays etc)
virtual int * indices() const =0
Returns array to put basis indices in.
Sparse Matrix Base Class.
virtual CoinFactorizationDouble * elements() const
Returns array to put basis elements in.
int solveMode() const
Get solve mode e.g.
CoinDenseFactorization(const CoinDenseFactorization &other)
Copy constructor.
CoinDenseFactorization()
Default constructor.
virtual int * permute() const =0
Returns permute in.
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...
double pivotTolerance_
Pivot tolerance.
int status() const
Returns status.
virtual int updateTwoColumnsFT(CoinIndexedVector *regionSparse1, CoinIndexedVector *regionSparse2, CoinIndexedVector *regionSparse3, bool noPermute=false)=0
does FTRAN on two columns
virtual CoinFactorizationDouble * workArea() const
Returns work area.
CoinFactorizationDouble * workArea_
Work area of numberRows_.
virtual bool wantsTableauColumn() const
Returns true if wants tableauColumn in replaceColumn.
virtual CoinBigIndex * starts() const
Returns array to put basis starts in.
virtual CoinOtherFactorization * clone() const
Clone.
This deals with Factorization and Updates This is a simple dense version so other people can write a ...
virtual int factor()=0
Does most of factorization returning status 0 - OK -99 - needs more memory -1 - singular - use number...
virtual int * indices() const
Returns array to put basis indices in.
friend void CoinDenseFactorizationUnitTest(const std::string &mpsDir)
virtual int * permute() const
Returns permute in.
virtual int * intWorkArea() const
Returns int work area.
int status_
Status of factorization.
CoinDenseFactorization & operator=(const CoinDenseFactorization &other)
= copy
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...
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.
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...
int numberColumns_
Number of Columns in factorization.
int * pivotRow_
Pivot row.
void relaxAccuracyCheck(double value)
Allows change of pivot accuracy check 1.0 == none >1.0 relaxed.
virtual int factor()
Does most of factorization returning status 0 - OK -99 - needs more memory -1 - singular - use number...
virtual void getAreas(int numberRows, int numberColumns, CoinBigIndex maximumL, CoinBigIndex maximumU)
Gets space for a factorization.
int numberPivots_
Number pivots since last factorization.