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