Go to the documentation of this file.
11 #ifndef ClpPredictorCorrector_H
12 #define ClpPredictorCorrector_H
65 CoinWorkDouble
complementarityGap(
int &numberComplementarityPairs,
int &numberComplementarityItems,
71 void solveSystem(CoinWorkDouble *region1, CoinWorkDouble *region2,
72 const CoinWorkDouble *region1In,
const CoinWorkDouble *region2In,
73 const CoinWorkDouble *saveRegion1,
const CoinWorkDouble *saveRegion2,
76 bool checkGoodMove(
const bool doCorrector, CoinWorkDouble &bestNextGap,
77 bool allowIncreasingGap);
79 bool checkGoodMove2(CoinWorkDouble move, CoinWorkDouble &bestNextGap,
80 bool allowIncreasingGap);
87 void debugMove(
int phase, CoinWorkDouble primalStep, CoinWorkDouble dualStep);
CoinWorkDouble findStepLength(int phase)
findStepLength.
void solveSystem(CoinWorkDouble *region1, CoinWorkDouble *region2, const CoinWorkDouble *region1In, const CoinWorkDouble *region2In, const CoinWorkDouble *saveRegion1, const CoinWorkDouble *saveRegion2, bool gentleRefine)
Does solve.
int createSolution()
createSolution. Creates solution from scratch (- code if no memory)
CoinWorkDouble complementarityGap() const
ComplementarityGap.
int updateSolution(CoinWorkDouble nextGap)
updateSolution. Updates solution at end of iteration
void debugMove(int phase, CoinWorkDouble primalStep, CoinWorkDouble dualStep)
See exactly what would happen given current deltas.
This solves LPs using interior point methods.
bool checkGoodMove2(CoinWorkDouble move, CoinWorkDouble &bestNextGap, bool allowIncreasingGap)
: checks for one step size
void setupForSolve(const int phase)
setupForSolve.
This solves LPs using the predictor-corrector method due to Mehrotra.
bool checkGoodMove(const bool doCorrector, CoinWorkDouble &bestNextGap, bool allowIncreasingGap)
sees if looks plausible change in complementarity
int solve()
Primal Dual Predictor Corrector algorithm.
CoinWorkDouble affineProduct()
Save info on products of affine deltaT*deltaW and deltaS*deltaZ.
CoinWorkDouble findDirectionVector(const int phase)
findDirectionVector.