ClpPredictorCorrector.hpp
Go to the documentation of this file.
1 /* $Id: ClpPredictorCorrector.hpp 1525 2010-02-26 17:27:59Z mjs $ */
2 // Copyright (C) 2003, International Business Machines
3 // Corporation and others. All Rights Reserved.
4 
5 /*
6  Authors
7 
8  John Forrest
9 
10  */
11 #ifndef ClpPredictorCorrector_H
12 #define ClpPredictorCorrector_H
13 
14 #include "ClpInterior.hpp"
15 
38 
39 public:
40 
50  int solve();
52 
55  //phase - 0 predictor
57  // 1 corrector
58  // 2 primal dual
59  CoinWorkDouble findStepLength( int phase);
61  CoinWorkDouble findDirectionVector(const int phase);
63  int createSolution();
65  //phase 0=as is , 1 = after predictor , 2 after corrector
66  CoinWorkDouble complementarityGap(int & numberComplementarityPairs, int & numberComplementarityItems,
67  const int phase);
69  //phase 0=affine , 1 = corrector , 2 = primal-dual
70  void setupForSolve(const int phase);
72  void solveSystem(CoinWorkDouble * region1, CoinWorkDouble * region2,
73  const CoinWorkDouble * region1In, const CoinWorkDouble * region2In,
74  const CoinWorkDouble * saveRegion1, const CoinWorkDouble * saveRegion2,
75  bool gentleRefine);
77  bool checkGoodMove(const bool doCorrector, CoinWorkDouble & bestNextGap,
78  bool allowIncreasingGap);
80  bool checkGoodMove2(CoinWorkDouble move, CoinWorkDouble & bestNextGap,
81  bool allowIncreasingGap);
83  //returns number fixed
84  int updateSolution(CoinWorkDouble nextGap);
86  CoinWorkDouble affineProduct();
88  void debugMove(int phase, CoinWorkDouble primalStep, CoinWorkDouble dualStep);
90 
91 };
92 #endif