Go to the documentation of this file.
12 #ifndef ClpPESimplex_H
13 #define ClpPESimplex_H
16 #include "CoinIndexedVector.hpp"
18 #include "CoinTime.hpp"
28 double PEdot(CoinIndexedVector &v1,
const double *v2);
32 double PEdot(CoinIndexedVector &v1, CoinIndexedVector &v2);
79 CoinIndexedVector *spareRow2,
80 CoinIndexedVector *wPrimal);
84 CoinIndexedVector *wDual);
93 void printPrimalDegenerates();
96 void printCompatibleCols();
99 bool checkCompatibilityCol(
int sequence, CoinIndexedVector *spareRow2);
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()
ClpSimplex * model_
pointer to the original model that shall be solved
int coDegeneratePivotsConsecutive()
double coCompatibleColsAvg()
int coDualDegeneratesAvg_
double dualTolerance() const
Dual tolerance to use.
double timeCompatibility_
Timer attribute recording the additional time spent in identifying compatible variables.
void updateDualDegeneratesAvg(int coPivots)
int coDegenerateCompatiblePivots_
bool isLastPivotCompatible_
void isLastPivotCompatible(bool yesOrNo)
double epsDegeneracy_
tolerance used for the tests of degeneracy and compatibility (resp.)
void updateCompatibleRowsAvg(int coPivots)
int coDualDegenerates_
Indices of the non basic variables with a zero reduced cost during the last update (ndual-degenerate ...
int doStatistics_
Do statistics.
void updatePrimalDegeneratesAvg(int coPivots)
void identifyCompatibleRows(CoinIndexedVector *spare, CoinIndexedVector *wDual)
Identify the dual compatible rows.
bool checkCompatibilityRow(int pivotRow)
DEBUG AND DISPLAY METHODS.
double * tempRandom_
w vectors that are used to identify the compatible columns and rows.
int coDegenerateCompatiblePivots()
double coDualDegeneratesAvg()
BASE CLASS FOR THE IMPROVED SIMPLEX.
bool isCompatibleRow(int row)
int coDegeneratePivotsConsecutive_
void addDegenerateCompatiblePivot()
double lastObjectiveValue_
tracking the degenerate iterations after compatible pivots
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 coPriorityPivots_
number of compatible pivots that were done because of the priority factor
int coPrimalDegenerates_
Indices of the variables that were not at one of their bounds during the last update (non primal dege...
int coPrimalDegeneratesAvg_
number of degenerate pivots and variables
void updateCompatibleRows(int sequence)
Update the dual compatible rows.
int numberRows_
size of the original model
void addCompatiblePivot()