Go to the documentation of this file.
12 #ifndef ClpPESimplex_H
13 #define ClpPESimplex_H
61 assert(row >= 0 && row < numberRows_);
93 void printPrimalDegenerates();
96 void printCompatibleCols();
114 inline void stopTimer() { timeCompatibility_ += CoinCpuTime() - timeTmp_; }
144 return doStatistics_;
148 doStatistics_ = value;
181 double epsDegeneracy_;
182 double epsCompatibility_;
200 int coPrimalDegeneratesAvg_;
201 int coDualDegeneratesAvg_;
202 int coCompatibleColsAvg_;
203 int coCompatibleRowsAvg_;
204 int coUpdateDegenerates_;
205 int coIdentifyCompatibles_;
206 int coDegeneratePivots_;
207 int coCompatiblePivots_;
208 int coDegenerateCompatiblePivots_;
209 int coDegeneratePivotsConsecutive_;
212 int coPriorityPivots_;
217 double lastObjectiveValue_;
218 bool isLastPivotCompatible_;
222 double timeCompatibility_;
223 double timeMultRandom_;
224 double timeLinearSystem_;
This solves LPs using the simplex method.
int coCompatibleRows_
Table of booleans indicating whether each constraint is dual compatible (true) or not (false)
int coCompatibleCols_
Table of booleans indicating whether each variable is primal compatible (true) or not (false)
double timeLinearSystem()
double timeCompatibility()
void printTimer(std::ostream &out)
void identifyCompatibleCols(int number, const int *which, CoinIndexedVector *spareRow2, CoinIndexedVector *wPrimal)
Identify the primal compatible columns The input argument is a temporary array that is needed for the...
bool isCompatibleCol(int sequence)
void addDegeneratePivot()
Update and return the number of degenerate pivots and variables.
bool isLastPivotCompatible()
void setDoStatistics(int value)
double coCompatibleRowsAvg()
int coDegeneratePivotsConsecutive()
double coCompatibleColsAvg()
double dualTolerance() const
Dual tolerance to use.
void updateDualDegeneratesAvg(int coPivots)
void isLastPivotCompatible(bool yesOrNo)
void updateCompatibleRowsAvg(int coPivots)
int coDualDegenerates_
Indices of the non basic variables with a zero reduced cost during the last update (ndual-degenerate ...
void updatePrimalDegeneratesAvg(int coPivots)
void identifyCompatibleRows(CoinIndexedVector *spare, CoinIndexedVector *wDual)
Identify the dual compatible rows.
bool checkCompatibilityRow(int pivotRow)
DEBUG AND DISPLAY METHODS.
int coDegenerateCompatiblePivots()
double coDualDegeneratesAvg()
BASE CLASS FOR THE IMPROVED SIMPLEX.
bool isCompatibleRow(int row)
void addDegenerateCompatiblePivot()
double PEdot(CoinIndexedVector &v1, const double *v2)
SHARED METHODS FOR USEFUL ALGEBRAIC OPERATIONS.
void updatePrimalDegenerates()
PUBLIC METHODS RELATED TO COMPATIBILITY.
void addDegeneratePivotConsecutive()
void updateLastObjectiveValue()
void PEtransposeTimesSubsetAll(ClpSimplex *model, int number, const int *which, const double *COIN_RESTRICT x, double *COIN_RESTRICT y, const double *COIN_RESTRICT rowScale, const double *COIN_RESTRICT columnScale)
compute the product x^T*[A I] for the indices "which" of [A I]
double objectiveValue() const
Objective value.
double * compatibilityCol_
double * compatibilityRow_
double lastObjectiveValue()
Tracking the degenerate iterations after compatible pivots.
void resetDegeneratePivotsConsecutive()
ClpPESimplex(ClpSimplex *model)
Constructor.
void startTimer()
Start and stop the timer, and print the total recorded time.
void updateDualDegenerates()
Updates the set of dual degenerate variables.
~ClpPESimplex()
Destructor.
int coPrimalDegenerates()
BASIC GET METHODS.
double coPrimalDegeneratesAvg()
bool * isPrimalDegenerate_
void updateCompatibleColsAvg(int coPivots)
int coPrimalDegenerates_
Indices of the variables that were not at one of their bounds during the last update (non primal dege...
void updateCompatibleRows(int sequence)
Update the dual compatible rows.
void addCompatiblePivot()