Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef ClpPredictorCorrector_H
00012 #define ClpPredictorCorrector_H
00013
00014 #include "ClpInterior.hpp"
00015
00037 class ClpPredictorCorrector : public ClpInterior {
00038
00039 public:
00040
00050 int solve();
00052
00055
00056
00057
00058
00059 CoinWorkDouble findStepLength( int phase);
00061 CoinWorkDouble findDirectionVector(const int phase);
00063 int createSolution();
00065
00066 CoinWorkDouble complementarityGap(int & numberComplementarityPairs, int & numberComplementarityItems,
00067 const int phase);
00069
00070 void setupForSolve(const int phase);
00072 void solveSystem(CoinWorkDouble * region1, CoinWorkDouble * region2,
00073 const CoinWorkDouble * region1In, const CoinWorkDouble * region2In,
00074 const CoinWorkDouble * saveRegion1, const CoinWorkDouble * saveRegion2,
00075 bool gentleRefine);
00077 bool checkGoodMove(const bool doCorrector, CoinWorkDouble & bestNextGap,
00078 bool allowIncreasingGap);
00080 bool checkGoodMove2(CoinWorkDouble move, CoinWorkDouble & bestNextGap,
00081 bool allowIncreasingGap);
00083
00084 int updateSolution(CoinWorkDouble nextGap);
00086 CoinWorkDouble affineProduct();
00088 void debugMove(int phase, CoinWorkDouble primalStep, CoinWorkDouble dualStep);
00090
00091 };
00092 #endif