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