12 #ifndef CoinOslFactorization_H
13 #define CoinOslFactorization_H
143 virtual void postProcess(
const int * sequence,
int * pivotVariable);
154 int rowIsBasic[],
int columnIsBasic[] ,
155 double areaFactor = 0.0 );
211 bool checkBeforeModifying=
false,
212 double acceptablePivot=1.0e-8);
226 bool noPermute=
false);
231 bool noPermute=
false)
const;
236 bool noPermute=
false);
270 int checkPivot(
double saveFromU,
double oldPivot)
const;
struct _EKKfactinfo EKKfactinfo
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 * indices() const
Get rid of all memory.
virtual int numberElements() const
Total number of elements in factorization.
CoinOslFactorization()
Default constructor.
virtual int * pivotRow() const
Returns pivot row.
int numberColumns_
Number of Columns in factorization.
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...
EKKfactinfo factInfo_
Osl factorization data.
virtual int * intWorkArea() const
Returns int work area.
int factorize(const CoinPackedMatrix &matrix, int rowIsBasic[], int columnIsBasic[], double areaFactor=0.0)
When part of LP - given by basic variables.
virtual int * numberInRow() const
Number of entries in each row.
virtual void postProcess(const int *sequence, int *pivotVariable)
Does post processing on valid factorization - putting variables on correct rows.
int numberColumns() const
Total number of columns in factorization.
int switch_off_sparse_update
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...
Abstract base class which also has some scalars so can be used from Dense or Simp.
This deals with Factorization and Updates This is ripped off from OSL!!!!!!!!!
Sparse Matrix Base Class.
virtual void clearArrays()
Get rid of all memory.
friend void CoinOslFactorizationUnitTest(const std::string &mpsDir)
virtual int * permuteBack() const
Returns permute back.
double CoinFactorizationDouble
virtual CoinOtherFactorization * clone() const
Clone.
double maximumCoefficient() const
Returns maximum absolute value in factorization.
int checkPivot(double saveFromU, double oldPivot) const
Returns accuracy status of replaceColumn returns 0=OK, 1=Probably OK, 2=singular. ...
virtual void preProcess()
PreProcesses column ordered copy of basis.
virtual void getAreas(int numberRows, int numberColumns, CoinBigIndex maximumL, CoinBigIndex maximumU)
Gets space for a factorization.
virtual CoinFactorizationDouble * elements() const
Returns array to put basis elements in.
virtual int * numberInColumn() const
Number of entries in each column.
virtual int factor()
Does most of factorization returning status 0 - OK -99 - needs more memory -1 - singular - use number...
int maximumPivots() const
Maximum number of pivots between factorizations.
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 CoinBigIndex * starts() const
Returns array to put basis starts in.
virtual void makeNonSingular(int *sequence, int numberColumns)
Makes a non-singular basis by replacing variables.
virtual int * permute() const
Returns permute in.
int numberRows() const
Number of Rows after factorization.
virtual int updateTwoColumnsFT(CoinIndexedVector *regionSparse1, CoinIndexedVector *regionSparse2, CoinIndexedVector *regionSparse3, bool noPermute=false)
does FTRAN on two columns
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...
void gutsOfCopy(const CoinOslFactorization &other)
The real work of copy.
CoinOslFactorization & operator=(const CoinOslFactorization &other)
= copy
virtual bool wantsTableauColumn() const
Returns true if wants tableauColumn in replaceColumn.
virtual CoinFactorizationDouble * workArea() const
Returns work area.
void gutsOfInitialize(bool zapFact=true)
The real work of constructor.
int numberPivots_
Number pivots since last factorization.
void gutsOfDestructor(bool clearFact=true)
The real work of desstructor.
int numberRows_
Number of Rows in factorization.
virtual ~CoinOslFactorization()
Destructor.
double conditionNumber() const
Condition number - product of pivots after factorization.