00001 /* $Id: CbcHeuristicGreedy.hpp 1432 2010-02-07 19:33:53Z bjarni $ */ 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 } 00064 inline void setAlgorithm(int value) { 00065 algorithm_ = value; 00066 } 00067 // Only do this many times 00068 inline int numberTimes() const { 00069 return numberTimes_; 00070 } 00071 inline void setNumberTimes(int value) { 00072 numberTimes_ = value; 00073 } 00074 00075 protected: 00077 void gutsOfConstructor(CbcModel * model); 00078 // Data 00079 00080 // Original matrix by column 00081 CoinPackedMatrix matrix_; 00082 // original number of rows 00083 int originalNumberRows_; 00084 /* Algorithm 00085 0 - use current upper bounds 00086 1 - use original upper bounds 00087 If 10 added perturb ratios more 00088 */ 00089 int algorithm_; 00091 int numberTimes_; 00092 00093 }; 00094 00095 00096 class CbcHeuristicGreedyEquality : public CbcHeuristic { 00097 public: 00098 00099 // Default Constructor 00100 CbcHeuristicGreedyEquality (); 00101 00102 /* Constructor with model - assumed before cuts 00103 Initial version does not do Lps 00104 */ 00105 CbcHeuristicGreedyEquality (CbcModel & model); 00106 00107 // Copy constructor 00108 CbcHeuristicGreedyEquality ( const CbcHeuristicGreedyEquality &); 00109 00110 // Destructor 00111 ~CbcHeuristicGreedyEquality (); 00112 00114 virtual CbcHeuristic * clone() const; 00116 CbcHeuristicGreedyEquality & operator=(const CbcHeuristicGreedyEquality& rhs); 00118 virtual void generateCpp( FILE * fp) ; 00119 00121 virtual void setModel(CbcModel * model); 00122 00123 using CbcHeuristic::solution ; 00134 virtual int solution(double & objectiveValue, 00135 double * newSolution); 00137 virtual void validate() ; 00139 virtual void resetModel(CbcModel * model); 00140 /* Algorithm 00141 0 - use current upper bounds 00142 1 - use original upper bounds 00143 If 10 added perturb ratios more 00144 if 100 added round up all >=0.5 00145 */ 00146 inline int algorithm() const { 00147 return algorithm_; 00148 } 00149 inline void setAlgorithm(int value) { 00150 algorithm_ = value; 00151 } 00152 // Fraction of rhs to cover before branch and cut 00153 inline void setFraction(double value) { 00154 fraction_ = value; 00155 } 00156 inline double fraction() const { 00157 return fraction_; 00158 } 00159 // Only do this many times 00160 inline int numberTimes() const { 00161 return numberTimes_; 00162 } 00163 inline void setNumberTimes(int value) { 00164 numberTimes_ = value; 00165 } 00166 protected: 00168 void gutsOfConstructor(CbcModel * model); 00169 // Data 00170 00171 // Original matrix by column 00172 CoinPackedMatrix matrix_; 00173 // Fraction of rhs to cover before branch and cut 00174 double fraction_; 00175 // original number of rows 00176 int originalNumberRows_; 00177 /* Algorithm 00178 0 - use current upper bounds 00179 1 - use original upper bounds 00180 If 10 added perturb ratios more 00181 */ 00182 int algorithm_; 00184 int numberTimes_; 00185 00186 }; 00187 00188 00189 #endif 00190