Go to the documentation of this file.
11 #ifndef ClpSimplexOther_H
12 #define ClpSimplexOther_H
50 double * costIncrease,
int * sequenceIncrease,
51 double * costDecrease,
int * sequenceDecrease,
52 double * valueIncrease = NULL,
double * valueDecrease = NULL);
68 double * valueIncrease,
int * sequenceIncrease,
69 double * valueDecrease,
int * sequenceDecrease);
83 int parametrics(
double startingTheta,
double & endingTheta,
double reportIncrement,
84 const double * changeLowerBound,
const double * changeUpperBound,
85 const double * changeLowerRhs,
const double * changeUpperRhs,
86 const double * changeObjective);
101 const double * changeLowerBound,
const double * changeUpperBound,
102 const double * changeLowerRhs,
const double * changeUpperRhs);
104 const double * changeObjective);
137 int parametricsLoop(
parametricsData & paramData,
double reportIncrement,
138 const double * changeLower,
const double * changeUpper,
139 const double * changeObjective,
ClpDataSave & data,
142 ClpDataSave & data,
bool canSkipFactorization=
false);
144 ClpDataSave & data,
bool canSkipFactorization=
false);
164 int whileIterating(
parametricsData & paramData,
double reportIncrement,
165 const double * changeObjective);
171 const double * changeObjective);
175 void originalBound(
int iSequence,
double theta,
const double * changeLower,
176 const double * changeUpper);
180 void redoInternalArrays();
186 void checkDualRatios(CoinIndexedVector *
rowArray,
188 double & costIncrease,
int & sequenceIncrease,
double & alphaIncrease,
189 double & costDecrease,
int & sequenceDecrease,
double & alphaDecrease);
194 void checkPrimalRatios(CoinIndexedVector *
rowArray,
197 double primalRanging1(
int whichIn,
int whichOther);
215 bool writeValues =
false,
216 int formatType = 0)
const;
229 bool checkAccuracy=
false);
238 int & nBound,
bool moreBounds =
false,
bool tightenBounds =
false);
243 const int * whichRows,
const int * whichColumns,
253 const int * whichColumns);
256 const int * whichColumns)
const;
273 double * buildObj, CoinBigIndex * buildStart,
274 int * buildRow,
double * buildElement,
int reConstruct = -1)
const;
This solves LPs using the simplex method.
double theta() const
Theta (pivot change)
CoinIndexedVector * rowArray(int index) const
Useful row length arrays (0,1,2,3,4,5)
int parametrics(double startingTheta, double &endingTheta, const double *changeLowerBound, const double *changeUpperBound, const double *changeLowerRhs, const double *changeUpperRhs)
Parametrics This is an initial slow version.
CoinIndexedVector * columnArray(int index) const
Useful column length arrays (0,1,2,3,4,5)
This is a tiny class where data can be saved round calls.
void primalRanging(int numberCheck, const int *which, double *valueIncrease, int *sequenceIncrease, double *valueDecrease, int *sequenceDecrease)
Primal ranging.
double * lowerCoefficient
void afterCrunch(const ClpSimplex &small, const int *whichRows, const int *whichColumns, int nBound)
After very cursory presolve.
int unscaledChangesOffset
void setGubBasis(ClpSimplex &original, const int *whichRows, const int *whichColumns)
Sets basis from original.
void dualRanging(int numberCheck, const int *which, double *costIncrease, int *sequenceIncrease, double *costDecrease, int *sequenceDecrease, double *valueIncrease=NULL, double *valueDecrease=NULL)
Dual ranging.
double bestPivot(bool justColumns=false)
Finds best possible pivot.
int setInDual(ClpSimplex *dualProblem)
Sets solution in dualized problem non-zero return code indicates minor problems.
int expandKnapsack(int knapsackRow, int &numberOutput, double *buildObj, CoinBigIndex *buildStart, int *buildRow, double *buildElement, int reConstruct=-1) const
Expands out all possible combinations for a knapsack If buildObj NULL then just computes space needed...
void cleanupAfterPostsolve()
Quick try at cleaning up duals if postsolve gets wrong.
double acceptableMaxTheta
This is for Simplex stuff which is neither dual nor primal.
ClpSimplex * crunch(double *rhs, int *whichRows, int *whichColumns, int &nBound, bool moreBounds=false, bool tightenBounds=false)
Does very cursory presolve.
int factorizationFrequency() const
Factorization frequency.
int parametrics(double startingTheta, double &endingTheta, double reportIncrement, const double *changeLowerBound, const double *changeUpperBound, const double *changeLowerRhs, const double *changeUpperRhs, const double *changeObjective)
Parametrics This is an initial slow version.
int parametricsObj(double startingTheta, double &endingTheta, const double *changeObjective)
int restoreFromDual(const ClpSimplex *dualProblem, bool checkAccuracy=false)
Restores solution from dualized problem non-zero return code indicates minor problems.
void getGubBasis(ClpSimplex &original, const int *whichRows, const int *whichColumns) const
Restores basis to original.
int parametrics(const char *dataFile)
Version of parametrics which reads from file See CbcClpParam.cpp for details of format Returns -2 if ...
ClpDataSave saveData()
Save data.
ClpSimplex * gubVersion(int *whichRows, int *whichColumns, int neededGub, int factorizationFrequency=50)
Returns gub version of model or NULL whichRows has to be numberRows whichColumns has to be numberRows...
int tightenIntegerBounds(double *rhsSpace)
Tightens integer bounds - returns number tightened or -1 if infeasible.
double * upperCoefficient
ClpSimplex * dualOfModel(double fractionRowRanges=1.0, double fractionColumnRanges=1.0) const
Creates dual of a problem if looks plausible (defaults will always create model) fractionRowRanges is...
int writeBasis(const char *filename, bool writeValues=false, int formatType=0) const
Write the basis in MPS format to the specified file.
int readBasis(const char *filename)
Read a basis from the given filename.