/home/coin/SVN-release/Cbc-2.0.0/Cbc/src/CbcHeuristicFPump.hpp

Go to the documentation of this file.
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   CbcHeuristicFPump & operator=(const CbcHeuristicFPump& rhs);
00030   virtual CbcHeuristic * clone() const;
00032   virtual void generateCpp( FILE * fp) ;
00033 
00035   virtual void resetModel(CbcModel * model);
00036 
00038   virtual void setModel(CbcModel * model);
00039   
00040   using CbcHeuristic::solution ;
00056   virtual int solution(double & objectiveValue,
00057                        double * newSolution);
00058 
00060   void setMaximumTime(double value);
00062   inline double maximumTime() const
00063   { return maximumTime_;}
00065   inline void setFakeCutoff(double value)
00066   { fakeCutoff_ = value;}
00068   inline double fakeCutoff() const
00069   { return fakeCutoff_;}
00071   inline void setAbsoluteIncrement(double value)
00072   { absoluteIncrement_ = value;}
00074   inline double absoluteIncrement() const
00075   { return absoluteIncrement_;}
00077   inline void setRelativeIncrement(double value)
00078   { relativeIncrement_ = value;}
00080   inline double relativeIncrement() const
00081   { return relativeIncrement_;}
00083   inline void setDefaultRounding(double value)
00084   { defaultRounding_ = value;}
00086   inline double defaultRounding() const
00087   { return defaultRounding_;}
00089   inline void setInitialWeight(double value)
00090   { initialWeight_ = value;}
00092   inline double initialWeight() const
00093   { return initialWeight_;}
00095   inline void setWeightFactor(double value)
00096   { weightFactor_ = value;}
00098   inline double weightFactor() const
00099   { return weightFactor_;}
00101   inline void setMaximumPasses(int value)
00102   { maximumPasses_=value;}
00104   inline int maximumPasses() const
00105   { return maximumPasses_;}
00107   inline void setMaximumRetries(int value)
00108   { maximumRetries_=value;}
00110   inline int maximumRetries() const
00111   { return maximumRetries_;}
00118   inline void setAccumulate(int value)
00119   { accumulate_=value;}
00121   inline int accumulate() const
00122   { return accumulate_;}
00128   inline void setFixOnReducedCosts(int value)
00129   { fixOnReducedCosts_=value;}
00131   inline int fixOnReducedCosts() const
00132   { return fixOnReducedCosts_;}
00133 
00134 protected:
00135   // Data
00137   double startTime_;
00139   double maximumTime_;
00143   double fakeCutoff_;
00145   double absoluteIncrement_;
00147   double relativeIncrement_;
00149   double defaultRounding_;
00151   double initialWeight_;
00153   double weightFactor_;
00155   int maximumPasses_;
00159   int maximumRetries_;
00167   int accumulate_;
00173   int fixOnReducedCosts_;
00175   bool roundExpensive_;
00176 
00177 private:
00182   int rounds(OsiSolverInterface * solver,double * solution, const double * objective, 
00183              int numberIntegers, const int * integerVariable,
00184              char * pumpPrint,int & passNumber,
00185              bool roundExpensive=false,
00186              double downValue=0.5, int *flip=0);
00187   /* note for eagle eyed readers.
00188      when_ can now be exotic -
00189      <=10 normal
00190   */
00191 };
00192 
00193 
00194 #endif

Generated on Thu May 15 22:07:39 2008 by  doxygen 1.4.7