00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef ClpPredictorCorrector_H
00011 #define ClpPredictorCorrector_H
00012
00013 #include "ClpInterior.hpp"
00014
00024 class ClpPredictorCorrector : public ClpInterior {
00025
00026 public:
00027
00037 int solve();
00039
00042
00043
00044
00045
00046 double findStepLength( int phase);
00048 double findDirectionVector(const int phase);
00050 int createSolution();
00052
00053 double complementarityGap(int & numberComplementarityPairs,int & numberComplementarityItems,
00054 const int phase);
00056
00057 void setupForSolve(const int phase);
00059 void solveSystem(double * region1, double * region2,
00060 const double * region1In, const double * region2In,
00061 const double * saveRegion1, const double * saveRegion2,
00062 bool gentleRefine);
00064 bool checkGoodMove(const bool doCorrector,double & bestNextGap,
00065 bool allowIncreasingGap);
00067 bool checkGoodMove2(double move,double & bestNextGap,
00068 bool allowIncreasingGap);
00070
00071 int updateSolution(double nextGap);
00073 double affineProduct();
00075 void debugMove(int phase,double primalStep, double dualStep);
00077
00078 };
00079 #endif