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

- File List
- File Members

# /home/coin/SVN-release/Blis-0.91.2/Clp/src/ClpPredictorCorrector.hpp

Go to the documentation of this file.

    00001 /* $Id: ClpPredictorCorrector.hpp 1458 2009-11-05 12:34:07Z forrest $ */
    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