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 virtual void generateCpp( FILE * fp) ; 00031 00033 virtual void setModel(CbcModel * model); 00034 00045 virtual int solution(double & objectiveValue, 00046 double * newSolution); 00048 virtual void validate() ; 00050 virtual void resetModel(CbcModel * model); 00051 /* Algorithm 00052 0 - use current upper bounds 00053 1 - use original upper bounds 00054 If 10 added perturb ratios more 00055 if 100 added round up all >=0.5 00056 */ 00057 inline int algorithm() const 00058 { return algorithm_; }; 00059 inline void setAlgorithm(int value) 00060 { algorithm_=value; }; 00061 // Only do this many times 00062 inline int numberTimes() const 00063 { return numberTimes_; }; 00064 inline void setNumberTimes(int value) 00065 { numberTimes_=value; }; 00066 00067 protected: 00068 // Data 00069 00070 // Original matrix by column 00071 CoinPackedMatrix matrix_; 00072 // original number of rows 00073 int originalNumberRows_; 00074 /* Algorithm 00075 0 - use current upper bounds 00076 1 - use original upper bounds 00077 If 10 added perturb ratios more 00078 */ 00079 int algorithm_; 00081 int numberTimes_; 00082 00083 private: 00085 CbcHeuristicGreedyCover & operator=(const CbcHeuristicGreedyCover& rhs); 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 virtual void generateCpp( FILE * fp) ; 00110 00112 virtual void setModel(CbcModel * model); 00113 00124 virtual int solution(double & objectiveValue, 00125 double * newSolution); 00127 virtual void validate() ; 00129 virtual void resetModel(CbcModel * model); 00130 /* Algorithm 00131 0 - use current upper bounds 00132 1 - use original upper bounds 00133 If 10 added perturb ratios more 00134 if 100 added round up all >=0.5 00135 */ 00136 inline int algorithm() const 00137 { return algorithm_; }; 00138 inline void setAlgorithm(int value) 00139 { algorithm_=value; }; 00140 // Fraction of rhs to cover before branch and cut 00141 inline void setFraction(double value) 00142 { fraction_ = value;}; 00143 inline double fraction() const 00144 { return fraction_;}; 00145 // Only do this many times 00146 inline int numberTimes() const 00147 { return numberTimes_; }; 00148 inline void setNumberTimes(int value) 00149 { numberTimes_=value; }; 00150 protected: 00151 // Data 00152 00153 // Original matrix by column 00154 CoinPackedMatrix matrix_; 00155 // Fraction of rhs to cover before branch and cut 00156 double fraction_; 00157 // original number of rows 00158 int originalNumberRows_; 00159 /* Algorithm 00160 0 - use current upper bounds 00161 1 - use original upper bounds 00162 If 10 added perturb ratios more 00163 */ 00164 int algorithm_; 00166 int numberTimes_; 00167 00168 private: 00170 CbcHeuristicGreedyEquality & operator=(const CbcHeuristicGreedyEquality& rhs); 00171 }; 00172 00173 00174 #endif