- Main Page
- Modules
- Namespaces
- Classes
- Files
- Related Pages

- File List
- File Members

# /home/coin/SVN-release/Alps-1.3.0/Clp/src/ClpPredictorCorrector.hpp

Go to the documentation of this file.

    00001 /* $Id: ClpPredictorCorrector.hpp 1665 2011-01-04 17:55:54Z lou $ */
    00002 // Copyright (C) 2003, International Business Machines
    00003 // Corporation and others.  All Rights Reserved.
    00004 // This code is licensed under the terms of the Eclipse Public License (EPL).
    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