6 #ifndef ClpCholeskyBase_H
7 #define ClpCholeskyBase_H
12 #ifndef CLP_LONG_CHOLESKY
13 #define CLP_LONG_CHOLESKY 0
21 #if CLP_LONG_CHOLESKY>0
22 #define CHOLESKY_BAD_COMBINATION
25 #if CLP_LONG_CHOLESKY==0
26 #define CHOLESKY_BAD_COMBINATION
29 #ifdef CHOLESKY_BAD_COMBINATION
30 # warning("Bad combination of CLP_LONG_CHOLESKY and COIN_BIG_DOUBLE/COIN_LONG_WORK");
31 "Bad combination of CLP_LONG_CHOLESKY and COIN_LONG_WORK"
33 #if CLP_LONG_CHOLESKY>1
35 #define CHOL_SMALL_VALUE 1.0e-15
36 #elif CLP_LONG_CHOLESKY==1
38 #define CHOL_SMALL_VALUE 1.0e-11
41 #define CHOL_SMALL_VALUE 1.0e-11
87 inline int status()
const {
220 int preOrder(
bool lowerTriangular,
bool includeDiagonal,
bool doKKT);
int status_
status. Status of factorization
bool kkt() const
If KKT on.
virtual ClpCholeskyBase * clone() const
Returns type.
virtual void solve(CoinWorkDouble *region)
Uses factorization to solve.
longDouble * sparseFactor_
sparseFactor.
double getDoubleParameter(int i)
get double parameter
char * whichDense_
Dense indicators.
int numberRowsDropped_
numberRowsDropped. Number of rows gone
int * choleskyRow_
choleskyRow (can be shorter than sparsefactor)
void updateDense(longDouble *d, int *first)
Updates dense part (broken out for profiling)
CoinBigIndex sizeIndex_
Size of index array.
bool doKKT_
Doing full KKT (only used if default symbolic and factorization)
int * clique_
type (may be useful) if > 20 do KKT
int numberRows() const
Return number of rows.
void resetRowsDropped()
reset numberRowsDropped and rowsDropped.
char * rowsDropped() const
rowsDropped - which rows are gone
int numberRows_
numberRows. Number of Rows in factorization
void factorizePart2(int *rowsDropped)
Factorize - filling in rowsDropped and returning number dropped in integerParam.
int status() const
status. Returns status
int preOrder(bool lowerTriangular, bool includeDiagonal, bool doKKT)
Forms ADAT - returns nonzero if not enough memory.
int symbolic1(const CoinBigIndex *Astart, const int *Arow)
Symbolic1 - works out size without clever stuff.
Base class for Clp Cholesky factorization Will do better factorization.
longDouble * diagonal() const
Return diagonal.
int numberRowsDropped() const
numberRowsDropped. Number of rows gone
ClpInterior * model_
model.
virtual ~ClpCholeskyBase()
Destructor (has to be public)
virtual int factorize(const CoinWorkDouble *diagonal, int *rowsDropped)
Factorize - filling in rowsDropped and returning number dropped.
This solves LPs using interior point methods.
CoinBigIndex * workInteger_
type (may be useful) if > 20 do KKT
double choleskyCondition_
choleskyCondition.
longDouble * workDouble_
double work array
longDouble * denseColumn_
Dense columns (updated)
int * permuteInverse_
permute inverse.
int rank() const
rank. Returns rank
virtual int order(ClpInterior *model)
Orders rows and saves pointer to matrix.and model.
int firstDense_
First dense row.
void setIntegerParameter(int i, int value)
Set integer parameter.
CoinBigIndex size() const
Return size.
longDouble * workDouble() const
Return workDouble.
double choleskyCondition() const
choleskyCondition.
int denseThreshold_
Dense threshold (for taking out of Cholesky)
ClpCholeskyDense * dense_
Dense cholesky.
void setDoubleParameter(int i, double value)
Set double parameter.
double doubleParameters_[64]
doubleParameters;
CoinBigIndex * choleskyStart_
choleskyStart - element starts
char * rowsDropped_
rowsDropped
Abstract base class for Clp Matrices.
int integerParameters_[64]
integerParameters
int orderAMD()
AMD ordering.
ClpCholeskyBase(int denseThreshold=-1)
Constructor which has dense columns activated.
virtual int symbolic()
Does Symbolic factorization given permutation.
double goDense() const
goDense i.e. use dense factoriaztion if > this (default 0.7).
int type() const
Returns type.
void setKKT(bool yesNo)
Set KKT.
void setType(int type)
Sets type.
int type_
type (may be useful) if > 20 do KKT
virtual void solveKKT(CoinWorkDouble *region1, CoinWorkDouble *region2, const CoinWorkDouble *diagonal, CoinWorkDouble diagonalScaleFactor)
Uses factorization to solve.
longDouble * sparseFactor() const
Return sparseFactor.
int numberTrials_
numberTrials. Number of trials before rejection
longDouble * diagonal_
Diagonal.
void setGoDense(double value)
goDense i.e. use dense factoriaztion if > this (default 0.7).
ClpMatrixBase * rowCopy_
Row copy of matrix.
CoinBigIndex * indexStart_
Index starts.
int getIntegerParameter(int i)
get integer parameter
CoinBigIndex sizeFactor_
sizeFactor.
int * permute_
main permute.
void setModel(ClpInterior *model)
model.
void symbolic2(const CoinBigIndex *Astart, const int *Arow)
Symbolic2 - Fills in indices Uses lower triangular so can do cliques etc.
ClpCholeskyBase & operator=(const ClpCholeskyBase &)
Assignment.
double goDense_
Go dense at this fraction.