/build/buildd/clp-1.12.0/Clp/src/ClpPredictorCorrector.hpp
Go to the documentation of this file.
00001 /* $Id: ClpPredictorCorrector.hpp 1525 2010-02-26 17:27:59Z mjs $ */
00002 // Copyright (C) 2003, International Business Machines
00003 // Corporation and others.  All Rights Reserved.
00004 
00005 /*
00006    Authors
00007 
00008    John Forrest
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      //phase  - 0 predictor
00057      //         1 corrector
00058      //         2 primal dual
00059      CoinWorkDouble findStepLength( int phase);
00061      CoinWorkDouble findDirectionVector(const int phase);
00063      int createSolution();
00065      //phase 0=as is , 1 = after predictor , 2 after corrector
00066      CoinWorkDouble complementarityGap(int & numberComplementarityPairs, int & numberComplementarityItems,
00067                                        const int phase);
00069      //phase 0=affine , 1 = corrector , 2 = primal-dual
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      //returns number fixed
00084      int updateSolution(CoinWorkDouble nextGap);
00086      CoinWorkDouble affineProduct();
00088      void debugMove(int phase, CoinWorkDouble primalStep, CoinWorkDouble dualStep);
00090 
00091 };
00092 #endif