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: 00071 // Data 00072 00073 // Original matrix by column 00074 CoinPackedMatrix matrix_; 00075 // original number of rows 00076 int originalNumberRows_; 00077 /* Algorithm 00078 0 - use current upper bounds 00079 1 - use original upper bounds 00080 If 10 added perturb ratios more 00081 */ 00082 int algorithm_; 00084 int numberTimes_; 00085 00086 }; 00087 00088 00089 class CbcHeuristicGreedyEquality : public CbcHeuristic { 00090 public: 00091 00092 // Default Constructor 00093 CbcHeuristicGreedyEquality (); 00094 00095 /* Constructor with model - assumed before cuts 00096 Initial version does not do Lps 00097 */ 00098 CbcHeuristicGreedyEquality (CbcModel & model); 00099 00100 // Copy constructor 00101 CbcHeuristicGreedyEquality ( const CbcHeuristicGreedyEquality &); 00102 00103 // Destructor 00104 ~CbcHeuristicGreedyEquality (); 00105 00107 virtual CbcHeuristic * clone() const; 00109 CbcHeuristicGreedyEquality & operator=(const CbcHeuristicGreedyEquality& rhs); 00111 virtual void generateCpp( FILE * fp) ; 00112 00114 virtual void setModel(CbcModel * model); 00115 00116 using CbcHeuristic::solution ; 00127 virtual int solution(double & objectiveValue, 00128 double * newSolution); 00130 virtual void validate() ; 00132 virtual void resetModel(CbcModel * model); 00133 /* Algorithm 00134 0 - use current upper bounds 00135 1 - use original upper bounds 00136 If 10 added perturb ratios more 00137 if 100 added round up all >=0.5 00138 */ 00139 inline int algorithm() const 00140 { return algorithm_; } 00141 inline void setAlgorithm(int value) 00142 { algorithm_=value; } 00143 // Fraction of rhs to cover before branch and cut 00144 inline void setFraction(double value) 00145 { fraction_ = value;} 00146 inline double fraction() const 00147 { return fraction_;} 00148 // Only do this many times 00149 inline int numberTimes() const 00150 { return numberTimes_; } 00151 inline void setNumberTimes(int value) 00152 { numberTimes_=value; } 00153 protected: 00154 // Data 00155 00156 // Original matrix by column 00157 CoinPackedMatrix matrix_; 00158 // Fraction of rhs to cover before branch and cut 00159 double fraction_; 00160 // original number of rows 00161 int originalNumberRows_; 00162 /* Algorithm 00163 0 - use current upper bounds 00164 1 - use original upper bounds 00165 If 10 added perturb ratios more 00166 */ 00167 int algorithm_; 00169 int numberTimes_; 00170 00171 }; 00172 00173 00174 #endif