Clp  1.17.8
ClpInterior.hpp
Go to the documentation of this file.
1 /* $Id$ */
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:
79  ClpInterior();
81 
83  ClpInterior(const ClpInterior &);
85  ClpInterior(const ClpModel &);
90  ClpInterior(const ClpModel *wholeModel,
91  int numberRows, const int *whichRows,
92  int numberColumns, const int *whichColumns,
93  bool dropNames = true, bool dropIntegers = true);
95  ClpInterior &operator=(const ClpInterior &rhs);
97  ~ClpInterior();
98  // Ones below are just ClpModel with some changes
110  void loadProblem(const ClpMatrixBase &matrix,
111  const double *collb, const double *colub,
112  const double *obj,
113  const double *rowlb, const double *rowub,
114  const double *rowObjective = NULL);
115  void loadProblem(const CoinPackedMatrix &matrix,
116  const double *collb, const double *colub,
117  const double *obj,
118  const double *rowlb, const double *rowub,
119  const double *rowObjective = NULL);
120 
123  void loadProblem(const int numcols, const int numrows,
124  const CoinBigIndex *start, const int *index,
125  const double *value,
126  const double *collb, const double *colub,
127  const double *obj,
128  const double *rowlb, const double *rowub,
129  const double *rowObjective = NULL);
131  void loadProblem(const int numcols, const int numrows,
132  const CoinBigIndex *start, const int *index,
133  const double *value, const int *length,
134  const double *collb, const double *colub,
135  const double *obj,
136  const double *rowlb, const double *rowub,
137  const double *rowObjective = NULL);
139  int readMps(const char *filename,
140  bool keepNames = false,
141  bool ignoreErrors = false);
146  void borrowModel(ClpModel &otherModel);
148  void returnModel(ClpModel &otherModel);
150 
154  int pdco();
155  // ** Temporary version
156  int pdco(ClpPdcoBase *stuff, Options &options, Info &info, Outfo &outfo);
158  int primalDual();
160 
163  inline bool primalFeasible() const
165  {
166  return (sumPrimalInfeasibilities_ <= 1.0e-5);
167  }
169  inline bool dualFeasible() const
170  {
171  return (sumDualInfeasibilities_ <= 1.0e-5);
172  }
174  inline int algorithm() const
175  {
176  return algorithm_;
177  }
179  inline void setAlgorithm(int value)
180  {
181  algorithm_ = value;
182  }
184  inline CoinWorkDouble sumDualInfeasibilities() const
185  {
187  }
189  inline CoinWorkDouble sumPrimalInfeasibilities() const
190  {
192  }
194  inline CoinWorkDouble dualObjective() const
195  {
196  return dualObjective_;
197  }
199  inline CoinWorkDouble primalObjective() const
200  {
201  return primalObjective_;
202  }
204  inline CoinWorkDouble diagonalNorm() const
205  {
206  return diagonalNorm_;
207  }
209  inline CoinWorkDouble linearPerturbation() const
210  {
211  return linearPerturbation_;
212  }
213  inline void setLinearPerturbation(CoinWorkDouble value)
214  {
215  linearPerturbation_ = value;
216  }
218  inline CoinWorkDouble projectionTolerance() const
219  {
220  return projectionTolerance_;
221  }
222  inline void setProjectionTolerance(CoinWorkDouble value)
223  {
224  projectionTolerance_ = value;
225  }
227  inline CoinWorkDouble diagonalPerturbation() const
228  {
229  return diagonalPerturbation_;
230  }
231  inline void setDiagonalPerturbation(CoinWorkDouble value)
232  {
233  diagonalPerturbation_ = value;
234  }
236  inline CoinWorkDouble gamma() const
237  {
238  return gamma_;
239  }
240  inline void setGamma(CoinWorkDouble value)
241  {
242  gamma_ = value;
243  }
245  inline CoinWorkDouble delta() const
246  {
247  return delta_;
248  }
249  inline void setDelta(CoinWorkDouble value)
250  {
251  delta_ = value;
252  }
254  inline CoinWorkDouble complementarityGap() const
255  {
256  return complementarityGap_;
257  }
259 
262  inline CoinWorkDouble largestPrimalError() const
264  {
265  return largestPrimalError_;
266  }
268  inline CoinWorkDouble largestDualError() const
269  {
270  return largestDualError_;
271  }
273  inline int maximumBarrierIterations() const
274  {
276  }
277  inline void setMaximumBarrierIterations(int value)
278  {
280  }
282  void setCholesky(ClpCholeskyBase *cholesky);
284  int numberFixed() const;
287  void fixFixed(bool reallyFix = true);
289  inline CoinWorkDouble *primalR() const
290  {
291  return primalR_;
292  }
294  inline CoinWorkDouble *dualR() const
295  {
296  return dualR_;
297  }
299 
300 protected:
303  void gutsOfDelete();
306  void gutsOfCopy(const ClpInterior &rhs);
308  bool createWorkingData();
309  void deleteWorkingData();
311  bool sanityCheck();
313  int housekeeping();
315 public:
318  inline CoinWorkDouble rawObjectiveValue() const
320  {
321  return objectiveValue_;
322  }
324  inline int isColumn(int sequence) const
325  {
326  return sequence < numberColumns_ ? 1 : 0;
327  }
329  inline int sequenceWithin(int sequence) const
330  {
331  return sequence < numberColumns_ ? sequence : sequence - numberColumns_;
332  }
334  void checkSolution();
337  CoinWorkDouble quadraticDjs(CoinWorkDouble *djRegion, const CoinWorkDouble *solution,
338  CoinWorkDouble scaleFactor);
339 
341  inline void setFixed(int sequence)
342  {
343  status_[sequence] = static_cast< unsigned char >(status_[sequence] | 1);
344  }
345  inline void clearFixed(int sequence)
346  {
347  status_[sequence] = static_cast< unsigned char >(status_[sequence] & ~1);
348  }
349  inline bool fixed(int sequence) const
350  {
351  return ((status_[sequence] & 1) != 0);
352  }
353 
355  inline void setFlagged(int sequence)
356  {
357  status_[sequence] = static_cast< unsigned char >(status_[sequence] | 2);
358  }
359  inline void clearFlagged(int sequence)
360  {
361  status_[sequence] = static_cast< unsigned char >(status_[sequence] & ~2);
362  }
363  inline bool flagged(int sequence) const
364  {
365  return ((status_[sequence] & 2) != 0);
366  }
367 
369  inline void setFixedOrFree(int sequence)
370  {
371  status_[sequence] = static_cast< unsigned char >(status_[sequence] | 4);
372  }
373  inline void clearFixedOrFree(int sequence)
374  {
375  status_[sequence] = static_cast< unsigned char >(status_[sequence] & ~4);
376  }
377  inline bool fixedOrFree(int sequence) const
378  {
379  return ((status_[sequence] & 4) != 0);
380  }
381 
383  inline void setLowerBound(int sequence)
384  {
385  status_[sequence] = static_cast< unsigned char >(status_[sequence] | 8);
386  }
387  inline void clearLowerBound(int sequence)
388  {
389  status_[sequence] = static_cast< unsigned char >(status_[sequence] & ~8);
390  }
391  inline bool lowerBound(int sequence) const
392  {
393  return ((status_[sequence] & 8) != 0);
394  }
395 
397  inline void setUpperBound(int sequence)
398  {
399  status_[sequence] = static_cast< unsigned char >(status_[sequence] | 16);
400  }
401  inline void clearUpperBound(int sequence)
402  {
403  status_[sequence] = static_cast< unsigned char >(status_[sequence] & ~16);
404  }
405  inline bool upperBound(int sequence) const
406  {
407  return ((status_[sequence] & 16) != 0);
408  }
409 
411  inline void setFakeLower(int sequence)
412  {
413  status_[sequence] = static_cast< unsigned char >(status_[sequence] | 32);
414  }
415  inline void clearFakeLower(int sequence)
416  {
417  status_[sequence] = static_cast< unsigned char >(status_[sequence] & ~32);
418  }
419  inline bool fakeLower(int sequence) const
420  {
421  return ((status_[sequence] & 32) != 0);
422  }
423 
425  inline void setFakeUpper(int sequence)
426  {
427  status_[sequence] = static_cast< unsigned char >(status_[sequence] | 64);
428  }
429  inline void clearFakeUpper(int sequence)
430  {
431  status_[sequence] = static_cast< unsigned char >(status_[sequence] & ~64);
432  }
433  inline bool fakeUpper(int sequence) const
434  {
435  return ((status_[sequence] & 64) != 0);
436  }
438 
440 protected:
447  CoinWorkDouble largestPrimalError_;
450  CoinWorkDouble largestDualError_;
452  CoinWorkDouble sumDualInfeasibilities_;
456  CoinWorkDouble worstComplementarity_;
458 public:
459  CoinWorkDouble xsize_;
460  CoinWorkDouble zsize_;
461 
462 protected:
464  CoinWorkDouble *lower_;
466  CoinWorkDouble *rowLowerWork_;
468  CoinWorkDouble *columnLowerWork_;
470  CoinWorkDouble *upper_;
472  CoinWorkDouble *rowUpperWork_;
474  CoinWorkDouble *columnUpperWork_;
476  CoinWorkDouble *cost_;
477 
478 public:
480  CoinWorkDouble *rhs_;
481  CoinWorkDouble *x_;
482  CoinWorkDouble *y_;
483  CoinWorkDouble *dj_;
484 
485 protected:
492  CoinWorkDouble mu_;
494  CoinWorkDouble objectiveNorm_;
496  CoinWorkDouble rhsNorm_;
498  CoinWorkDouble solutionNorm_;
500  CoinWorkDouble dualObjective_;
502  CoinWorkDouble primalObjective_;
504  CoinWorkDouble diagonalNorm_;
506  CoinWorkDouble stepLength_;
508  CoinWorkDouble linearPerturbation_;
510  CoinWorkDouble diagonalPerturbation_;
511  // gamma from Saunders and Tomlin regularized
512  CoinWorkDouble gamma_;
513  // delta from Saunders and Tomlin regularized
514  CoinWorkDouble delta_;
516  CoinWorkDouble targetGap_;
518  CoinWorkDouble projectionTolerance_;
520  CoinWorkDouble maximumRHSError_;
524  CoinWorkDouble maximumDualError_;
526  CoinWorkDouble diagonalScaleFactor_;
528  CoinWorkDouble scaleFactor_;
530  CoinWorkDouble actualPrimalStep_;
532  CoinWorkDouble actualDualStep_;
534  CoinWorkDouble smallestInfeasibility_;
536 #define LENGTH_HISTORY 5
539  CoinWorkDouble complementarityGap_;
541  CoinWorkDouble baseObjectiveNorm_;
543  CoinWorkDouble worstDirectionAccuracy_;
545  CoinWorkDouble maximumRHSChange_;
547  CoinWorkDouble *errorRegion_;
549  CoinWorkDouble *rhsFixRegion_;
551  CoinWorkDouble *upperSlack_;
553  CoinWorkDouble *lowerSlack_;
555  CoinWorkDouble *diagonal_;
557  CoinWorkDouble *solution_;
559  CoinWorkDouble *workArray_;
561  CoinWorkDouble *deltaX_;
563  CoinWorkDouble *deltaY_;
565  CoinWorkDouble *deltaZ_;
567  CoinWorkDouble *deltaW_;
569  CoinWorkDouble *deltaSU_;
570  CoinWorkDouble *deltaSL_;
572  CoinWorkDouble *primalR_;
574  CoinWorkDouble *dualR_;
576  CoinWorkDouble *rhsB_;
578  CoinWorkDouble *rhsU_;
580  CoinWorkDouble *rhsL_;
582  CoinWorkDouble *rhsZ_;
584  CoinWorkDouble *rhsW_;
586  CoinWorkDouble *rhsC_;
588  CoinWorkDouble *zVec_;
590  CoinWorkDouble *wVec_;
606 };
607 //#############################################################################
616 void ClpInteriorUnitTest(const std::string &mpsDir,
617  const std::string &netlibDir);
618 
619 #endif
620 
621 /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
622 */
ClpInterior::deleteWorkingData
void deleteWorkingData()
ClpInterior::upperBound
bool upperBound(int sequence) const
Definition: ClpInterior.hpp:405
ClpInterior::rowLowerWork_
CoinWorkDouble * rowLowerWork_
Row lower bounds - working copy.
Definition: ClpInterior.hpp:466
ClpInterior::setFixed
void setFixed(int sequence)
To say a variable is fixed.
Definition: ClpInterior.hpp:341
ClpInterior::objectiveNorm_
CoinWorkDouble objectiveNorm_
objectiveNorm.
Definition: ClpInterior.hpp:494
ClpInterior::sumDualInfeasibilities
CoinWorkDouble sumDualInfeasibilities() const
Sum of dual infeasibilities.
Definition: ClpInterior.hpp:184
ClpInterior::cholesky_
ClpCholeskyBase * cholesky_
cholesky.
Definition: ClpInterior.hpp:592
ClpInterior::largestDualError
CoinWorkDouble largestDualError() const
Largest error on basic duals.
Definition: ClpInterior.hpp:268
ClpInterior::gonePrimalFeasible_
bool gonePrimalFeasible_
gonePrimalFeasible.
Definition: ClpInterior.hpp:600
ClpInterior::maximumBarrierIterations
int maximumBarrierIterations() const
Maximum iterations.
Definition: ClpInterior.hpp:273
ClpInterior::dualObjective_
CoinWorkDouble dualObjective_
dualObjective.
Definition: ClpInterior.hpp:500
ClpInterior::fakeLower
bool fakeLower(int sequence) const
Definition: ClpInterior.hpp:419
ClpInterior::diagonalScaleFactor_
CoinWorkDouble diagonalScaleFactor_
diagonalScaleFactor.
Definition: ClpInterior.hpp:526
ClpInterior::setGamma
void setGamma(CoinWorkDouble value)
Definition: ClpInterior.hpp:240
ClpModel::rowObjective
double * rowObjective() const
Row Objective.
Definition: ClpModel.hpp:746
ClpInterior::baseObjectiveNorm_
CoinWorkDouble baseObjectiveNorm_
baseObjectiveNorm
Definition: ClpInterior.hpp:541
ClpInterior::primalR_
CoinWorkDouble * primalR_
Primal regularization array.
Definition: ClpInterior.hpp:572
Outfo::atolold
double atolold
Definition: ClpInterior.hpp:36
ClpInterior::linearPerturbation
CoinWorkDouble linearPerturbation() const
linearPerturbation
Definition: ClpInterior.hpp:209
ClpInterior::diagonalPerturbation
CoinWorkDouble diagonalPerturbation() const
diagonalPerturbation
Definition: ClpInterior.hpp:227
Options::LSQRatol1
double LSQRatol1
Definition: ClpInterior.hpp:57
ClpInterior::goneDualFeasible_
bool goneDualFeasible_
goneDualFeasible.
Definition: ClpInterior.hpp:602
ClpInterior::projectionTolerance_
CoinWorkDouble projectionTolerance_
projectionTolerance
Definition: ClpInterior.hpp:518
ClpInterior::gamma_
CoinWorkDouble gamma_
Definition: ClpInterior.hpp:512
ClpInterior::maximumBoundInfeasibility_
CoinWorkDouble maximumBoundInfeasibility_
maximumBoundInfeasibility.
Definition: ClpInterior.hpp:522
ClpInterior::zVec_
CoinWorkDouble * zVec_
zVec
Definition: ClpInterior.hpp:588
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:377
Info::atolmin
double atolmin
Definition: ClpInterior.hpp:28
ClpInterior::clearFakeLower
void clearFakeLower(int sequence)
Definition: ClpInterior.hpp:415
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:536
ClpMatrixBase.hpp
ClpInterior::rhsW_
CoinWorkDouble * rhsW_
rhsW.
Definition: ClpInterior.hpp:584
Info::LSdamp
double LSdamp
Definition: ClpInterior.hpp:30
ClpInterior::setDelta
void setDelta(CoinWorkDouble value)
Definition: ClpInterior.hpp:249
Outfo::atolnew
double atolnew
Definition: ClpInterior.hpp:37
ClpInterior::smallestInfeasibility_
CoinWorkDouble smallestInfeasibility_
smallestInfeasibility
Definition: ClpInterior.hpp:534
ClpInterior::gamma
CoinWorkDouble gamma() const
gamma
Definition: ClpInterior.hpp:236
ClpInterior::clearUpperBound
void clearUpperBound(int sequence)
Definition: ClpInterior.hpp:401
ClpInterior::maximumRHSError_
CoinWorkDouble maximumRHSError_
maximumRHSError. maximum Ax
Definition: ClpInterior.hpp:520
Info::deltay
double * deltay
Definition: ClpInterior.hpp:31
ClpInterior::numberComplementarityItems_
int numberComplementarityItems_
numberComplementarityItems_ i.e. number of active bounds
Definition: ClpInterior.hpp:596
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:773
ClpInterior::sequenceWithin
int sequenceWithin(int sequence) const
Returns sequence number within section.
Definition: ClpInterior.hpp:329
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::setFixedOrFree
void setFixedOrFree(int sequence)
To say a variable is fixed OR free.
Definition: ClpInterior.hpp:369
ClpModel
Definition: ClpModel.hpp:38
ClpInterior::worstComplementarity_
CoinWorkDouble worstComplementarity_
Worst complementarity.
Definition: ClpInterior.hpp:456
ClpInterior::projectionTolerance
CoinWorkDouble projectionTolerance() const
projectionTolerance
Definition: ClpInterior.hpp:218
ClpInterior::columnLowerWork_
CoinWorkDouble * columnLowerWork_
Column lower bounds - working copy.
Definition: ClpInterior.hpp:468
Outfo::istop
int istop
Definition: ClpInterior.hpp:39
ClpInterior::primalFeasible
bool primalFeasible() const
If problem is primal feasible.
Definition: ClpInterior.hpp:164
ClpInterior::diagonal_
CoinWorkDouble * diagonal_
diagonal
Definition: ClpInterior.hpp:555
ClpInterior::rhsL_
CoinWorkDouble * rhsL_
rhsL.
Definition: ClpInterior.hpp:580
ClpInterior::columnUpperWork_
CoinWorkDouble * columnUpperWork_
Column upper bounds - working copy.
Definition: ClpInterior.hpp:474
ClpInterior::deltaW_
CoinWorkDouble * deltaW_
deltaW.
Definition: ClpInterior.hpp:567
ClpInterior::historyInfeasibility_
CoinWorkDouble historyInfeasibility_[LENGTH_HISTORY]
Definition: ClpInterior.hpp:537
ClpInterior::maximumDualError_
CoinWorkDouble maximumDualError_
maximumDualError.
Definition: ClpInterior.hpp:524
ClpInterior::setMaximumBarrierIterations
void setMaximumBarrierIterations(int value)
Definition: ClpInterior.hpp:277
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:397
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:502
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:498
ClpInterior::actualPrimalStep_
CoinWorkDouble actualPrimalStep_
actualPrimalStep
Definition: ClpInterior.hpp:530
Options::LSQRconlim
double LSQRconlim
Definition: ClpInterior.hpp:59
ClpInterior::clearFlagged
void clearFlagged(int sequence)
Definition: ClpInterior.hpp:359
ClpInterior::lsqrObject_
ClpLsqr * lsqrObject_
Pointer to Lsqr object.
Definition: ClpInterior.hpp:487
ClpInterior::lowerBound
bool lowerBound(int sequence) const
Definition: ClpInterior.hpp:391
ClpInterior::diagonalPerturbation_
CoinWorkDouble diagonalPerturbation_
diagonalPerturbation
Definition: ClpInterior.hpp:510
Options::z0min
double z0min
Definition: ClpInterior.hpp:52
ClpInterior::diagonalNorm
CoinWorkDouble diagonalNorm() const
diagonalNorm
Definition: ClpInterior.hpp:204
ClpInterior::isColumn
int isColumn(int sequence) const
Returns 1 if sequence indicates column.
Definition: ClpInterior.hpp:324
ClpInterior::clearFixedOrFree
void clearFixedOrFree(int sequence)
Definition: ClpInterior.hpp:373
ClpInterior::primalR
CoinWorkDouble * primalR() const
Primal erturbation vector.
Definition: ClpInterior.hpp:289
ClpInterior::rhsNorm_
CoinWorkDouble rhsNorm_
rhsNorm.
Definition: ClpInterior.hpp:496
ClpInterior::rhsC_
CoinWorkDouble * rhsC_
rhs C
Definition: ClpInterior.hpp:586
ClpInterior::delta_
CoinWorkDouble delta_
Definition: ClpInterior.hpp:514
ClpInterior::primalObjective
CoinWorkDouble primalObjective() const
primalObjective.
Definition: ClpInterior.hpp:199
ClpInterior::pdco
int pdco()
Pdco algorithm - see ClpPdco.hpp for method.
ClpInterior::xsize_
CoinWorkDouble xsize_
Definition: ClpInterior.hpp:459
ClpInterior::setLowerBound
void setLowerBound(int sequence)
To say a variable has lower bound.
Definition: ClpInterior.hpp:383
ClpInterior::rawObjectiveValue
CoinWorkDouble rawObjectiveValue() const
Raw objective value (so always minimize)
Definition: ClpInterior.hpp:319
ClpModel::numberColumns_
int numberColumns_
Number of columns.
Definition: ClpModel.hpp:1259
ClpInterior::algorithm_
int algorithm_
Which algorithm being used.
Definition: ClpInterior.hpp:604
ClpInterior::deltaSU_
CoinWorkDouble * deltaSU_
deltaS.
Definition: ClpInterior.hpp:569
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:516
ClpInterior::maximumRHSChange_
CoinWorkDouble maximumRHSChange_
maximumRHSChange
Definition: ClpInterior.hpp:545
ClpInterior::errorRegion_
CoinWorkDouble * errorRegion_
errorRegion. i.e. Ax
Definition: ClpInterior.hpp:547
ClpInterior::complementarityGap
CoinWorkDouble complementarityGap() const
ComplementarityGap.
Definition: ClpInterior.hpp:254
ClpInterior::delta
CoinWorkDouble delta() const
delta
Definition: ClpInterior.hpp:245
ClpInterior::deltaY_
CoinWorkDouble * deltaY_
delta Y
Definition: ClpInterior.hpp:563
ClpInterior::stepLength_
CoinWorkDouble stepLength_
stepLength
Definition: ClpInterior.hpp:506
ClpInterior::setCholesky
void setCholesky(ClpCholeskyBase *cholesky)
Set cholesky (and delete present one)
ClpInterior::deltaX_
CoinWorkDouble * deltaX_
delta X
Definition: ClpInterior.hpp:561
ClpInterior::upperSlack_
CoinWorkDouble * upperSlack_
upperSlack
Definition: ClpInterior.hpp:551
ClpInterior::scaleFactor_
CoinWorkDouble scaleFactor_
scaleFactor. For scaling objective
Definition: ClpInterior.hpp:528
ClpInterior::maximumBarrierIterations_
int maximumBarrierIterations_
Maximum iterations.
Definition: ClpInterior.hpp:598
ClpInterior::returnModel
void returnModel(ClpModel &otherModel)
Return model - updates any scalars.
ClpInterior::rhs_
CoinWorkDouble * rhs_
Rhs.
Definition: ClpInterior.hpp:480
ClpInterior::lowerSlack_
CoinWorkDouble * lowerSlack_
lowerSlack
Definition: ClpInterior.hpp:553
ClpInterior::createWorkingData
bool createWorkingData()
Returns true if data looks okay, false if not.
ClpInterior::rhsFixRegion_
CoinWorkDouble * rhsFixRegion_
rhsFixRegion.
Definition: ClpInterior.hpp:549
ClpModel::objectiveValue_
double objectiveValue_
Objective value.
Definition: ClpModel.hpp:1249
ClpInterior::clearLowerBound
void clearLowerBound(int sequence)
Definition: ClpInterior.hpp:387
ClpInterior::clearFixed
void clearFixed(int sequence)
Definition: ClpInterior.hpp:345
ClpSolve.hpp
ClpInterior::clearFakeUpper
void clearFakeUpper(int sequence)
Definition: ClpInterior.hpp:429
ClpInterior::actualDualStep_
CoinWorkDouble actualDualStep_
actualDualStep
Definition: ClpInterior.hpp:532
ClpInterior::rhsU_
CoinWorkDouble * rhsU_
rhsU.
Definition: ClpInterior.hpp:578
ClpInterior::setLinearPerturbation
void setLinearPerturbation(CoinWorkDouble value)
Definition: ClpInterior.hpp:213
ClpPdcoBase
Abstract base class for tailoring everything for Pcdo.
Definition: ClpPdcoBase.hpp:25
ClpInterior::wVec_
CoinWorkDouble * wVec_
wVec
Definition: ClpInterior.hpp:590
Options::delta
double delta
Definition: ClpInterior.hpp:46
ClpInterior::rhsZ_
CoinWorkDouble * rhsZ_
rhsZ.
Definition: ClpInterior.hpp:582
ClpInterior::borrowModel
void borrowModel(ClpModel &otherModel)
Borrow model.
ClpInterior::linearPerturbation_
CoinWorkDouble linearPerturbation_
linearPerturbation
Definition: ClpInterior.hpp:508
ClpInterior::dj_
CoinWorkDouble * dj_
Definition: ClpInterior.hpp:483
ClpInterior::setFakeLower
void setFakeLower(int sequence)
To say a variable has fake lower bound.
Definition: ClpInterior.hpp:411
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:543
ClpInterior::fixed
bool fixed(int sequence) const
Definition: ClpInterior.hpp:349
ClpInterior::deltaSL_
CoinWorkDouble * deltaSL_
Definition: ClpInterior.hpp:570
ClpInterior::rhsB_
CoinWorkDouble * rhsB_
rhs B
Definition: ClpInterior.hpp:576
ClpInterior::x_
CoinWorkDouble * x_
Definition: ClpInterior.hpp:481
ClpInterior::sumPrimalInfeasibilities_
CoinWorkDouble sumPrimalInfeasibilities_
Sum of primal infeasibilities.
Definition: ClpInterior.hpp:454
ClpInterior::numberComplementarityPairs_
int numberComplementarityPairs_
numberComplementarityPairs i.e. ones with lower and/or upper bounds (not fixed)
Definition: ClpInterior.hpp:594
ClpInterior::complementarityGap_
CoinWorkDouble complementarityGap_
complementarityGap.
Definition: ClpInterior.hpp:539
ClpInterior::sumPrimalInfeasibilities
CoinWorkDouble sumPrimalInfeasibilities() const
Sum of primal infeasibilities.
Definition: ClpInterior.hpp:189
ClpInterior::workArray_
CoinWorkDouble * workArray_
work array
Definition: ClpInterior.hpp:559
ClpInterior::dualObjective
CoinWorkDouble dualObjective() const
dualObjective.
Definition: ClpInterior.hpp:194
ClpInterior::mu_
CoinWorkDouble mu_
Below here is standard barrier stuff mu.
Definition: ClpInterior.hpp:492
ClpInterior::setFakeUpper
void setFakeUpper(int sequence)
To say a variable has fake upper bound.
Definition: ClpInterior.hpp:425
ClpInterior::setFlagged
void setFlagged(int sequence)
To flag a variable.
Definition: ClpInterior.hpp:355
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:433
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:1306
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:565
ClpInterior::largestDualError_
CoinWorkDouble largestDualError_
Largest error on basic duals.
Definition: ClpInterior.hpp:450
ClpInterior::setDiagonalPerturbation
void setDiagonalPerturbation(CoinWorkDouble value)
Definition: ClpInterior.hpp:231
ClpInterior::zsize_
CoinWorkDouble zsize_
Definition: ClpInterior.hpp:460
ClpInterior::setAlgorithm
void setAlgorithm(int value)
Set algorithm.
Definition: ClpInterior.hpp:179
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:470
ClpModel::numberColumns
int numberColumns() const
Definition: ClpModel.hpp:332
Options::gamma
double gamma
Definition: ClpInterior.hpp:45
ClpInterior::gutsOfDelete
void gutsOfDelete()
Does most of deletion.
ClpInterior::diagonalNorm_
CoinWorkDouble diagonalNorm_
diagonalNorm.
Definition: ClpInterior.hpp:504
ClpInterior::setProjectionTolerance
void setProjectionTolerance(CoinWorkDouble value)
Definition: ClpInterior.hpp:222
ClpInterior::rowUpperWork_
CoinWorkDouble * rowUpperWork_
Row upper bounds - working copy.
Definition: ClpInterior.hpp:472
ClpInterior::dualR
CoinWorkDouble * dualR() const
Dual erturbation vector.
Definition: ClpInterior.hpp:294
Outfo::r3ratio
double r3ratio
Definition: ClpInterior.hpp:38
ClpInterior::solution_
CoinWorkDouble * solution_
solution
Definition: ClpInterior.hpp:557
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:574
ClpInterior::pdcoStuff_
ClpPdcoBase * pdcoStuff_
Pointer to stuff.
Definition: ClpInterior.hpp:489
ClpInterior::largestPrimalError
CoinWorkDouble largestPrimalError() const
Largest error on Ax-b.
Definition: ClpInterior.hpp:263
ClpInterior::y_
CoinWorkDouble * y_
Definition: ClpInterior.hpp:482
ClpInterior::sumDualInfeasibilities_
CoinWorkDouble sumDualInfeasibilities_
Sum of dual infeasibilities.
Definition: ClpInterior.hpp:452
ClpLsqr
This class implements LSQR.
Definition: ClpLsqr.hpp:75
ClpInterior::lower_
CoinWorkDouble * lower_
Working copy of lower bounds (Owner of arrays below)
Definition: ClpInterior.hpp:464
ClpInterior::fixFixed
void fixFixed(bool reallyFix=true)
fix variables interior says should be.
ClpInterior::cost_
CoinWorkDouble * cost_
Working copy of objective.
Definition: ClpInterior.hpp:476
ClpInterior::flagged
bool flagged(int sequence) const
Definition: ClpInterior.hpp:363
ClpInterior::algorithm
int algorithm() const
Current (or last) algorithm.
Definition: ClpInterior.hpp:174
Options::x0min
double x0min
Definition: ClpInterior.hpp:51
ClpModel::numberRows
int numberRows() const
Number of rows.
Definition: ClpModel.hpp:319
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:448
Options::mu0
double mu0
Definition: ClpInterior.hpp:53