23#include "CoinDenseVector.hpp"
74 const std::string &netlibDir);
93 bool dropNames =
true,
bool dropIntegers =
true);
111 const double *collb,
const double *colub,
113 const double *rowlb,
const double *rowub,
116 const double *collb,
const double *colub,
118 const double *rowlb,
const double *rowub,
124 const CoinBigIndex *start,
const int *index,
126 const double *collb,
const double *colub,
128 const double *rowlb,
const double *rowub,
132 const CoinBigIndex *start,
const int *index,
133 const double *value,
const int *length,
134 const double *collb,
const double *colub,
136 const double *rowlb,
const double *rowub,
140 bool keepNames =
false,
141 bool ignoreErrors =
false);
294 inline CoinWorkDouble *
dualR()
const
337 CoinWorkDouble
quadraticDjs(CoinWorkDouble *djRegion,
const CoinWorkDouble *solution,
338 CoinWorkDouble scaleFactor);
343 status_[sequence] =
static_cast< unsigned char >(
status_[sequence] | 1);
347 status_[sequence] =
static_cast< unsigned char >(
status_[sequence] & ~1);
349 inline bool fixed(
int sequence)
const
351 return ((
status_[sequence] & 1) != 0);
357 status_[sequence] =
static_cast< unsigned char >(
status_[sequence] | 2);
361 status_[sequence] =
static_cast< unsigned char >(
status_[sequence] & ~2);
365 return ((
status_[sequence] & 2) != 0);
371 status_[sequence] =
static_cast< unsigned char >(
status_[sequence] | 4);
375 status_[sequence] =
static_cast< unsigned char >(
status_[sequence] & ~4);
379 return ((
status_[sequence] & 4) != 0);
385 status_[sequence] =
static_cast< unsigned char >(
status_[sequence] | 8);
389 status_[sequence] =
static_cast< unsigned char >(
status_[sequence] & ~8);
393 return ((
status_[sequence] & 8) != 0);
399 status_[sequence] =
static_cast< unsigned char >(
status_[sequence] | 16);
403 status_[sequence] =
static_cast< unsigned char >(
status_[sequence] & ~16);
407 return ((
status_[sequence] & 16) != 0);
413 status_[sequence] =
static_cast< unsigned char >(
status_[sequence] | 32);
417 status_[sequence] =
static_cast< unsigned char >(
status_[sequence] & ~32);
421 return ((
status_[sequence] & 32) != 0);
427 status_[sequence] =
static_cast< unsigned char >(
status_[sequence] | 64);
431 status_[sequence] =
static_cast< unsigned char >(
status_[sequence] & ~64);
435 return ((
status_[sequence] & 64) != 0);
536#define LENGTH_HISTORY 5
617 const std::string &netlibDir);
void ClpInteriorUnitTest(const std::string &mpsDir, const std::string &netlibDir)
A function that tests the methods in the ClpInterior class.
#define LENGTH_HISTORY
historyInfeasibility.
Base class for Clp Cholesky factorization Will do better factorization.
This solves LPs using interior point methods.
CoinWorkDouble diagonalPerturbation_
diagonalPerturbation
CoinWorkDouble mu_
Below here is standard barrier stuff mu.
void setDiagonalPerturbation(CoinWorkDouble value)
friend void ClpInteriorUnitTest(const std::string &mpsDir, const std::string &netlibDir)
A function that tests the methods in the ClpInterior class.
CoinWorkDouble dualObjective() const
dualObjective.
bool goneDualFeasible_
goneDualFeasible.
int pdco()
Pdco algorithm - see ClpPdco.hpp for method.
void setGamma(CoinWorkDouble value)
CoinWorkDouble * deltaY_
delta Y
void loadProblem(const int numcols, const int numrows, const CoinBigIndex *start, const int *index, const double *value, const double *collb, const double *colub, const double *obj, const double *rowlb, const double *rowub, const double *rowObjective=NULL)
Just like the other loadProblem() method except that the matrix is given in a standard column major o...
int readMps(const char *filename, bool keepNames=false, bool ignoreErrors=false)
Read an mps file from the given filename.
void loadProblem(const int numcols, const int numrows, const CoinBigIndex *start, const int *index, const double *value, const int *length, const double *collb, const double *colub, const double *obj, const double *rowlb, const double *rowub, const double *rowObjective=NULL)
This one is for after presolve to save memory.
void borrowModel(ClpModel &otherModel)
Borrow model.
CoinWorkDouble * primalR_
Primal regularization array.
CoinWorkDouble * zVec_
zVec
CoinWorkDouble maximumRHSError_
maximumRHSError. maximum Ax
CoinWorkDouble projectionTolerance_
projectionTolerance
CoinWorkDouble largestDualError() const
Largest error on basic duals.
void setMaximumBarrierIterations(int value)
CoinWorkDouble primalObjective_
primalObjective.
void setFixedOrFree(int sequence)
To say a variable is fixed OR free.
CoinWorkDouble complementarityGap_
complementarityGap.
bool sanityCheck()
Sanity check on input rim data.
bool fixed(int sequence) const
CoinWorkDouble diagonalPerturbation() const
diagonalPerturbation
CoinWorkDouble * rowUpperWork_
Row upper bounds - working copy.
CoinWorkDouble diagonalScaleFactor_
diagonalScaleFactor.
CoinWorkDouble largestPrimalError() const
Largest error on Ax-b.
CoinWorkDouble targetGap_
targetGap
void clearFakeUpper(int sequence)
CoinWorkDouble * deltaX_
delta X
CoinWorkDouble rawObjectiveValue() const
Raw objective value (so always minimize)
bool upperBound(int sequence) const
void clearFixedOrFree(int sequence)
CoinWorkDouble stepLength_
stepLength
CoinWorkDouble * columnLowerWork_
Column lower bounds - working copy.
int numberFixed() const
Return number fixed to see if worth presolving.
~ClpInterior()
Destructor.
void setFlagged(int sequence)
To flag a variable.
bool createWorkingData()
Returns true if data looks okay, false if not.
CoinWorkDouble * lower_
Working copy of lower bounds (Owner of arrays below)
bool flagged(int sequence) const
bool gonePrimalFeasible_
gonePrimalFeasible.
CoinWorkDouble * rhsB_
rhs B
bool fixedOrFree(int sequence) const
ClpCholeskyBase * cholesky_
cholesky.
CoinWorkDouble * primalR() const
Primal erturbation vector.
CoinWorkDouble sumDualInfeasibilities() const
Sum of dual infeasibilities.
CoinWorkDouble worstDirectionAccuracy_
worstDirectionAccuracy
void fixFixed(bool reallyFix=true)
fix variables interior says should be.
CoinWorkDouble * rhs_
Rhs.
int maximumBarrierIterations_
Maximum iterations.
CoinWorkDouble * errorRegion_
errorRegion. i.e. Ax
CoinWorkDouble * rhsL_
rhsL.
CoinWorkDouble sumPrimalInfeasibilities_
Sum of primal infeasibilities.
CoinWorkDouble * rhsW_
rhsW.
CoinWorkDouble scaleFactor_
scaleFactor. For scaling objective
CoinWorkDouble * lowerSlack_
lowerSlack
void loadProblem(const ClpMatrixBase &matrix, const double *collb, const double *colub, const double *obj, const double *rowlb, const double *rowub, const double *rowObjective=NULL)
Loads a problem (the constraints on the rows are given by lower and upper bounds).
CoinWorkDouble * rhsFixRegion_
rhsFixRegion.
bool fakeLower(int sequence) const
CoinWorkDouble * dualR() const
Dual erturbation vector.
CoinWorkDouble * upper_
Working copy of upper bounds (Owner of arrays below)
CoinWorkDouble linearPerturbation_
linearPerturbation
CoinWorkDouble worstComplementarity_
Worst complementarity.
bool lowerBound(int sequence) const
void gutsOfDelete()
Does most of deletion.
ClpInterior(const ClpModel &)
Copy constructor from model.
void setDelta(CoinWorkDouble value)
CoinWorkDouble diagonalNorm_
diagonalNorm.
void gutsOfCopy(const ClpInterior &rhs)
Does most of copying.
void clearUpperBound(int sequence)
CoinWorkDouble actualDualStep_
actualDualStep
int maximumBarrierIterations() const
Maximum iterations.
CoinWorkDouble * cost_
Working copy of objective.
CoinWorkDouble sumDualInfeasibilities_
Sum of dual infeasibilities.
CoinWorkDouble * upperSlack_
upperSlack
CoinWorkDouble baseObjectiveNorm_
baseObjectiveNorm
bool primalFeasible() const
If problem is primal feasible.
void setUpperBound(int sequence)
To say a variable has upper bound.
CoinWorkDouble * solution_
solution
CoinWorkDouble * columnUpperWork_
Column upper bounds - working copy.
int primalDual()
Primal-Dual Predictor-Corrector barrier.
ClpInterior & operator=(const ClpInterior &rhs)
Assignment operator. This copies the data.
CoinWorkDouble historyInfeasibility_[LENGTH_HISTORY]
ClpInterior(const ClpModel *wholeModel, int numberRows, const int *whichRows, int numberColumns, const int *whichColumns, bool dropNames=true, bool dropIntegers=true)
Subproblem constructor.
CoinWorkDouble * rhsZ_
rhsZ.
CoinWorkDouble diagonalNorm() const
diagonalNorm
CoinWorkDouble * dualR_
Dual regularization array.
void clearFlagged(int sequence)
void loadProblem(const CoinPackedMatrix &matrix, const double *collb, const double *colub, const double *obj, const double *rowlb, const double *rowub, const double *rowObjective=NULL)
CoinWorkDouble smallestInfeasibility_
smallestInfeasibility
void setLinearPerturbation(CoinWorkDouble value)
void setProjectionTolerance(CoinWorkDouble value)
void clearFakeLower(int sequence)
CoinWorkDouble * deltaSU_
deltaS.
CoinWorkDouble * rowLowerWork_
Row lower bounds - working copy.
int algorithm() const
Current (or last) algorithm.
int numberComplementarityItems_
numberComplementarityItems_ i.e. number of active bounds
ClpLsqr * lsqrObject_
Pointer to Lsqr object.
CoinWorkDouble maximumDualError_
maximumDualError.
CoinWorkDouble projectionTolerance() const
projectionTolerance
CoinWorkDouble primalObjective() const
primalObjective.
CoinWorkDouble maximumBoundInfeasibility_
maximumBoundInfeasibility.
int isColumn(int sequence) const
Returns 1 if sequence indicates column.
void setCholesky(ClpCholeskyBase *cholesky)
Set cholesky (and delete present one)
CoinWorkDouble solutionNorm_
solutionNorm.
CoinWorkDouble * diagonal_
diagonal
void clearFixed(int sequence)
void setFakeLower(int sequence)
To say a variable has fake lower bound.
int housekeeping()
This does housekeeping.
CoinWorkDouble * workArray_
work array
CoinWorkDouble linearPerturbation() const
linearPerturbation
CoinWorkDouble rhsNorm_
rhsNorm.
int numberComplementarityPairs_
numberComplementarityPairs i.e. ones with lower and/or upper bounds (not fixed)
CoinWorkDouble gamma() const
gamma
CoinWorkDouble quadraticDjs(CoinWorkDouble *djRegion, const CoinWorkDouble *solution, CoinWorkDouble scaleFactor)
Modifies djs to allow for quadratic.
CoinWorkDouble largestDualError_
Largest error on basic duals.
CoinWorkDouble * deltaSL_
CoinWorkDouble objectiveNorm_
objectiveNorm.
CoinWorkDouble dualObjective_
dualObjective.
bool dualFeasible() const
If problem is dual feasible.
CoinWorkDouble * deltaZ_
deltaZ.
void returnModel(ClpModel &otherModel)
Return model - updates any scalars.
ClpInterior()
Default constructor.
int pdco(ClpPdcoBase *stuff, Options &options, Info &info, Outfo &outfo)
CoinWorkDouble actualPrimalStep_
actualPrimalStep
CoinWorkDouble * rhsU_
rhsU.
void setAlgorithm(int value)
Set algorithm.
void setLowerBound(int sequence)
To say a variable has lower bound.
int algorithm_
Which algorithm being used.
int sequenceWithin(int sequence) const
Returns sequence number within section.
CoinWorkDouble * deltaW_
deltaW.
bool fakeUpper(int sequence) const
CoinWorkDouble * wVec_
wVec
void setFixed(int sequence)
To say a variable is fixed.
CoinWorkDouble delta() const
delta
CoinWorkDouble largestPrimalError_
Largest error on Ax-b.
CoinWorkDouble * rhsC_
rhs C
CoinWorkDouble sumPrimalInfeasibilities() const
Sum of primal infeasibilities.
CoinWorkDouble complementarityGap() const
ComplementarityGap.
void setFakeUpper(int sequence)
To say a variable has fake upper bound.
void checkSolution()
Checks solution.
ClpInterior(const ClpInterior &)
Copy constructor.
void clearLowerBound(int sequence)
ClpPdcoBase * pdcoStuff_
Pointer to stuff.
CoinWorkDouble maximumRHSChange_
maximumRHSChange
This class implements LSQR.
Abstract base class for Clp Matrices.
int numberColumns_
Number of columns.
unsigned char * status_
Status (i.e.
double * rowObjective() const
Row Objective.
int numberColumns() const
int numberRows() const
Number of rows.
CoinPackedMatrix * matrix() const
Matrix (if not ClpPackedmatrix be careful about memory leak.
double objectiveValue_
Objective value.
void dropNames()
Drops names - makes lengthnames 0 and names empty.
Abstract base class for tailoring everything for Pcdo.
******** DATA to be moved into protected section of ClpInterior
******** DATA to be moved into protected section of ClpInterior
******** DATA to be moved into protected section of ClpInterior