00001 /* $Id: CbcHeuristicGreedy.hpp 1271 2009-11-05 15:57:25Z forrest $ */ 00002 // Copyright (C) 2005, International Business Machines 00003 // Corporation and others. All Rights Reserved. 00004 #ifndef CbcHeuristicGreedy_H 00005 #define CbcHeuristicGreedy_H 00006 00007 #include "CbcHeuristic.hpp" 00011 class CbcHeuristicGreedyCover : public CbcHeuristic { 00012 public: 00013 00014 // Default Constructor 00015 CbcHeuristicGreedyCover (); 00016 00017 /* Constructor with model - assumed before cuts 00018 Initial version does not do Lps 00019 */ 00020 CbcHeuristicGreedyCover (CbcModel & model); 00021 00022 // Copy constructor 00023 CbcHeuristicGreedyCover ( const CbcHeuristicGreedyCover &); 00024 00025 // Destructor 00026 ~CbcHeuristicGreedyCover (); 00027 00029 virtual CbcHeuristic * clone() const; 00031 CbcHeuristicGreedyCover & operator=(const CbcHeuristicGreedyCover& rhs); 00033 virtual void generateCpp( FILE * fp) ; 00034 00036 virtual void setModel(CbcModel * model); 00037 00038 using CbcHeuristic::solution ; 00049 virtual int solution(double & objectiveValue, 00050 double * newSolution); 00052 virtual void validate() ; 00054 virtual void resetModel(CbcModel * model); 00055 /* Algorithm 00056 0 - use current upper bounds 00057 1 - use original upper bounds 00058 If 10 added perturb ratios more 00059 if 100 added round up all >=0.5 00060 */ 00061 inline int algorithm() const 00062 { return algorithm_; } 00063 inline void setAlgorithm(int value) 00064 { algorithm_=value; } 00065 // Only do this many times 00066 inline int numberTimes() const 00067 { return numberTimes_; } 00068 inline void setNumberTimes(int value) 00069 { numberTimes_=value; } 00070 00071 protected: 00073 void gutsOfConstructor(CbcModel * model); 00074 // Data 00075 00076 // Original matrix by column 00077 CoinPackedMatrix matrix_; 00078 // original number of rows 00079 int originalNumberRows_; 00080 /* Algorithm 00081 0 - use current upper bounds 00082 1 - use original upper bounds 00083 If 10 added perturb ratios more 00084 */ 00085 int algorithm_; 00087 int numberTimes_; 00088 00089 }; 00090 00091 00092 class CbcHeuristicGreedyEquality : public CbcHeuristic { 00093 public: 00094 00095 // Default Constructor 00096 CbcHeuristicGreedyEquality (); 00097 00098 /* Constructor with model - assumed before cuts 00099 Initial version does not do Lps 00100 */ 00101 CbcHeuristicGreedyEquality (CbcModel & model); 00102 00103 // Copy constructor 00104 CbcHeuristicGreedyEquality ( const CbcHeuristicGreedyEquality &); 00105 00106 // Destructor 00107 ~CbcHeuristicGreedyEquality (); 00108 00110 virtual CbcHeuristic * clone() const; 00112 CbcHeuristicGreedyEquality & operator=(const CbcHeuristicGreedyEquality& rhs); 00114 virtual void generateCpp( FILE * fp) ; 00115 00117 virtual void setModel(CbcModel * model); 00118 00119 using CbcHeuristic::solution ; 00130 virtual int solution(double & objectiveValue, 00131 double * newSolution); 00133 virtual void validate() ; 00135 virtual void resetModel(CbcModel * model); 00136 /* Algorithm 00137 0 - use current upper bounds 00138 1 - use original upper bounds 00139 If 10 added perturb ratios more 00140 if 100 added round up all >=0.5 00141 */ 00142 inline int algorithm() const 00143 { return algorithm_; } 00144 inline void setAlgorithm(int value) 00145 { algorithm_=value; } 00146 // Fraction of rhs to cover before branch and cut 00147 inline void setFraction(double value) 00148 { fraction_ = value;} 00149 inline double fraction() const 00150 { return fraction_;} 00151 // Only do this many times 00152 inline int numberTimes() const 00153 { return numberTimes_; } 00154 inline void setNumberTimes(int value) 00155 { numberTimes_=value; } 00156 protected: 00158 void gutsOfConstructor(CbcModel * model); 00159 // Data 00160 00161 // Original matrix by column 00162 CoinPackedMatrix matrix_; 00163 // Fraction of rhs to cover before branch and cut 00164 double fraction_; 00165 // original number of rows 00166 int originalNumberRows_; 00167 /* Algorithm 00168 0 - use current upper bounds 00169 1 - use original upper bounds 00170 If 10 added perturb ratios more 00171 */ 00172 int algorithm_; 00174 int numberTimes_; 00175 00176 }; 00177 00178 00179 #endif