Clp  1.16.11
ClpInterior.hpp
Go to the documentation of this file.
1 /* $Id: ClpInterior.hpp 1665 2011-01-04 17:55:54Z lou $ */
2 // Copyright (C) 2003, International Business Machines
3 // Corporation and others. All Rights Reserved.
4 // This code is licensed under the terms of the Eclipse Public License (EPL).
5 /*
6  Authors
7 
8  John Tomlin (pdco)
9  John Forrest (standard predictor-corrector)
10 
11  Note JJF has added arrays - this takes more memory but makes
12  flow easier to understand and hopefully easier to extend
13 
14  */
15 #ifndef ClpInterior_H
16 #define ClpInterior_H
17 
18 #include <iostream>
19 #include <cfloat>
20 #include "ClpModel.hpp"
21 #include "ClpMatrixBase.hpp"
22 #include "ClpSolve.hpp"
23 #include "CoinDenseVector.hpp"
24 class ClpLsqr;
25 class ClpPdcoBase;
27 typedef struct {
28  double atolmin;
29  double r3norm;
30  double LSdamp;
31  double* deltay;
32 } Info;
34 
35 typedef struct {
36  double atolold;
37  double atolnew;
38  double r3ratio;
39  int istop;
40  int itncg;
41 } Outfo;
43 
44 typedef struct {
45  double gamma;
46  double delta;
47  int MaxIter;
48  double FeaTol;
49  double OptTol;
50  double StepTol;
51  double x0min;
52  double z0min;
53  double mu0;
54  int LSmethod; // 1=Cholesky 2=QR 3=LSQR
55  int LSproblem; // See below
57  double LSQRatol1; // Initial atol
58  double LSQRatol2; // Smallest atol (unless atol1 is smaller)
59  double LSQRconlim;
60  int wait;
61 } Options;
62 class Lsqr;
63 class ClpCholeskyBase;
64 // ***** END
72 class ClpInterior : public ClpModel {
73  friend void ClpInteriorUnitTest(const std::string & mpsDir,
74  const std::string & netlibDir);
75 
76 public:
77 
80  ClpInterior ( );
82 
91  ClpInterior (const ClpModel * wholeModel,
92  int numberRows, const int * whichRows,
93  int numberColumns, const int * whichColumns,
94  bool dropNames = true, bool dropIntegers = true);
99  // Ones below are just ClpModel with some changes
112  const double* collb, const double* colub,
113  const double* obj,
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,
118  const double* obj,
119  const double* rowlb, const double* rowub,
120  const double * rowObjective = NULL);
121 
124  void loadProblem ( const int numcols, const int numrows,
125  const CoinBigIndex* start, const int* index,
126  const double* value,
127  const double* collb, const double* colub,
128  const double* obj,
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,
136  const double* obj,
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);
151 
155  int pdco();
156  // ** Temporary version
157  int pdco( ClpPdcoBase * stuff, Options &options, Info &info, Outfo &outfo);
159  int primalDual();
161 
164  inline bool primalFeasible() const {
166  return (sumPrimalInfeasibilities_ <= 1.0e-5);
167  }
169  inline bool dualFeasible() const {
170  return (sumDualInfeasibilities_ <= 1.0e-5);
171  }
173  inline int algorithm() const {
174  return algorithm_;
175  }
177  inline void setAlgorithm(int value) {
178  algorithm_ = value;
179  }
181  inline CoinWorkDouble sumDualInfeasibilities() const {
183  }
185  inline CoinWorkDouble sumPrimalInfeasibilities() const {
187  }
189  inline CoinWorkDouble dualObjective() const {
190  return dualObjective_;
191  }
193  inline CoinWorkDouble primalObjective() const {
194  return primalObjective_;
195  }
197  inline CoinWorkDouble diagonalNorm() const {
198  return diagonalNorm_;
199  }
201  inline CoinWorkDouble linearPerturbation() const {
202  return linearPerturbation_;
203  }
204  inline void setLinearPerturbation(CoinWorkDouble value) {
205  linearPerturbation_ = value;
206  }
208  inline CoinWorkDouble projectionTolerance() const {
209  return projectionTolerance_;
210  }
211  inline void setProjectionTolerance(CoinWorkDouble value) {
212  projectionTolerance_ = value;
213  }
215  inline CoinWorkDouble diagonalPerturbation() const {
216  return diagonalPerturbation_;
217  }
218  inline void setDiagonalPerturbation(CoinWorkDouble value) {
219  diagonalPerturbation_ = value;
220  }
222  inline CoinWorkDouble gamma() const {
223  return gamma_;
224  }
225  inline void setGamma(CoinWorkDouble value) {
226  gamma_ = value;
227  }
229  inline CoinWorkDouble delta() const {
230  return delta_;
231  }
232  inline void setDelta(CoinWorkDouble value) {
233  delta_ = value;
234  }
236  inline CoinWorkDouble complementarityGap() const {
237  return complementarityGap_;
238  }
240 
243  inline CoinWorkDouble largestPrimalError() const {
245  return largestPrimalError_;
246  }
248  inline CoinWorkDouble largestDualError() const {
249  return largestDualError_;
250  }
252  inline int maximumBarrierIterations() const {
254  }
255  inline void setMaximumBarrierIterations(int value) {
257  }
259  void setCholesky(ClpCholeskyBase * cholesky);
261  int numberFixed() const;
264  void fixFixed(bool reallyFix = true);
266  inline CoinWorkDouble * primalR() const {
267  return primalR_;
268  }
270  inline CoinWorkDouble * dualR() const {
271  return dualR_;
272  }
274 
275 protected:
278  void gutsOfDelete();
281  void gutsOfCopy(const ClpInterior & rhs);
286  bool sanityCheck();
290 public:
293  inline CoinWorkDouble rawObjectiveValue() const {
295  return objectiveValue_;
296  }
298  inline int isColumn(int sequence) const {
299  return sequence < numberColumns_ ? 1 : 0;
300  }
302  inline int sequenceWithin(int sequence) const {
303  return sequence < numberColumns_ ? sequence : sequence - numberColumns_;
304  }
309  CoinWorkDouble quadraticDjs(CoinWorkDouble * djRegion, const CoinWorkDouble * solution,
310  CoinWorkDouble scaleFactor);
311 
313  inline void setFixed( int sequence) {
314  status_[sequence] = static_cast<unsigned char>(status_[sequence] | 1) ;
315  }
316  inline void clearFixed( int sequence) {
317  status_[sequence] = static_cast<unsigned char>(status_[sequence] & ~1) ;
318  }
319  inline bool fixed(int sequence) const {
320  return ((status_[sequence] & 1) != 0);
321  }
322 
324  inline void setFlagged( int sequence) {
325  status_[sequence] = static_cast<unsigned char>(status_[sequence] | 2) ;
326  }
327  inline void clearFlagged( int sequence) {
328  status_[sequence] = static_cast<unsigned char>(status_[sequence] & ~2) ;
329  }
330  inline bool flagged(int sequence) const {
331  return ((status_[sequence] & 2) != 0);
332  }
333 
335  inline void setFixedOrFree( int sequence) {
336  status_[sequence] = static_cast<unsigned char>(status_[sequence] | 4) ;
337  }
338  inline void clearFixedOrFree( int sequence) {
339  status_[sequence] = static_cast<unsigned char>(status_[sequence] & ~4) ;
340  }
341  inline bool fixedOrFree(int sequence) const {
342  return ((status_[sequence] & 4) != 0);
343  }
344 
346  inline void setLowerBound( int sequence) {
347  status_[sequence] = static_cast<unsigned char>(status_[sequence] | 8) ;
348  }
349  inline void clearLowerBound( int sequence) {
350  status_[sequence] = static_cast<unsigned char>(status_[sequence] & ~8) ;
351  }
352  inline bool lowerBound(int sequence) const {
353  return ((status_[sequence] & 8) != 0);
354  }
355 
357  inline void setUpperBound( int sequence) {
358  status_[sequence] = static_cast<unsigned char>(status_[sequence] | 16) ;
359  }
360  inline void clearUpperBound( int sequence) {
361  status_[sequence] = static_cast<unsigned char>(status_[sequence] & ~16) ;
362  }
363  inline bool upperBound(int sequence) const {
364  return ((status_[sequence] & 16) != 0);
365  }
366 
368  inline void setFakeLower( int sequence) {
369  status_[sequence] = static_cast<unsigned char>(status_[sequence] | 32) ;
370  }
371  inline void clearFakeLower( int sequence) {
372  status_[sequence] = static_cast<unsigned char>(status_[sequence] & ~32) ;
373  }
374  inline bool fakeLower(int sequence) const {
375  return ((status_[sequence] & 32) != 0);
376  }
377 
379  inline void setFakeUpper( int sequence) {
380  status_[sequence] = static_cast<unsigned char>(status_[sequence] | 64) ;
381  }
382  inline void clearFakeUpper( int sequence) {
383  status_[sequence] = static_cast<unsigned char>(status_[sequence] & ~64) ;
384  }
385  inline bool fakeUpper(int sequence) const {
386  return ((status_[sequence] & 64) != 0);
387  }
389 
391 protected:
392 
399  CoinWorkDouble largestPrimalError_;
402  CoinWorkDouble largestDualError_;
404  CoinWorkDouble sumDualInfeasibilities_;
408  CoinWorkDouble worstComplementarity_;
410 public:
411  CoinWorkDouble xsize_;
412  CoinWorkDouble zsize_;
413 protected:
415  CoinWorkDouble * lower_;
417  CoinWorkDouble * rowLowerWork_;
419  CoinWorkDouble * columnLowerWork_;
421  CoinWorkDouble * upper_;
423  CoinWorkDouble * rowUpperWork_;
425  CoinWorkDouble * columnUpperWork_;
427  CoinWorkDouble * cost_;
428 public:
430  CoinWorkDouble * rhs_;
431  CoinWorkDouble * x_;
432  CoinWorkDouble * y_;
433  CoinWorkDouble * dj_;
434 protected:
441  CoinWorkDouble mu_;
443  CoinWorkDouble objectiveNorm_;
445  CoinWorkDouble rhsNorm_;
447  CoinWorkDouble solutionNorm_;
449  CoinWorkDouble dualObjective_;
451  CoinWorkDouble primalObjective_;
453  CoinWorkDouble diagonalNorm_;
455  CoinWorkDouble stepLength_;
457  CoinWorkDouble linearPerturbation_;
459  CoinWorkDouble diagonalPerturbation_;
460  // gamma from Saunders and Tomlin regularized
461  CoinWorkDouble gamma_;
462  // delta from Saunders and Tomlin regularized
463  CoinWorkDouble delta_;
465  CoinWorkDouble targetGap_;
467  CoinWorkDouble projectionTolerance_;
469  CoinWorkDouble maximumRHSError_;
473  CoinWorkDouble maximumDualError_;
475  CoinWorkDouble diagonalScaleFactor_;
477  CoinWorkDouble scaleFactor_;
479  CoinWorkDouble actualPrimalStep_;
481  CoinWorkDouble actualDualStep_;
483  CoinWorkDouble smallestInfeasibility_;
485 #define LENGTH_HISTORY 5
488  CoinWorkDouble complementarityGap_;
490  CoinWorkDouble baseObjectiveNorm_;
492  CoinWorkDouble worstDirectionAccuracy_;
494  CoinWorkDouble maximumRHSChange_;
496  CoinWorkDouble * errorRegion_;
498  CoinWorkDouble * rhsFixRegion_;
500  CoinWorkDouble * upperSlack_;
502  CoinWorkDouble * lowerSlack_;
504  CoinWorkDouble * diagonal_;
506  CoinWorkDouble * solution_;
508  CoinWorkDouble * workArray_;
510  CoinWorkDouble * deltaX_;
512  CoinWorkDouble * deltaY_;
514  CoinWorkDouble * deltaZ_;
516  CoinWorkDouble * deltaW_;
518  CoinWorkDouble * deltaSU_;
519  CoinWorkDouble * deltaSL_;
521  CoinWorkDouble * primalR_;
523  CoinWorkDouble * dualR_;
525  CoinWorkDouble * rhsB_;
527  CoinWorkDouble * rhsU_;
529  CoinWorkDouble * rhsL_;
531  CoinWorkDouble * rhsZ_;
533  CoinWorkDouble * rhsW_;
535  CoinWorkDouble * rhsC_;
537  CoinWorkDouble * zVec_;
539  CoinWorkDouble * wVec_;
555 };
556 //#############################################################################
565 void
566 ClpInteriorUnitTest(const std::string & mpsDir,
567  const std::string & netlibDir);
568 
569 
570 #endif
ClpInterior::deleteWorkingData
void deleteWorkingData()
ClpInterior::upperBound
bool upperBound(int sequence) const
Definition: ClpInterior.hpp:363
ClpInterior::rowLowerWork_
CoinWorkDouble * rowLowerWork_
Row lower bounds - working copy.
Definition: ClpInterior.hpp:417
ClpInterior::setFixed
void setFixed(int sequence)
To say a variable is fixed.
Definition: ClpInterior.hpp:313
ClpInterior::objectiveNorm_
CoinWorkDouble objectiveNorm_
objectiveNorm.
Definition: ClpInterior.hpp:443
ClpInterior::sumDualInfeasibilities
CoinWorkDouble sumDualInfeasibilities() const
Sum of dual infeasibilities.
Definition: ClpInterior.hpp:181
ClpInterior::cholesky_
ClpCholeskyBase * cholesky_
cholesky.
Definition: ClpInterior.hpp:541
ClpInterior::loadProblem
void loadProblem(const CoinPackedMatrix &matrix, const double *collb, const double *colub, const double *obj, const double *rowlb, const double *rowub, const double *rowObjective=NULL)
ClpInterior::largestDualError
CoinWorkDouble largestDualError() const
Largest error on basic duals.
Definition: ClpInterior.hpp:248
ClpInterior::gonePrimalFeasible_
bool gonePrimalFeasible_
gonePrimalFeasible.
Definition: ClpInterior.hpp:549
ClpInterior::maximumBarrierIterations
int maximumBarrierIterations() const
Maximum iterations.
Definition: ClpInterior.hpp:252
ClpInterior::dualObjective_
CoinWorkDouble dualObjective_
dualObjective.
Definition: ClpInterior.hpp:449
ClpInterior::fakeLower
bool fakeLower(int sequence) const
Definition: ClpInterior.hpp:374
ClpInterior::diagonalScaleFactor_
CoinWorkDouble diagonalScaleFactor_
diagonalScaleFactor.
Definition: ClpInterior.hpp:475
ClpInterior::setGamma
void setGamma(CoinWorkDouble value)
Definition: ClpInterior.hpp:225
ClpModel::rowObjective
double * rowObjective() const
Row Objective.
Definition: ClpModel.hpp:676
ClpInterior::baseObjectiveNorm_
CoinWorkDouble baseObjectiveNorm_
baseObjectiveNorm
Definition: ClpInterior.hpp:490
ClpInterior::primalR_
CoinWorkDouble * primalR_
Primal regularization array.
Definition: ClpInterior.hpp:521
Outfo::atolold
double atolold
Definition: ClpInterior.hpp:36
ClpInterior::linearPerturbation
CoinWorkDouble linearPerturbation() const
linearPerturbation
Definition: ClpInterior.hpp:201
ClpInterior::diagonalPerturbation
CoinWorkDouble diagonalPerturbation() const
diagonalPerturbation
Definition: ClpInterior.hpp:215
Options::LSQRatol1
double LSQRatol1
Definition: ClpInterior.hpp:57
ClpInterior::goneDualFeasible_
bool goneDualFeasible_
goneDualFeasible.
Definition: ClpInterior.hpp:551
ClpInterior::projectionTolerance_
CoinWorkDouble projectionTolerance_
projectionTolerance
Definition: ClpInterior.hpp:467
ClpInterior::gamma_
CoinWorkDouble gamma_
Definition: ClpInterior.hpp:461
ClpInterior::maximumBoundInfeasibility_
CoinWorkDouble maximumBoundInfeasibility_
maximumBoundInfeasibility.
Definition: ClpInterior.hpp:471
ClpInterior::ClpInterior
ClpInterior(const ClpModel &)
Copy constructor from model.
ClpInterior::zVec_
CoinWorkDouble * zVec_
zVec
Definition: ClpInterior.hpp:537
ClpInterior::ClpInteriorUnitTest
friend void ClpInteriorUnitTest(const std::string &mpsDir, const std::string &netlibDir)
A function that tests the methods in the ClpInterior class.
ClpInterior::fixedOrFree
bool fixedOrFree(int sequence) const
Definition: ClpInterior.hpp:341
Info::atolmin
double atolmin
Definition: ClpInterior.hpp:28
ClpInterior::clearFakeLower
void clearFakeLower(int sequence)
Definition: ClpInterior.hpp:371
ClpInteriorUnitTest
void ClpInteriorUnitTest(const std::string &mpsDir, const std::string &netlibDir)
A function that tests the methods in the ClpInterior class.
ClpCholeskyBase
Base class for Clp Cholesky factorization Will do better factorization.
Definition: ClpCholeskyBase.hpp:53
Outfo
******** DATA to be moved into protected section of ClpInterior
Definition: ClpInterior.hpp:35
Options::MaxIter
int MaxIter
Definition: ClpInterior.hpp:47
LENGTH_HISTORY
#define LENGTH_HISTORY
historyInfeasibility.
Definition: ClpInterior.hpp:485
ClpMatrixBase.hpp
ClpInterior::rhsW_
CoinWorkDouble * rhsW_
rhsW.
Definition: ClpInterior.hpp:533
Info::LSdamp
double LSdamp
Definition: ClpInterior.hpp:30
ClpInterior::setDelta
void setDelta(CoinWorkDouble value)
Definition: ClpInterior.hpp:232
Outfo::atolnew
double atolnew
Definition: ClpInterior.hpp:37
ClpInterior::smallestInfeasibility_
CoinWorkDouble smallestInfeasibility_
smallestInfeasibility
Definition: ClpInterior.hpp:483
ClpInterior::gamma
CoinWorkDouble gamma() const
gamma
Definition: ClpInterior.hpp:222
ClpInterior::clearUpperBound
void clearUpperBound(int sequence)
Definition: ClpInterior.hpp:360
ClpInterior::maximumRHSError_
CoinWorkDouble maximumRHSError_
maximumRHSError. maximum Ax
Definition: ClpInterior.hpp:469
Info::deltay
double * deltay
Definition: ClpInterior.hpp:31
ClpInterior::numberComplementarityItems_
int numberComplementarityItems_
numberComplementarityItems_ i.e. number of active bounds
Definition: ClpInterior.hpp:545
Options::wait
int wait
Definition: ClpInterior.hpp:60
ClpModel::matrix
CoinPackedMatrix * matrix() const
Matrix (if not ClpPackedmatrix be careful about memory leak.
Definition: ClpModel.hpp:697
ClpInterior::sequenceWithin
int sequenceWithin(int sequence) const
Returns sequence number within section.
Definition: ClpInterior.hpp:302
Info
******** DATA to be moved into protected section of ClpInterior
Definition: ClpInterior.hpp:27
ClpModel.hpp
Options::LSQRMaxIter
int LSQRMaxIter
Definition: ClpInterior.hpp:56
ClpInterior::ClpInterior
ClpInterior(const ClpModel *wholeModel, int numberRows, const int *whichRows, int numberColumns, const int *whichColumns, bool dropNames=true, bool dropIntegers=true)
Subproblem constructor.
ClpInterior::setFixedOrFree
void setFixedOrFree(int sequence)
To say a variable is fixed OR free.
Definition: ClpInterior.hpp:335
ClpModel
Definition: ClpModel.hpp:38
ClpInterior::worstComplementarity_
CoinWorkDouble worstComplementarity_
Worst complementarity.
Definition: ClpInterior.hpp:408
ClpInterior::projectionTolerance
CoinWorkDouble projectionTolerance() const
projectionTolerance
Definition: ClpInterior.hpp:208
ClpInterior::columnLowerWork_
CoinWorkDouble * columnLowerWork_
Column lower bounds - working copy.
Definition: ClpInterior.hpp:419
Outfo::istop
int istop
Definition: ClpInterior.hpp:39
ClpInterior::primalFeasible
bool primalFeasible() const
If problem is primal feasible.
Definition: ClpInterior.hpp:165
ClpInterior::diagonal_
CoinWorkDouble * diagonal_
diagonal
Definition: ClpInterior.hpp:504
ClpInterior::rhsL_
CoinWorkDouble * rhsL_
rhsL.
Definition: ClpInterior.hpp:529
ClpInterior::columnUpperWork_
CoinWorkDouble * columnUpperWork_
Column upper bounds - working copy.
Definition: ClpInterior.hpp:425
ClpInterior::deltaW_
CoinWorkDouble * deltaW_
deltaW.
Definition: ClpInterior.hpp:516
ClpInterior::historyInfeasibility_
CoinWorkDouble historyInfeasibility_[LENGTH_HISTORY]
Definition: ClpInterior.hpp:486
ClpInterior::maximumDualError_
CoinWorkDouble maximumDualError_
maximumDualError.
Definition: ClpInterior.hpp:473
ClpInterior::setMaximumBarrierIterations
void setMaximumBarrierIterations(int value)
Definition: ClpInterior.hpp:255
ClpInterior::readMps
int readMps(const char *filename, bool keepNames=false, bool ignoreErrors=false)
Read an mps file from the given filename.
ClpInterior::setUpperBound
void setUpperBound(int sequence)
To say a variable has upper bound.
Definition: ClpInterior.hpp:357
ClpInterior::numberFixed
int numberFixed() const
Return number fixed to see if worth presolving.
Options::LSproblem
int LSproblem
Definition: ClpInterior.hpp:55
ClpInterior::primalObjective_
CoinWorkDouble primalObjective_
primalObjective.
Definition: ClpInterior.hpp:451
Options
******** DATA to be moved into protected section of ClpInterior
Definition: ClpInterior.hpp:44
Info::r3norm
double r3norm
Definition: ClpInterior.hpp:29
ClpInterior::solutionNorm_
CoinWorkDouble solutionNorm_
solutionNorm.
Definition: ClpInterior.hpp:447
ClpInterior::actualPrimalStep_
CoinWorkDouble actualPrimalStep_
actualPrimalStep
Definition: ClpInterior.hpp:479
Options::LSQRconlim
double LSQRconlim
Definition: ClpInterior.hpp:59
ClpInterior::clearFlagged
void clearFlagged(int sequence)
Definition: ClpInterior.hpp:327
ClpInterior::lsqrObject_
ClpLsqr * lsqrObject_
Pointer to Lsqr object.
Definition: ClpInterior.hpp:436
ClpInterior::lowerBound
bool lowerBound(int sequence) const
Definition: ClpInterior.hpp:352
ClpInterior::diagonalPerturbation_
CoinWorkDouble diagonalPerturbation_
diagonalPerturbation
Definition: ClpInterior.hpp:459
Options::z0min
double z0min
Definition: ClpInterior.hpp:52
ClpInterior::diagonalNorm
CoinWorkDouble diagonalNorm() const
diagonalNorm
Definition: ClpInterior.hpp:197
ClpInterior::isColumn
int isColumn(int sequence) const
Returns 1 if sequence indicates column.
Definition: ClpInterior.hpp:298
ClpInterior::clearFixedOrFree
void clearFixedOrFree(int sequence)
Definition: ClpInterior.hpp:338
ClpInterior::primalR
CoinWorkDouble * primalR() const
Primal erturbation vector.
Definition: ClpInterior.hpp:266
ClpInterior::rhsNorm_
CoinWorkDouble rhsNorm_
rhsNorm.
Definition: ClpInterior.hpp:445
ClpInterior::rhsC_
CoinWorkDouble * rhsC_
rhs C
Definition: ClpInterior.hpp:535
ClpInterior::delta_
CoinWorkDouble delta_
Definition: ClpInterior.hpp:463
ClpInterior::primalObjective
CoinWorkDouble primalObjective() const
primalObjective.
Definition: ClpInterior.hpp:193
ClpInterior::pdco
int pdco()
Pdco algorithm - see ClpPdco.hpp for method.
ClpInterior::xsize_
CoinWorkDouble xsize_
Definition: ClpInterior.hpp:411
ClpInterior::setLowerBound
void setLowerBound(int sequence)
To say a variable has lower bound.
Definition: ClpInterior.hpp:346
ClpInterior::rawObjectiveValue
CoinWorkDouble rawObjectiveValue() const
Raw objective value (so always minimize)
Definition: ClpInterior.hpp:294
ClpModel::numberColumns_
int numberColumns_
Number of columns.
Definition: ClpModel.hpp:1126
ClpInterior::algorithm_
int algorithm_
Which algorithm being used.
Definition: ClpInterior.hpp:553
ClpInterior::deltaSU_
CoinWorkDouble * deltaSU_
deltaS.
Definition: ClpInterior.hpp:518
ClpInterior::~ClpInterior
~ClpInterior()
Destructor.
ClpMatrixBase
Abstract base class for Clp Matrices.
Definition: ClpMatrixBase.hpp:38
ClpInterior::sanityCheck
bool sanityCheck()
Sanity check on input rim data.
Options::StepTol
double StepTol
Definition: ClpInterior.hpp:50
ClpInterior::targetGap_
CoinWorkDouble targetGap_
targetGap
Definition: ClpInterior.hpp:465
ClpInterior::maximumRHSChange_
CoinWorkDouble maximumRHSChange_
maximumRHSChange
Definition: ClpInterior.hpp:494
ClpInterior::errorRegion_
CoinWorkDouble * errorRegion_
errorRegion. i.e. Ax
Definition: ClpInterior.hpp:496
ClpInterior::complementarityGap
CoinWorkDouble complementarityGap() const
ComplementarityGap.
Definition: ClpInterior.hpp:236
ClpInterior::delta
CoinWorkDouble delta() const
delta
Definition: ClpInterior.hpp:229
ClpInterior::deltaY_
CoinWorkDouble * deltaY_
delta Y
Definition: ClpInterior.hpp:512
ClpInterior::stepLength_
CoinWorkDouble stepLength_
stepLength
Definition: ClpInterior.hpp:455
ClpInterior::setCholesky
void setCholesky(ClpCholeskyBase *cholesky)
Set cholesky (and delete present one)
ClpInterior::deltaX_
CoinWorkDouble * deltaX_
delta X
Definition: ClpInterior.hpp:510
ClpInterior::upperSlack_
CoinWorkDouble * upperSlack_
upperSlack
Definition: ClpInterior.hpp:500
ClpInterior::scaleFactor_
CoinWorkDouble scaleFactor_
scaleFactor. For scaling objective
Definition: ClpInterior.hpp:477
ClpInterior::maximumBarrierIterations_
int maximumBarrierIterations_
Maximum iterations.
Definition: ClpInterior.hpp:547
ClpInterior::returnModel
void returnModel(ClpModel &otherModel)
Return model - updates any scalars.
ClpInterior::rhs_
CoinWorkDouble * rhs_
Rhs.
Definition: ClpInterior.hpp:430
ClpInterior::lowerSlack_
CoinWorkDouble * lowerSlack_
lowerSlack
Definition: ClpInterior.hpp:502
ClpInterior::createWorkingData
bool createWorkingData()
Returns true if data looks okay, false if not.
ClpInterior::rhsFixRegion_
CoinWorkDouble * rhsFixRegion_
rhsFixRegion.
Definition: ClpInterior.hpp:498
ClpModel::objectiveValue_
double objectiveValue_
Objective value.
Definition: ClpModel.hpp:1116
ClpInterior::clearLowerBound
void clearLowerBound(int sequence)
Definition: ClpInterior.hpp:349
ClpInterior::loadProblem
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.
ClpInterior::clearFixed
void clearFixed(int sequence)
Definition: ClpInterior.hpp:316
ClpSolve.hpp
ClpInterior::clearFakeUpper
void clearFakeUpper(int sequence)
Definition: ClpInterior.hpp:382
ClpInterior::actualDualStep_
CoinWorkDouble actualDualStep_
actualDualStep
Definition: ClpInterior.hpp:481
ClpInterior::rhsU_
CoinWorkDouble * rhsU_
rhsU.
Definition: ClpInterior.hpp:527
ClpInterior::setLinearPerturbation
void setLinearPerturbation(CoinWorkDouble value)
Definition: ClpInterior.hpp:204
ClpPdcoBase
Abstract base class for tailoring everything for Pcdo.
Definition: ClpPdcoBase.hpp:25
ClpInterior::wVec_
CoinWorkDouble * wVec_
wVec
Definition: ClpInterior.hpp:539
Options::delta
double delta
Definition: ClpInterior.hpp:46
ClpInterior::rhsZ_
CoinWorkDouble * rhsZ_
rhsZ.
Definition: ClpInterior.hpp:531
ClpInterior::borrowModel
void borrowModel(ClpModel &otherModel)
Borrow model.
ClpInterior::linearPerturbation_
CoinWorkDouble linearPerturbation_
linearPerturbation
Definition: ClpInterior.hpp:457
ClpInterior::dj_
CoinWorkDouble * dj_
Definition: ClpInterior.hpp:433
ClpInterior::pdco
int pdco(ClpPdcoBase *stuff, Options &options, Info &info, Outfo &outfo)
ClpInterior::setFakeLower
void setFakeLower(int sequence)
To say a variable has fake lower bound.
Definition: ClpInterior.hpp:368
ClpInterior::ClpInterior
ClpInterior()
Default constructor.
ClpInterior
This solves LPs using interior point methods.
Definition: ClpInterior.hpp:72
ClpInterior::worstDirectionAccuracy_
CoinWorkDouble worstDirectionAccuracy_
worstDirectionAccuracy
Definition: ClpInterior.hpp:492
ClpInterior::fixed
bool fixed(int sequence) const
Definition: ClpInterior.hpp:319
ClpInterior::deltaSL_
CoinWorkDouble * deltaSL_
Definition: ClpInterior.hpp:519
ClpInterior::rhsB_
CoinWorkDouble * rhsB_
rhs B
Definition: ClpInterior.hpp:525
ClpInterior::x_
CoinWorkDouble * x_
Definition: ClpInterior.hpp:431
ClpInterior::sumPrimalInfeasibilities_
CoinWorkDouble sumPrimalInfeasibilities_
Sum of primal infeasibilities.
Definition: ClpInterior.hpp:406
ClpInterior::numberComplementarityPairs_
int numberComplementarityPairs_
numberComplementarityPairs i.e. ones with lower and/or upper bounds (not fixed)
Definition: ClpInterior.hpp:543
ClpInterior::complementarityGap_
CoinWorkDouble complementarityGap_
complementarityGap.
Definition: ClpInterior.hpp:488
ClpInterior::sumPrimalInfeasibilities
CoinWorkDouble sumPrimalInfeasibilities() const
Sum of primal infeasibilities.
Definition: ClpInterior.hpp:185
ClpInterior::workArray_
CoinWorkDouble * workArray_
work array
Definition: ClpInterior.hpp:508
ClpInterior::dualObjective
CoinWorkDouble dualObjective() const
dualObjective.
Definition: ClpInterior.hpp:189
ClpInterior::mu_
CoinWorkDouble mu_
Below here is standard barrier stuff mu.
Definition: ClpInterior.hpp:441
ClpInterior::setFakeUpper
void setFakeUpper(int sequence)
To say a variable has fake upper bound.
Definition: ClpInterior.hpp:379
ClpInterior::setFlagged
void setFlagged(int sequence)
To flag a variable.
Definition: ClpInterior.hpp:324
ClpInterior::operator=
ClpInterior & operator=(const ClpInterior &rhs)
Assignment operator. This copies the data.
ClpInterior::primalDual
int primalDual()
Primal-Dual Predictor-Corrector barrier.
ClpInterior::fakeUpper
bool fakeUpper(int sequence) const
Definition: ClpInterior.hpp:385
ClpInterior::loadProblem
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).
Outfo::itncg
int itncg
Definition: ClpInterior.hpp:40
ClpInterior::gutsOfCopy
void gutsOfCopy(const ClpInterior &rhs)
Does most of copying.
ClpModel::status_
unsigned char * status_
Status (i.e.
Definition: ClpModel.hpp:1173
Options::OptTol
double OptTol
Definition: ClpInterior.hpp:49
Options::LSQRatol2
double LSQRatol2
Definition: ClpInterior.hpp:58
ClpInterior::dualFeasible
bool dualFeasible() const
If problem is dual feasible.
Definition: ClpInterior.hpp:169
ClpInterior::deltaZ_
CoinWorkDouble * deltaZ_
deltaZ.
Definition: ClpInterior.hpp:514
ClpInterior::largestDualError_
CoinWorkDouble largestDualError_
Largest error on basic duals.
Definition: ClpInterior.hpp:402
ClpInterior::setDiagonalPerturbation
void setDiagonalPerturbation(CoinWorkDouble value)
Definition: ClpInterior.hpp:218
ClpInterior::zsize_
CoinWorkDouble zsize_
Definition: ClpInterior.hpp:412
ClpInterior::setAlgorithm
void setAlgorithm(int value)
Set algorithm.
Definition: ClpInterior.hpp:177
ClpInterior::loadProblem
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...
ClpInterior::quadraticDjs
CoinWorkDouble quadraticDjs(CoinWorkDouble *djRegion, const CoinWorkDouble *solution, CoinWorkDouble scaleFactor)
Modifies djs to allow for quadratic.
ClpInterior::checkSolution
void checkSolution()
Checks solution.
ClpInterior::upper_
CoinWorkDouble * upper_
Working copy of upper bounds (Owner of arrays below)
Definition: ClpInterior.hpp:421
ClpModel::numberColumns
int numberColumns() const
Definition: ClpModel.hpp:325
ClpInterior::ClpInterior
ClpInterior(const ClpInterior &)
Copy constructor.
Options::gamma
double gamma
Definition: ClpInterior.hpp:45
ClpInterior::gutsOfDelete
void gutsOfDelete()
Does most of deletion.
ClpInterior::diagonalNorm_
CoinWorkDouble diagonalNorm_
diagonalNorm.
Definition: ClpInterior.hpp:453
ClpInterior::setProjectionTolerance
void setProjectionTolerance(CoinWorkDouble value)
Definition: ClpInterior.hpp:211
ClpInterior::rowUpperWork_
CoinWorkDouble * rowUpperWork_
Row upper bounds - working copy.
Definition: ClpInterior.hpp:423
ClpInterior::dualR
CoinWorkDouble * dualR() const
Dual erturbation vector.
Definition: ClpInterior.hpp:270
Outfo::r3ratio
double r3ratio
Definition: ClpInterior.hpp:38
ClpInterior::solution_
CoinWorkDouble * solution_
solution
Definition: ClpInterior.hpp:506
Options::LSmethod
int LSmethod
Definition: ClpInterior.hpp:54
ClpInterior::housekeeping
int housekeeping()
This does housekeeping.
ClpInterior::dualR_
CoinWorkDouble * dualR_
Dual regularization array.
Definition: ClpInterior.hpp:523
ClpInterior::pdcoStuff_
ClpPdcoBase * pdcoStuff_
Pointer to stuff.
Definition: ClpInterior.hpp:438
ClpInterior::largestPrimalError
CoinWorkDouble largestPrimalError() const
Largest error on Ax-b.
Definition: ClpInterior.hpp:244
ClpInterior::y_
CoinWorkDouble * y_
Definition: ClpInterior.hpp:432
ClpInterior::sumDualInfeasibilities_
CoinWorkDouble sumDualInfeasibilities_
Sum of dual infeasibilities.
Definition: ClpInterior.hpp:404
ClpLsqr
This class implements LSQR.
Definition: ClpLsqr.hpp:76
ClpInterior::lower_
CoinWorkDouble * lower_
Working copy of lower bounds (Owner of arrays below)
Definition: ClpInterior.hpp:415
ClpInterior::fixFixed
void fixFixed(bool reallyFix=true)
fix variables interior says should be.
ClpInterior::cost_
CoinWorkDouble * cost_
Working copy of objective.
Definition: ClpInterior.hpp:427
ClpInterior::flagged
bool flagged(int sequence) const
Definition: ClpInterior.hpp:330
ClpInterior::algorithm
int algorithm() const
Current (or last) algorithm.
Definition: ClpInterior.hpp:173
Options::x0min
double x0min
Definition: ClpInterior.hpp:51
ClpModel::numberRows
int numberRows() const
Number of rows.
Definition: ClpModel.hpp:315
ClpModel::dropNames
void dropNames()
Drops names - makes lengthnames 0 and names empty.
Options::FeaTol
double FeaTol
Definition: ClpInterior.hpp:48
ClpInterior::largestPrimalError_
CoinWorkDouble largestPrimalError_
Largest error on Ax-b.
Definition: ClpInterior.hpp:400
Options::mu0
double mu0
Definition: ClpInterior.hpp:53