00001 // Copyright (C) 2004, International Business Machines 00002 // Corporation and others. All Rights Reserved. 00003 #ifndef CbcHeuristicFeasibilityPump_H 00004 #define CbcHeuristicFeasibilityPump_H 00005 00006 #include "CbcHeuristic.hpp" 00007 00011 class CbcHeuristicFPump : public CbcHeuristic { 00012 public: 00013 00014 // Default Constructor 00015 CbcHeuristicFPump (); 00016 00017 // Constructor with model - assumed before cuts 00018 CbcHeuristicFPump (CbcModel & model, 00019 double downValue=0.5,bool roundExpensive=false); 00020 00021 // Copy constructor 00022 CbcHeuristicFPump ( const CbcHeuristicFPump &); 00023 00024 // Destructor 00025 ~CbcHeuristicFPump (); 00026 00028 virtual CbcHeuristic * clone() const; 00030 virtual void generateCpp( FILE * fp) ; 00031 00033 virtual void resetModel(CbcModel * model); 00034 00036 virtual void setModel(CbcModel * model); 00037 00046 virtual int solution(double & objectiveValue, 00047 double * newSolution); 00048 00050 inline void setMaximumPasses(int value) 00051 { maximumPasses_=value;}; 00053 inline int maximumPasses() const 00054 { return maximumPasses_;}; 00056 void setMaximumTime(double value); 00058 inline double maximumTime() const 00059 { return maximumTime_;}; 00060 00061 protected: 00062 // Data 00064 double startTime_; 00066 double maximumTime_; 00068 int maximumPasses_; 00070 double downValue_; 00072 bool roundExpensive_; 00073 00074 private: 00076 CbcHeuristicFPump & operator=(const CbcHeuristicFPump& rhs); 00081 int rounds(double * solution, const double * objective, 00082 bool roundExpensive=false, 00083 double downValue=0.5, int *flip=0); 00084 }; 00085 00086 00087 #endif