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

Go to the documentation of this file.
00001 /* $Id: CbcHeuristicFPump.hpp 1271 2009-11-05 15:57:25Z forrest $ */
00002 // Copyright (C) 2004, International Business Machines
00003 // Corporation and others.  All Rights Reserved.
00004 #ifndef CbcHeuristicFeasibilityPump_H
00005 #define CbcHeuristicFeasibilityPump_H
00006 
00007 #include "CbcHeuristic.hpp"
00008 #include "OsiClpSolverInterface.hpp"
00009 
00013 class CbcHeuristicFPump : public CbcHeuristic {
00014 public:
00015 
00016   // Default Constructor 
00017   CbcHeuristicFPump ();
00018 
00019   // Constructor with model - assumed before cuts
00020   CbcHeuristicFPump (CbcModel & model,
00021                      double downValue=0.5,bool roundExpensive=false);
00022   
00023   // Copy constructor 
00024   CbcHeuristicFPump ( const CbcHeuristicFPump &);
00025    
00026   // Destructor 
00027   ~CbcHeuristicFPump ();
00028   
00030   CbcHeuristicFPump & operator=(const CbcHeuristicFPump& rhs);
00032   virtual CbcHeuristic * clone() const;
00034   virtual void generateCpp( FILE * fp) ;
00035 
00037   virtual void resetModel(CbcModel * model);
00038 
00040   virtual void setModel(CbcModel * model);
00041   
00042   using CbcHeuristic::solution ;
00058   virtual int solution(double & objectiveValue,
00059                        double * newSolution);
00060 
00062   void setMaximumTime(double value);
00064   inline double maximumTime() const
00065   { return maximumTime_;}
00067   inline void setFakeCutoff(double value)
00068   { fakeCutoff_ = value;}
00070   inline double fakeCutoff() const
00071   { return fakeCutoff_;}
00073   inline void setAbsoluteIncrement(double value)
00074   { absoluteIncrement_ = value;}
00076   inline double absoluteIncrement() const
00077   { return absoluteIncrement_;}
00079   inline void setRelativeIncrement(double value)
00080   { relativeIncrement_ = value;}
00082   inline double relativeIncrement() const
00083   { return relativeIncrement_;}
00085   inline void setDefaultRounding(double value)
00086   { defaultRounding_ = value;}
00088   inline double defaultRounding() const
00089   { return defaultRounding_;}
00091   inline void setInitialWeight(double value)
00092   { initialWeight_ = value;}
00094   inline double initialWeight() const
00095   { return initialWeight_;}
00097   inline void setWeightFactor(double value)
00098   { weightFactor_ = value;}
00100   inline double weightFactor() const
00101   { return weightFactor_;}
00103   inline void setArtificialCost(double value)
00104   { artificialCost_ = value;}
00106   inline double artificialCost() const
00107   { return artificialCost_;}
00109   inline double iterationRatio() const
00110   { return iterationRatio_;}
00112   inline void setIterationRatio(double value)
00113   { iterationRatio_ = value;}
00115   inline void setMaximumPasses(int value)
00116   { maximumPasses_=value;}
00118   inline int maximumPasses() const
00119   { return maximumPasses_;}
00121   inline void setMaximumRetries(int value)
00122   { maximumRetries_=value;}
00124   inline int maximumRetries() const
00125   { return maximumRetries_;}
00134   inline void setAccumulate(int value)
00135   { accumulate_=value;}
00137   inline int accumulate() const
00138   { return accumulate_;}
00144   inline void setFixOnReducedCosts(int value)
00145   { fixOnReducedCosts_=value;}
00147   inline int fixOnReducedCosts() const
00148   { return fixOnReducedCosts_;}
00153   inline void setReducedCostMultiplier(double value)
00154   { reducedCostMultiplier_=value;}
00156   inline double reducedCostMultiplier() const
00157   { return reducedCostMultiplier_;}
00158 
00159 protected:
00160   // Data
00162   double startTime_;
00164   double maximumTime_;
00168   double fakeCutoff_;
00170   double absoluteIncrement_;
00172   double relativeIncrement_;
00174   double defaultRounding_;
00176   double initialWeight_;
00178   double weightFactor_;
00180   double artificialCost_;
00183   double iterationRatio_;
00188   double reducedCostMultiplier_;
00190   int maximumPasses_;
00194   int maximumRetries_;
00205   int accumulate_;
00211   int fixOnReducedCosts_;
00213   bool roundExpensive_;
00214 
00215 private:
00220   int rounds(OsiSolverInterface * solver,double * solution, 
00221              /*const double * objective, */
00222              int numberIntegers, const int * integerVariable,
00223              /*char * pumpPrint,*/int passNumber,
00224              /*bool roundExpensive=false,*/
00225              double downValue=0.5, int *flip=0);
00226   /* note for eagle eyed readers.
00227      when_ can now be exotic -
00228      <=10 normal
00229   */
00230 };
00231 
00232 # ifdef COIN_HAS_CLP
00233   
00234 class CbcDisasterHandler : public OsiClpDisasterHandler {
00235 public:
00239 #if 0
00241   virtual void intoSimplex();
00243   virtual bool check() const ;
00245   virtual void saveInfo();
00246 #endif
00248   virtual int typeOfDisaster();
00249 
00250   
00251   
00256   CbcDisasterHandler(CbcModel * model = NULL);
00258   virtual ~CbcDisasterHandler();
00259   // Copy
00260   CbcDisasterHandler(const CbcDisasterHandler&);
00261   // Assignment
00262   CbcDisasterHandler& operator=(const CbcDisasterHandler&);
00264   virtual ClpDisasterHandler * clone() const;
00265 
00267   
00272   void setCbcModel(CbcModel * model);
00274   inline CbcModel * cbcModel() const
00275   { return cbcModel_;}
00276   
00278   
00279   
00280 protected:
00284 
00285   CbcModel * cbcModel_;
00286       
00288 };
00289 #endif
00290 
00291 #endif

Generated on Tue Jan 19 03:02:15 2010 by  doxygen 1.4.7