23 #include "CoinDenseVector.hpp" 74 const std::string & netlibDir);
92 int numberRows,
const int * whichRows,
93 int numberColumns,
const int * whichColumns,
94 bool dropNames =
true,
bool dropIntegers =
true);
112 const double* collb,
const double* colub,
114 const double* rowlb,
const double* rowub,
115 const double * rowObjective = NULL);
116 void loadProblem (
const CoinPackedMatrix& matrix,
117 const double* collb,
const double* colub,
119 const double* rowlb,
const double* rowub,
120 const double * rowObjective = NULL);
124 void loadProblem (
const int numcols,
const int numrows,
125 const CoinBigIndex* start,
const int* index,
127 const double* collb,
const double* colub,
129 const double* rowlb,
const double* rowub,
130 const double * rowObjective = NULL);
132 void loadProblem (
const int numcols,
const int numrows,
133 const CoinBigIndex* start,
const int* index,
134 const double* value,
const int * length,
135 const double* collb,
const double* colub,
137 const double* rowlb,
const double* rowub,
138 const double * rowObjective = NULL);
140 int readMps(
const char *filename,
141 bool keepNames =
false,
142 bool ignoreErrors =
false);
147 void borrowModel(
ClpModel & otherModel);
149 void returnModel(
ClpModel & otherModel);
164 inline bool primalFeasible()
const {
166 return (sumPrimalInfeasibilities_ <= 1.0e-5);
170 return (sumDualInfeasibilities_ <= 1.0e-5);
182 return sumDualInfeasibilities_;
186 return sumPrimalInfeasibilities_;
190 return dualObjective_;
194 return primalObjective_;
198 return diagonalNorm_;
202 return linearPerturbation_;
205 linearPerturbation_ = value;
209 return projectionTolerance_;
212 projectionTolerance_ = value;
216 return diagonalPerturbation_;
219 diagonalPerturbation_ = value;
222 inline CoinWorkDouble
gamma()
const {
229 inline CoinWorkDouble
delta()
const {
237 return complementarityGap_;
243 inline CoinWorkDouble largestPrimalError()
const {
245 return largestPrimalError_;
249 return largestDualError_;
253 return maximumBarrierIterations_;
256 maximumBarrierIterations_ = value;
261 int numberFixed()
const;
264 void fixFixed(
bool reallyFix =
true);
270 inline CoinWorkDouble *
dualR()
const {
283 bool createWorkingData();
284 void deleteWorkingData();
293 inline CoinWorkDouble rawObjectiveValue()
const {
295 return objectiveValue_;
299 return sequence < numberColumns_ ? 1 : 0;
303 return sequence < numberColumns_ ? sequence : sequence - numberColumns_;
306 void checkSolution();
309 CoinWorkDouble quadraticDjs(CoinWorkDouble * djRegion,
const CoinWorkDouble * solution,
310 CoinWorkDouble scaleFactor);
314 status_[sequence] =
static_cast<unsigned char>(status_[sequence] | 1) ;
317 status_[sequence] =
static_cast<unsigned char>(status_[sequence] & ~1) ;
319 inline bool fixed(
int sequence)
const {
320 return ((status_[sequence] & 1) != 0);
325 status_[sequence] =
static_cast<unsigned char>(status_[sequence] | 2) ;
328 status_[sequence] =
static_cast<unsigned char>(status_[sequence] & ~2) ;
331 return ((status_[sequence] & 2) != 0);
336 status_[sequence] =
static_cast<unsigned char>(status_[sequence] | 4) ;
339 status_[sequence] =
static_cast<unsigned char>(status_[sequence] & ~4) ;
342 return ((status_[sequence] & 4) != 0);
347 status_[sequence] =
static_cast<unsigned char>(status_[sequence] | 8) ;
350 status_[sequence] =
static_cast<unsigned char>(status_[sequence] & ~8) ;
353 return ((status_[sequence] & 8) != 0);
358 status_[sequence] =
static_cast<unsigned char>(status_[sequence] | 16) ;
361 status_[sequence] =
static_cast<unsigned char>(status_[sequence] & ~16) ;
364 return ((status_[sequence] & 16) != 0);
369 status_[sequence] =
static_cast<unsigned char>(status_[sequence] | 32) ;
372 status_[sequence] =
static_cast<unsigned char>(status_[sequence] & ~32) ;
375 return ((status_[sequence] & 32) != 0);
380 status_[sequence] =
static_cast<unsigned char>(status_[sequence] | 64) ;
383 status_[sequence] =
static_cast<unsigned char>(status_[sequence] & ~64) ;
386 return ((status_[sequence] & 64) != 0);
399 CoinWorkDouble largestPrimalError_;
485 #define LENGTH_HISTORY 5 567 const std::string & netlibDir);
int algorithm() const
Current (or last) algorithm.
bool goneDualFeasible_
goneDualFeasible.
void clearUpperBound(int sequence)
bool flagged(int sequence) const
CoinWorkDouble diagonalNorm_
diagonalNorm.
CoinWorkDouble maximumBoundInfeasibility_
maximumBoundInfeasibility.
CoinWorkDouble complementarityGap() const
ComplementarityGap.
CoinWorkDouble gamma() const
gamma
CoinWorkDouble smallestInfeasibility_
smallestInfeasibility
void ClpInteriorUnitTest(const std::string &mpsDir, const std::string &netlibDir)
A function that tests the methods in the ClpInterior class.
void setDelta(CoinWorkDouble value)
CoinWorkDouble * columnLowerWork_
Column lower bounds - working copy.
CoinWorkDouble worstComplementarity_
Worst complementarity.
void setFixedOrFree(int sequence)
To say a variable is fixed OR free.
int numberComplementarityItems_
numberComplementarityItems_ i.e. number of active bounds
Abstract base class for Clp Matrices.
CoinWorkDouble * rhsL_
rhsL.
CoinWorkDouble * solution_
solution
This solves LPs using interior point methods.
void setUpperBound(int sequence)
To say a variable has upper bound.
CoinWorkDouble primalObjective() const
primalObjective.
CoinWorkDouble * lower_
Working copy of lower bounds (Owner of arrays below)
CoinWorkDouble solutionNorm_
solutionNorm.
bool fakeLower(int sequence) const
This class implements LSQR.
CoinWorkDouble linearPerturbation() const
linearPerturbation
CoinWorkDouble * primalR() const
Primal erturbation vector.
CoinWorkDouble diagonalPerturbation_
diagonalPerturbation
void clearFixedOrFree(int sequence)
CoinWorkDouble * deltaSU_
deltaS.
CoinWorkDouble sumPrimalInfeasibilities() const
Sum of primal infeasibilities.
bool lowerBound(int sequence) const
******** DATA to be moved into protected section of ClpInterior
CoinWorkDouble * rhsC_
rhs C
bool gonePrimalFeasible_
gonePrimalFeasible.
CoinWorkDouble targetGap_
targetGap
void setFixed(int sequence)
To say a variable is fixed.
CoinWorkDouble * errorRegion_
errorRegion. i.e. Ax
CoinWorkDouble objectiveNorm_
objectiveNorm.
int algorithm_
Which algorithm being used.
bool fakeUpper(int sequence) const
CoinWorkDouble * deltaY_
delta Y
int maximumBarrierIterations_
Maximum iterations.
void setGamma(CoinWorkDouble value)
CoinWorkDouble * upperSlack_
upperSlack
int isColumn(int sequence) const
Returns 1 if sequence indicates column.
void clearFakeUpper(int sequence)
Base class for Clp Cholesky factorization Will do better factorization.
CoinWorkDouble baseObjectiveNorm_
baseObjectiveNorm
CoinWorkDouble * rhsFixRegion_
rhsFixRegion.
void clearLowerBound(int sequence)
CoinWorkDouble * rhsZ_
rhsZ.
#define LENGTH_HISTORY
historyInfeasibility.
CoinWorkDouble delta() const
delta
void setFakeLower(int sequence)
To say a variable has fake lower bound.
void clearFixed(int sequence)
void setLinearPerturbation(CoinWorkDouble value)
******** DATA to be moved into protected section of ClpInterior
CoinWorkDouble * rhsW_
rhsW.
CoinWorkDouble projectionTolerance_
projectionTolerance
CoinWorkDouble * zVec_
zVec
int numberComplementarityPairs_
numberComplementarityPairs i.e. ones with lower and/or upper bounds (not fixed)
int sequenceWithin(int sequence) const
Returns sequence number within section.
CoinWorkDouble * deltaSL_
CoinWorkDouble * workArray_
work array
CoinWorkDouble sumPrimalInfeasibilities_
Sum of primal infeasibilities.
CoinWorkDouble diagonalNorm() const
diagonalNorm
CoinWorkDouble complementarityGap_
complementarityGap.
void setFakeUpper(int sequence)
To say a variable has fake upper bound.
ClpPdcoBase & operator=(const ClpPdcoBase &)
CoinWorkDouble maximumRHSError_
maximumRHSError. maximum Ax
CoinWorkDouble maximumDualError_
maximumDualError.
CoinWorkDouble * diagonal_
diagonal
CoinWorkDouble primalObjective_
primalObjective.
Abstract base class for tailoring everything for Pcdo.
CoinWorkDouble * dualR() const
Dual erturbation vector.
void setAlgorithm(int value)
Set algorithm.
CoinWorkDouble * columnUpperWork_
Column upper bounds - working copy.
CoinWorkDouble largestDualError() const
Largest error on basic duals.
CoinWorkDouble * upper_
Working copy of upper bounds (Owner of arrays below)
void setMaximumBarrierIterations(int value)
void setProjectionTolerance(CoinWorkDouble value)
CoinWorkDouble * rowUpperWork_
Row upper bounds - working copy.
CoinWorkDouble * deltaW_
deltaW.
void clearFlagged(int sequence)
CoinWorkDouble actualPrimalStep_
actualPrimalStep
CoinWorkDouble sumDualInfeasibilities() const
Sum of dual infeasibilities.
ClpLsqr * lsqrObject_
Pointer to Lsqr object.
CoinWorkDouble * dualR_
Dual regularization array.
CoinWorkDouble dualObjective() const
dualObjective.
ClpPdcoBase * pdcoStuff_
Pointer to stuff.
bool dualFeasible() const
If problem is dual feasible.
CoinWorkDouble maximumRHSChange_
maximumRHSChange
CoinWorkDouble rhsNorm_
rhsNorm.
CoinWorkDouble sumDualInfeasibilities_
Sum of dual infeasibilities.
bool fixed(int sequence) const
bool fixedOrFree(int sequence) const
void setLowerBound(int sequence)
To say a variable has lower bound.
bool upperBound(int sequence) const
CoinWorkDouble scaleFactor_
scaleFactor. For scaling objective
CoinWorkDouble * deltaX_
delta X
CoinWorkDouble stepLength_
stepLength
CoinWorkDouble * lowerSlack_
lowerSlack
CoinWorkDouble diagonalPerturbation() const
diagonalPerturbation
CoinWorkDouble * cost_
Working copy of objective.
CoinWorkDouble * wVec_
wVec
int maximumBarrierIterations() const
Maximum iterations.
CoinWorkDouble * rhs_
Rhs.
CoinWorkDouble * rowLowerWork_
Row lower bounds - working copy.
CoinWorkDouble actualDualStep_
actualDualStep
CoinWorkDouble * rhsU_
rhsU.
CoinWorkDouble linearPerturbation_
linearPerturbation
CoinWorkDouble worstDirectionAccuracy_
worstDirectionAccuracy
ClpCholeskyBase * cholesky_
cholesky.
CoinWorkDouble dualObjective_
dualObjective.
CoinWorkDouble * primalR_
Primal regularization array.
CoinWorkDouble projectionTolerance() const
projectionTolerance
CoinWorkDouble * rhsB_
rhs B
void setFlagged(int sequence)
To flag a variable.
CoinWorkDouble * deltaZ_
deltaZ.
CoinWorkDouble diagonalScaleFactor_
diagonalScaleFactor.
******** DATA to be moved into protected section of ClpInterior
CoinWorkDouble mu_
Below here is standard barrier stuff mu.
CoinWorkDouble largestDualError_
Largest error on basic duals.
void clearFakeLower(int sequence)
void setDiagonalPerturbation(CoinWorkDouble value)