Loading...
Searching...
No Matches
ClpInterior.hpp
Go to the documentation of this file.
/* $Id$ */
// Copyright (C) 2003, International Business Machines
// Corporation and others. All Rights Reserved.
// This code is licensed under the terms of the Eclipse Public License (EPL).
/*
Authors
John Tomlin (pdco)
John Forrest (standard predictor-corrector)
Note JJF has added arrays - this takes more memory but makes
flow easier to understand and hopefully easier to extend
*/
#ifndef ClpInterior_H
#define ClpInterior_H
#include <iostream>
#include <cfloat>
#include "ClpModel.hpp"
#include "ClpMatrixBase.hpp"
#include "ClpSolve.hpp"
#include "CoinDenseVector.hpp"
class ClpLsqr;
class ClpPdcoBase;
typedef struct {
double atolmin;
double r3norm;
double LSdamp;
double *deltay;
} Info;
typedef struct {
double atolold;
double atolnew;
double r3ratio;
int istop;
int itncg;
} Outfo;
typedef struct {
double gamma;
double delta;
int MaxIter;
double FeaTol;
double OptTol;
double StepTol;
double x0min;
double z0min;
double mu0;
int LSmethod; // 1=Cholesky 2=QR 3=LSQR
int LSproblem; // See below
int LSQRMaxIter;
double LSQRatol1; // Initial atol
double LSQRatol2; // Smallest atol (unless atol1 is smaller)
double LSQRconlim;
int wait;
} Options;
class Lsqr;
class ClpCholeskyBase;
// ***** END
class ClpInterior : public ClpModel {
friend void ClpInteriorUnitTest(const std::string &mpsDir,
const std::string &netlibDir);
public:
ClpInterior();
ClpInterior(const ClpInterior &);
ClpInterior(const ClpModel &);
ClpInterior(const ClpModel *wholeModel,
int numberRows, const int *whichRows,
int numberColumns, const int *whichColumns,
bool dropNames = true, bool dropIntegers = true);
ClpInterior &operator=(const ClpInterior &rhs);
~ClpInterior();
// Ones below are just ClpModel with some changes
void loadProblem(const ClpMatrixBase &matrix,
const double *collb, const double *colub,
const double *obj,
const double *rowlb, const double *rowub,
const double *rowObjective = NULL);
void loadProblem(const CoinPackedMatrix &matrix,
const double *collb, const double *colub,
const double *obj,
const double *rowlb, const double *rowub,
const double *rowObjective = NULL);
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);
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);
int readMps(const char *filename,
bool keepNames = false,
bool ignoreErrors = false);
void borrowModel(ClpModel &otherModel);
void returnModel(ClpModel &otherModel);
int pdco();
// ** Temporary version
int pdco(ClpPdcoBase *stuff, Options &options, Info &info, Outfo &outfo);
int primalDual();
inline bool primalFeasible() const
{
return (sumPrimalInfeasibilities_ <= 1.0e-5);
}
inline bool dualFeasible() const
{
return (sumDualInfeasibilities_ <= 1.0e-5);
}
inline int algorithm() const
{
return algorithm_;
}
inline void setAlgorithm(int value)
{
algorithm_ = value;
}
inline CoinWorkDouble sumDualInfeasibilities() const
{
return sumDualInfeasibilities_;
}
inline CoinWorkDouble sumPrimalInfeasibilities() const
{
return sumPrimalInfeasibilities_;
}
inline CoinWorkDouble dualObjective() const
{
return dualObjective_;
}
inline CoinWorkDouble primalObjective() const
{
return primalObjective_;
}
inline CoinWorkDouble diagonalNorm() const
{
return diagonalNorm_;
}
inline CoinWorkDouble linearPerturbation() const
{
return linearPerturbation_;
}
inline void setLinearPerturbation(CoinWorkDouble value)
{
linearPerturbation_ = value;
}
inline CoinWorkDouble projectionTolerance() const
{
return projectionTolerance_;
}
inline void setProjectionTolerance(CoinWorkDouble value)
{
projectionTolerance_ = value;
}
inline CoinWorkDouble diagonalPerturbation() const
{
return diagonalPerturbation_;
}
inline void setDiagonalPerturbation(CoinWorkDouble value)
{
diagonalPerturbation_ = value;
}
inline CoinWorkDouble gamma() const
{
return gamma_;
}
inline void setGamma(CoinWorkDouble value)
{
gamma_ = value;
}
inline CoinWorkDouble delta() const
{
return delta_;
}
inline void setDelta(CoinWorkDouble value)
{
delta_ = value;
}
inline CoinWorkDouble complementarityGap() const
{
return complementarityGap_;
}
inline CoinWorkDouble largestPrimalError() const
{
return largestPrimalError_;
}
inline CoinWorkDouble largestDualError() const
{
return largestDualError_;
}
inline int maximumBarrierIterations() const
{
return maximumBarrierIterations_;
}
inline void setMaximumBarrierIterations(int value)
{
maximumBarrierIterations_ = value;
}
void setCholesky(ClpCholeskyBase *cholesky);
int numberFixed() const;
void fixFixed(bool reallyFix = true);
inline CoinWorkDouble *primalR() const
{
return primalR_;
}
inline CoinWorkDouble *dualR() const
{
return dualR_;
}
protected:
void gutsOfDelete();
void gutsOfCopy(const ClpInterior &rhs);
bool createWorkingData();
void deleteWorkingData();
bool sanityCheck();
int housekeeping();
public:
inline CoinWorkDouble rawObjectiveValue() const
{
return objectiveValue_;
}
inline int isColumn(int sequence) const
{
return sequence < numberColumns_ ? 1 : 0;
}
inline int sequenceWithin(int sequence) const
{
return sequence < numberColumns_ ? sequence : sequence - numberColumns_;
}
void checkSolution();
CoinWorkDouble quadraticDjs(CoinWorkDouble *djRegion, const CoinWorkDouble *solution,
CoinWorkDouble scaleFactor);
inline void setFixed(int sequence)
{
status_[sequence] = static_cast< unsigned char >(status_[sequence] | 1);
}
inline void clearFixed(int sequence)
{
status_[sequence] = static_cast< unsigned char >(status_[sequence] & ~1);
}
inline bool fixed(int sequence) const
{
return ((status_[sequence] & 1) != 0);
}
inline void setFlagged(int sequence)
{
status_[sequence] = static_cast< unsigned char >(status_[sequence] | 2);
}
inline void clearFlagged(int sequence)
{
status_[sequence] = static_cast< unsigned char >(status_[sequence] & ~2);
}
inline bool flagged(int sequence) const
{
return ((status_[sequence] & 2) != 0);
}
inline void setFixedOrFree(int sequence)
{
status_[sequence] = static_cast< unsigned char >(status_[sequence] | 4);
}
inline void clearFixedOrFree(int sequence)
{
status_[sequence] = static_cast< unsigned char >(status_[sequence] & ~4);
}
inline bool fixedOrFree(int sequence) const
{
return ((status_[sequence] & 4) != 0);
}
inline void setLowerBound(int sequence)
{
status_[sequence] = static_cast< unsigned char >(status_[sequence] | 8);
}
inline void clearLowerBound(int sequence)
{
status_[sequence] = static_cast< unsigned char >(status_[sequence] & ~8);
}
inline bool lowerBound(int sequence) const
{
return ((status_[sequence] & 8) != 0);
}
inline void setUpperBound(int sequence)
{
status_[sequence] = static_cast< unsigned char >(status_[sequence] | 16);
}
inline void clearUpperBound(int sequence)
{
status_[sequence] = static_cast< unsigned char >(status_[sequence] & ~16);
}
inline bool upperBound(int sequence) const
{
return ((status_[sequence] & 16) != 0);
}
inline void setFakeLower(int sequence)
{
status_[sequence] = static_cast< unsigned char >(status_[sequence] | 32);
}
inline void clearFakeLower(int sequence)
{
status_[sequence] = static_cast< unsigned char >(status_[sequence] & ~32);
}
inline bool fakeLower(int sequence) const
{
return ((status_[sequence] & 32) != 0);
}
inline void setFakeUpper(int sequence)
{
status_[sequence] = static_cast< unsigned char >(status_[sequence] | 64);
}
inline void clearFakeUpper(int sequence)
{
status_[sequence] = static_cast< unsigned char >(status_[sequence] & ~64);
}
inline bool fakeUpper(int sequence) const
{
return ((status_[sequence] & 64) != 0);
}
protected:
CoinWorkDouble largestPrimalError_;
CoinWorkDouble largestDualError_;
CoinWorkDouble sumDualInfeasibilities_;
CoinWorkDouble sumPrimalInfeasibilities_;
CoinWorkDouble worstComplementarity_;
public:
CoinWorkDouble xsize_;
CoinWorkDouble zsize_;
protected:
CoinWorkDouble *lower_;
CoinWorkDouble *rowLowerWork_;
CoinWorkDouble *columnLowerWork_;
CoinWorkDouble *upper_;
CoinWorkDouble *rowUpperWork_;
CoinWorkDouble *columnUpperWork_;
CoinWorkDouble *cost_;
public:
CoinWorkDouble *rhs_;
CoinWorkDouble *x_;
CoinWorkDouble *y_;
CoinWorkDouble *dj_;
protected:
ClpLsqr *lsqrObject_;
ClpPdcoBase *pdcoStuff_;
CoinWorkDouble mu_;
CoinWorkDouble objectiveNorm_;
CoinWorkDouble rhsNorm_;
CoinWorkDouble solutionNorm_;
CoinWorkDouble dualObjective_;
CoinWorkDouble primalObjective_;
CoinWorkDouble diagonalNorm_;
CoinWorkDouble stepLength_;
CoinWorkDouble linearPerturbation_;
CoinWorkDouble diagonalPerturbation_;
// gamma from Saunders and Tomlin regularized
CoinWorkDouble gamma_;
// delta from Saunders and Tomlin regularized
CoinWorkDouble delta_;
CoinWorkDouble targetGap_;
CoinWorkDouble projectionTolerance_;
CoinWorkDouble maximumRHSError_;
CoinWorkDouble maximumBoundInfeasibility_;
CoinWorkDouble maximumDualError_;
CoinWorkDouble diagonalScaleFactor_;
CoinWorkDouble scaleFactor_;
CoinWorkDouble actualPrimalStep_;
CoinWorkDouble actualDualStep_;
CoinWorkDouble smallestInfeasibility_;
#define LENGTH_HISTORY 5
CoinWorkDouble historyInfeasibility_[LENGTH_HISTORY];
CoinWorkDouble complementarityGap_;
CoinWorkDouble baseObjectiveNorm_;
CoinWorkDouble worstDirectionAccuracy_;
CoinWorkDouble maximumRHSChange_;
CoinWorkDouble *errorRegion_;
CoinWorkDouble *rhsFixRegion_;
CoinWorkDouble *upperSlack_;
CoinWorkDouble *lowerSlack_;
CoinWorkDouble *diagonal_;
CoinWorkDouble *solution_;
CoinWorkDouble *workArray_;
CoinWorkDouble *deltaX_;
CoinWorkDouble *deltaY_;
CoinWorkDouble *deltaZ_;
CoinWorkDouble *deltaW_;
CoinWorkDouble *deltaSU_;
CoinWorkDouble *deltaSL_;
CoinWorkDouble *primalR_;
CoinWorkDouble *dualR_;
CoinWorkDouble *rhsB_;
CoinWorkDouble *rhsU_;
CoinWorkDouble *rhsL_;
CoinWorkDouble *rhsZ_;
CoinWorkDouble *rhsW_;
CoinWorkDouble *rhsC_;
CoinWorkDouble *zVec_;
CoinWorkDouble *wVec_;
ClpCholeskyBase *cholesky_;
int numberComplementarityPairs_;
int numberComplementarityItems_;
int maximumBarrierIterations_;
bool gonePrimalFeasible_;
bool goneDualFeasible_;
int algorithm_;
};
//#############################################################################
void ClpInteriorUnitTest(const std::string &mpsDir,
const std::string &netlibDir);
#endif
/* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
*/
ClpInteriorUnitTest
void ClpInteriorUnitTest(const std::string &mpsDir, const std::string &netlibDir)
A function that tests the methods in the ClpInterior class.
LENGTH_HISTORY
#define LENGTH_HISTORY
historyInfeasibility.
Definition ClpInterior.hpp:536
ClpMatrixBase.hpp
ClpModel.hpp
ClpSolve.hpp
ClpCholeskyBase
Base class for Clp Cholesky factorization Will do better factorization.
Definition ClpCholeskyBase.hpp:53
ClpInterior::diagonalPerturbation_
CoinWorkDouble diagonalPerturbation_
diagonalPerturbation
Definition ClpInterior.hpp:510
ClpInterior::mu_
CoinWorkDouble mu_
Below here is standard barrier stuff mu.
Definition ClpInterior.hpp:492
ClpInterior::setDiagonalPerturbation
void setDiagonalPerturbation(CoinWorkDouble value)
Definition ClpInterior.hpp:231
ClpInterior::ClpInteriorUnitTest
friend void ClpInteriorUnitTest(const std::string &mpsDir, const std::string &netlibDir)
A function that tests the methods in the ClpInterior class.
ClpInterior::dualObjective
CoinWorkDouble dualObjective() const
dualObjective.
Definition ClpInterior.hpp:194
ClpInterior::goneDualFeasible_
bool goneDualFeasible_
goneDualFeasible.
Definition ClpInterior.hpp:602
ClpInterior::pdco
int pdco()
Pdco algorithm - see ClpPdco.hpp for method.
ClpInterior::setGamma
void setGamma(CoinWorkDouble value)
Definition ClpInterior.hpp:240
ClpInterior::deltaY_
CoinWorkDouble * deltaY_
delta Y
Definition ClpInterior.hpp:563
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::readMps
int readMps(const char *filename, bool keepNames=false, bool ignoreErrors=false)
Read an mps file from the given filename.
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::borrowModel
void borrowModel(ClpModel &otherModel)
Borrow model.
ClpInterior::primalR_
CoinWorkDouble * primalR_
Primal regularization array.
Definition ClpInterior.hpp:572
ClpInterior::zVec_
CoinWorkDouble * zVec_
zVec
Definition ClpInterior.hpp:588
ClpInterior::maximumRHSError_
CoinWorkDouble maximumRHSError_
maximumRHSError. maximum Ax
Definition ClpInterior.hpp:520
ClpInterior::projectionTolerance_
CoinWorkDouble projectionTolerance_
projectionTolerance
Definition ClpInterior.hpp:518
ClpInterior::largestDualError
CoinWorkDouble largestDualError() const
Largest error on basic duals.
Definition ClpInterior.hpp:268
ClpInterior::setMaximumBarrierIterations
void setMaximumBarrierIterations(int value)
Definition ClpInterior.hpp:277
ClpInterior::primalObjective_
CoinWorkDouble primalObjective_
primalObjective.
Definition ClpInterior.hpp:502
ClpInterior::setFixedOrFree
void setFixedOrFree(int sequence)
To say a variable is fixed OR free.
Definition ClpInterior.hpp:369
ClpInterior::complementarityGap_
CoinWorkDouble complementarityGap_
complementarityGap.
Definition ClpInterior.hpp:539
ClpInterior::sanityCheck
bool sanityCheck()
Sanity check on input rim data.
ClpInterior::fixed
bool fixed(int sequence) const
Definition ClpInterior.hpp:349
ClpInterior::diagonalPerturbation
CoinWorkDouble diagonalPerturbation() const
diagonalPerturbation
Definition ClpInterior.hpp:227
ClpInterior::rowUpperWork_
CoinWorkDouble * rowUpperWork_
Row upper bounds - working copy.
Definition ClpInterior.hpp:472
ClpInterior::diagonalScaleFactor_
CoinWorkDouble diagonalScaleFactor_
diagonalScaleFactor.
Definition ClpInterior.hpp:526
ClpInterior::largestPrimalError
CoinWorkDouble largestPrimalError() const
Largest error on Ax-b.
Definition ClpInterior.hpp:263
ClpInterior::targetGap_
CoinWorkDouble targetGap_
targetGap
Definition ClpInterior.hpp:516
ClpInterior::clearFakeUpper
void clearFakeUpper(int sequence)
Definition ClpInterior.hpp:429
ClpInterior::deltaX_
CoinWorkDouble * deltaX_
delta X
Definition ClpInterior.hpp:561
ClpInterior::y_
CoinWorkDouble * y_
Definition ClpInterior.hpp:482
ClpInterior::rawObjectiveValue
CoinWorkDouble rawObjectiveValue() const
Raw objective value (so always minimize).
Definition ClpInterior.hpp:319
ClpInterior::upperBound
bool upperBound(int sequence) const
Definition ClpInterior.hpp:405
ClpInterior::clearFixedOrFree
void clearFixedOrFree(int sequence)
Definition ClpInterior.hpp:373
ClpInterior::stepLength_
CoinWorkDouble stepLength_
stepLength
Definition ClpInterior.hpp:506
ClpInterior::columnLowerWork_
CoinWorkDouble * columnLowerWork_
Column lower bounds - working copy.
Definition ClpInterior.hpp:468
ClpInterior::numberFixed
int numberFixed() const
Return number fixed to see if worth presolving.
ClpInterior::~ClpInterior
~ClpInterior()
Destructor.
ClpInterior::setFlagged
void setFlagged(int sequence)
To flag a variable.
Definition ClpInterior.hpp:355
ClpInterior::createWorkingData
bool createWorkingData()
Returns true if data looks okay, false if not.
ClpInterior::lower_
CoinWorkDouble * lower_
Working copy of lower bounds (Owner of arrays below).
Definition ClpInterior.hpp:464
ClpInterior::flagged
bool flagged(int sequence) const
Definition ClpInterior.hpp:363
ClpInterior::gonePrimalFeasible_
bool gonePrimalFeasible_
gonePrimalFeasible.
Definition ClpInterior.hpp:600
ClpInterior::rhsB_
CoinWorkDouble * rhsB_
rhs B
Definition ClpInterior.hpp:576
ClpInterior::fixedOrFree
bool fixedOrFree(int sequence) const
Definition ClpInterior.hpp:377
ClpInterior::cholesky_
ClpCholeskyBase * cholesky_
cholesky.
Definition ClpInterior.hpp:592
ClpInterior::primalR
CoinWorkDouble * primalR() const
Primal erturbation vector.
Definition ClpInterior.hpp:289
ClpInterior::xsize_
CoinWorkDouble xsize_
Definition ClpInterior.hpp:459
ClpInterior::sumDualInfeasibilities
CoinWorkDouble sumDualInfeasibilities() const
Sum of dual infeasibilities.
Definition ClpInterior.hpp:184
ClpInterior::worstDirectionAccuracy_
CoinWorkDouble worstDirectionAccuracy_
worstDirectionAccuracy
Definition ClpInterior.hpp:543
ClpInterior::fixFixed
void fixFixed(bool reallyFix=true)
fix variables interior says should be.
ClpInterior::rhs_
CoinWorkDouble * rhs_
Rhs.
Definition ClpInterior.hpp:480
ClpInterior::maximumBarrierIterations_
int maximumBarrierIterations_
Maximum iterations.
Definition ClpInterior.hpp:598
ClpInterior::x_
CoinWorkDouble * x_
Definition ClpInterior.hpp:481
ClpInterior::errorRegion_
CoinWorkDouble * errorRegion_
errorRegion. i.e. Ax
Definition ClpInterior.hpp:547
ClpInterior::rhsL_
CoinWorkDouble * rhsL_
rhsL.
Definition ClpInterior.hpp:580
ClpInterior::sumPrimalInfeasibilities_
CoinWorkDouble sumPrimalInfeasibilities_
Sum of primal infeasibilities.
Definition ClpInterior.hpp:454
ClpInterior::rhsW_
CoinWorkDouble * rhsW_
rhsW.
Definition ClpInterior.hpp:584
ClpInterior::zsize_
CoinWorkDouble zsize_
Definition ClpInterior.hpp:460
ClpInterior::scaleFactor_
CoinWorkDouble scaleFactor_
scaleFactor. For scaling objective
Definition ClpInterior.hpp:528
ClpInterior::lowerSlack_
CoinWorkDouble * lowerSlack_
lowerSlack
Definition ClpInterior.hpp:553
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).
ClpInterior::rhsFixRegion_
CoinWorkDouble * rhsFixRegion_
rhsFixRegion.
Definition ClpInterior.hpp:549
ClpInterior::fakeLower
bool fakeLower(int sequence) const
Definition ClpInterior.hpp:419
ClpInterior::dualR
CoinWorkDouble * dualR() const
Dual erturbation vector.
Definition ClpInterior.hpp:294
ClpInterior::upper_
CoinWorkDouble * upper_
Working copy of upper bounds (Owner of arrays below).
Definition ClpInterior.hpp:470
ClpInterior::linearPerturbation_
CoinWorkDouble linearPerturbation_
linearPerturbation
Definition ClpInterior.hpp:508
ClpInterior::worstComplementarity_
CoinWorkDouble worstComplementarity_
Worst complementarity.
Definition ClpInterior.hpp:456
ClpInterior::lowerBound
bool lowerBound(int sequence) const
Definition ClpInterior.hpp:391
ClpInterior::gutsOfDelete
void gutsOfDelete()
Does most of deletion.
ClpInterior::ClpInterior
ClpInterior(const ClpModel &)
Copy constructor from model.
ClpInterior::setDelta
void setDelta(CoinWorkDouble value)
Definition ClpInterior.hpp:249
ClpInterior::diagonalNorm_
CoinWorkDouble diagonalNorm_
diagonalNorm.
Definition ClpInterior.hpp:504
ClpInterior::gutsOfCopy
void gutsOfCopy(const ClpInterior &rhs)
Does most of copying.
ClpInterior::clearUpperBound
void clearUpperBound(int sequence)
Definition ClpInterior.hpp:401
ClpInterior::actualDualStep_
CoinWorkDouble actualDualStep_
actualDualStep
Definition ClpInterior.hpp:532
ClpInterior::maximumBarrierIterations
int maximumBarrierIterations() const
Maximum iterations.
Definition ClpInterior.hpp:273
ClpInterior::cost_
CoinWorkDouble * cost_
Working copy of objective.
Definition ClpInterior.hpp:476
ClpInterior::sumDualInfeasibilities_
CoinWorkDouble sumDualInfeasibilities_
Sum of dual infeasibilities.
Definition ClpInterior.hpp:452
ClpInterior::upperSlack_
CoinWorkDouble * upperSlack_
upperSlack
Definition ClpInterior.hpp:551
ClpInterior::baseObjectiveNorm_
CoinWorkDouble baseObjectiveNorm_
baseObjectiveNorm
Definition ClpInterior.hpp:541
ClpInterior::primalFeasible
bool primalFeasible() const
If problem is primal feasible.
Definition ClpInterior.hpp:164
ClpInterior::setUpperBound
void setUpperBound(int sequence)
To say a variable has upper bound.
Definition ClpInterior.hpp:397
ClpInterior::solution_
CoinWorkDouble * solution_
solution
Definition ClpInterior.hpp:557
ClpInterior::columnUpperWork_
CoinWorkDouble * columnUpperWork_
Column upper bounds - working copy.
Definition ClpInterior.hpp:474
ClpInterior::deleteWorkingData
void deleteWorkingData()
ClpInterior::primalDual
int primalDual()
Primal-Dual Predictor-Corrector barrier.
ClpInterior::operator=
ClpInterior & operator=(const ClpInterior &rhs)
Assignment operator. This copies the data.
ClpInterior::historyInfeasibility_
CoinWorkDouble historyInfeasibility_[LENGTH_HISTORY]
Definition ClpInterior.hpp:537
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::rhsZ_
CoinWorkDouble * rhsZ_
rhsZ.
Definition ClpInterior.hpp:582
ClpInterior::diagonalNorm
CoinWorkDouble diagonalNorm() const
diagonalNorm
Definition ClpInterior.hpp:204
ClpInterior::dualR_
CoinWorkDouble * dualR_
Dual regularization array.
Definition ClpInterior.hpp:574
ClpInterior::clearFlagged
void clearFlagged(int sequence)
Definition ClpInterior.hpp:359
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::smallestInfeasibility_
CoinWorkDouble smallestInfeasibility_
smallestInfeasibility
Definition ClpInterior.hpp:534
ClpInterior::setLinearPerturbation
void setLinearPerturbation(CoinWorkDouble value)
Definition ClpInterior.hpp:213
ClpInterior::setProjectionTolerance
void setProjectionTolerance(CoinWorkDouble value)
Definition ClpInterior.hpp:222
ClpInterior::clearFakeLower
void clearFakeLower(int sequence)
Definition ClpInterior.hpp:415
ClpInterior::deltaSU_
CoinWorkDouble * deltaSU_
deltaS.
Definition ClpInterior.hpp:569
ClpInterior::rowLowerWork_
CoinWorkDouble * rowLowerWork_
Row lower bounds - working copy.
Definition ClpInterior.hpp:466
ClpInterior::algorithm
int algorithm() const
Current (or last) algorithm.
Definition ClpInterior.hpp:174
ClpInterior::numberComplementarityItems_
int numberComplementarityItems_
numberComplementarityItems_ i.e. number of active bounds
Definition ClpInterior.hpp:596
ClpInterior::lsqrObject_
ClpLsqr * lsqrObject_
Pointer to Lsqr object.
Definition ClpInterior.hpp:487
ClpInterior::maximumDualError_
CoinWorkDouble maximumDualError_
maximumDualError.
Definition ClpInterior.hpp:524
ClpInterior::projectionTolerance
CoinWorkDouble projectionTolerance() const
projectionTolerance
Definition ClpInterior.hpp:218
ClpInterior::primalObjective
CoinWorkDouble primalObjective() const
primalObjective.
Definition ClpInterior.hpp:199
ClpInterior::maximumBoundInfeasibility_
CoinWorkDouble maximumBoundInfeasibility_
maximumBoundInfeasibility.
Definition ClpInterior.hpp:522
ClpInterior::isColumn
int isColumn(int sequence) const
Returns 1 if sequence indicates column.
Definition ClpInterior.hpp:324
ClpInterior::setCholesky
void setCholesky(ClpCholeskyBase *cholesky)
Set cholesky (and delete present one).
ClpInterior::solutionNorm_
CoinWorkDouble solutionNorm_
solutionNorm.
Definition ClpInterior.hpp:498
ClpInterior::diagonal_
CoinWorkDouble * diagonal_
diagonal
Definition ClpInterior.hpp:555
ClpInterior::clearFixed
void clearFixed(int sequence)
Definition ClpInterior.hpp:345
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::housekeeping
int housekeeping()
This does housekeeping.
ClpInterior::workArray_
CoinWorkDouble * workArray_
work array
Definition ClpInterior.hpp:559
ClpInterior::linearPerturbation
CoinWorkDouble linearPerturbation() const
linearPerturbation
Definition ClpInterior.hpp:209
ClpInterior::rhsNorm_
CoinWorkDouble rhsNorm_
rhsNorm.
Definition ClpInterior.hpp:496
ClpInterior::numberComplementarityPairs_
int numberComplementarityPairs_
numberComplementarityPairs i.e. ones with lower and/or upper bounds (not fixed)
Definition ClpInterior.hpp:594
ClpInterior::gamma
CoinWorkDouble gamma() const
gamma
Definition ClpInterior.hpp:236
ClpInterior::quadraticDjs
CoinWorkDouble quadraticDjs(CoinWorkDouble *djRegion, const CoinWorkDouble *solution, CoinWorkDouble scaleFactor)
Modifies djs to allow for quadratic.
ClpInterior::largestDualError_
CoinWorkDouble largestDualError_
Largest error on basic duals.
Definition ClpInterior.hpp:450
ClpInterior::deltaSL_
CoinWorkDouble * deltaSL_
Definition ClpInterior.hpp:570
ClpInterior::objectiveNorm_
CoinWorkDouble objectiveNorm_
objectiveNorm.
Definition ClpInterior.hpp:494
ClpInterior::dualObjective_
CoinWorkDouble dualObjective_
dualObjective.
Definition ClpInterior.hpp:500
ClpInterior::dualFeasible
bool dualFeasible() const
If problem is dual feasible.
Definition ClpInterior.hpp:169
ClpInterior::deltaZ_
CoinWorkDouble * deltaZ_
deltaZ.
Definition ClpInterior.hpp:565
ClpInterior::returnModel
void returnModel(ClpModel &otherModel)
Return model - updates any scalars.
ClpInterior::ClpInterior
ClpInterior()
Default constructor.
ClpInterior::pdco
int pdco(ClpPdcoBase *stuff, Options &options, Info &info, Outfo &outfo)
ClpInterior::actualPrimalStep_
CoinWorkDouble actualPrimalStep_
actualPrimalStep
Definition ClpInterior.hpp:530
ClpInterior::gamma_
CoinWorkDouble gamma_
Definition ClpInterior.hpp:512
ClpInterior::rhsU_
CoinWorkDouble * rhsU_
rhsU.
Definition ClpInterior.hpp:578
ClpInterior::setAlgorithm
void setAlgorithm(int value)
Set algorithm.
Definition ClpInterior.hpp:179
ClpInterior::setLowerBound
void setLowerBound(int sequence)
To say a variable has lower bound.
Definition ClpInterior.hpp:383
ClpInterior::algorithm_
int algorithm_
Which algorithm being used.
Definition ClpInterior.hpp:604
ClpInterior::sequenceWithin
int sequenceWithin(int sequence) const
Returns sequence number within section.
Definition ClpInterior.hpp:329
ClpInterior::deltaW_
CoinWorkDouble * deltaW_
deltaW.
Definition ClpInterior.hpp:567
ClpInterior::fakeUpper
bool fakeUpper(int sequence) const
Definition ClpInterior.hpp:433
ClpInterior::wVec_
CoinWorkDouble * wVec_
wVec
Definition ClpInterior.hpp:590
ClpInterior::setFixed
void setFixed(int sequence)
To say a variable is fixed.
Definition ClpInterior.hpp:341
ClpInterior::delta
CoinWorkDouble delta() const
delta
Definition ClpInterior.hpp:245
ClpInterior::largestPrimalError_
CoinWorkDouble largestPrimalError_
Largest error on Ax-b.
Definition ClpInterior.hpp:448
ClpInterior::rhsC_
CoinWorkDouble * rhsC_
rhs C
Definition ClpInterior.hpp:586
ClpInterior::sumPrimalInfeasibilities
CoinWorkDouble sumPrimalInfeasibilities() const
Sum of primal infeasibilities.
Definition ClpInterior.hpp:189
ClpInterior::complementarityGap
CoinWorkDouble complementarityGap() const
ComplementarityGap.
Definition ClpInterior.hpp:254
ClpInterior::setFakeUpper
void setFakeUpper(int sequence)
To say a variable has fake upper bound.
Definition ClpInterior.hpp:425
ClpInterior::checkSolution
void checkSolution()
Checks solution.
ClpInterior::ClpInterior
ClpInterior(const ClpInterior &)
Copy constructor.
ClpInterior::clearLowerBound
void clearLowerBound(int sequence)
Definition ClpInterior.hpp:387
ClpInterior::pdcoStuff_
ClpPdcoBase * pdcoStuff_
Pointer to stuff.
Definition ClpInterior.hpp:489
ClpInterior::maximumRHSChange_
CoinWorkDouble maximumRHSChange_
maximumRHSChange
Definition ClpInterior.hpp:545
ClpInterior::delta_
CoinWorkDouble delta_
Definition ClpInterior.hpp:514
ClpLsqr
This class implements LSQR.
Definition ClpLsqr.hpp:75
ClpMatrixBase
Abstract base class for Clp Matrices.
Definition ClpMatrixBase.hpp:38
ClpModel::numberColumns_
int numberColumns_
Number of columns.
Definition ClpModel.hpp:1259
ClpModel::status_
unsigned char * status_
Status (i.e.
Definition ClpModel.hpp:1306
ClpModel::rowObjective
double * rowObjective() const
Row Objective.
Definition ClpModel.hpp:746
ClpModel::numberColumns
int numberColumns() const
Definition ClpModel.hpp:332
ClpModel::numberRows
int numberRows() const
Number of rows.
Definition ClpModel.hpp:319
ClpModel::matrix
CoinPackedMatrix * matrix() const
Matrix (if not ClpPackedmatrix be careful about memory leak.
Definition ClpModel.hpp:773
ClpModel::objectiveValue_
double objectiveValue_
Objective value.
Definition ClpModel.hpp:1249
ClpModel::ClpModel
ClpModel(bool emptyMessages=false)
Default constructor.
ClpModel::dropNames
void dropNames()
Drops names - makes lengthnames 0 and names empty.
ClpPdcoBase
Abstract base class for tailoring everything for Pcdo.
Definition ClpPdcoBase.hpp:25
Info
******** DATA to be moved into protected section of ClpInterior
Definition ClpInterior.hpp:27
Info::atolmin
double atolmin
Definition ClpInterior.hpp:28
Info::r3norm
double r3norm
Definition ClpInterior.hpp:29
Info::deltay
double * deltay
Definition ClpInterior.hpp:31
Info::LSdamp
double LSdamp
Definition ClpInterior.hpp:30
Options
******** DATA to be moved into protected section of ClpInterior
Definition ClpInterior.hpp:44
Options::MaxIter
int MaxIter
Definition ClpInterior.hpp:47
Options::z0min
double z0min
Definition ClpInterior.hpp:52
Options::LSmethod
int LSmethod
Definition ClpInterior.hpp:54
Options::LSQRatol2
double LSQRatol2
Definition ClpInterior.hpp:58
Options::wait
int wait
Definition ClpInterior.hpp:60
Options::FeaTol
double FeaTol
Definition ClpInterior.hpp:48
Options::x0min
double x0min
Definition ClpInterior.hpp:51
Options::mu0
double mu0
Definition ClpInterior.hpp:53
Options::OptTol
double OptTol
Definition ClpInterior.hpp:49
Options::gamma
double gamma
Definition ClpInterior.hpp:45
Options::StepTol
double StepTol
Definition ClpInterior.hpp:50
Options::LSproblem
int LSproblem
Definition ClpInterior.hpp:55
Options::LSQRconlim
double LSQRconlim
Definition ClpInterior.hpp:59
Options::LSQRMaxIter
int LSQRMaxIter
Definition ClpInterior.hpp:56
Options::delta
double delta
Definition ClpInterior.hpp:46
Options::LSQRatol1
double LSQRatol1
Definition ClpInterior.hpp:57
Outfo
******** DATA to be moved into protected section of ClpInterior
Definition ClpInterior.hpp:35
Outfo::itncg
int itncg
Definition ClpInterior.hpp:40
Outfo::r3ratio
double r3ratio
Definition ClpInterior.hpp:38
Outfo::istop
int istop
Definition ClpInterior.hpp:39
Outfo::atolold
double atolold
Definition ClpInterior.hpp:36
Outfo::atolnew
double atolnew
Definition ClpInterior.hpp:37