00001 // edwin 12/5/09 carved out of CbcHeuristicRINS 00002 #ifndef CbcHeuristicVND_H 00003 #define CbcHeuristicVND_H 00004 00005 #include "CbcHeuristic.hpp" 00006 00007 00011 class CbcHeuristicVND : public CbcHeuristic { 00012 public: 00013 00014 // Default Constructor 00015 CbcHeuristicVND (); 00016 00017 /* Constructor with model - assumed before cuts 00018 Initial version does not do Lps 00019 */ 00020 CbcHeuristicVND (CbcModel & model); 00021 00022 // Copy constructor 00023 CbcHeuristicVND ( const CbcHeuristicVND &); 00024 00025 // Destructor 00026 ~CbcHeuristicVND (); 00027 00029 virtual CbcHeuristic * clone() const; 00030 00031 00033 CbcHeuristicVND & operator=(const CbcHeuristicVND& rhs); 00034 00036 virtual void generateCpp( FILE * fp) ; 00037 00039 virtual void resetModel(CbcModel * model); 00040 00042 virtual void setModel(CbcModel * model); 00043 00044 using CbcHeuristic::solution ; 00049 virtual int solution(double & objectiveValue, 00050 double * newSolution); 00052 int solutionFix(double & objectiveValue, 00053 double * newSolution, 00054 const int * keep); 00055 00057 inline void setHowOften(int value) { 00058 howOften_ = value; 00059 } 00061 inline double * baseSolution() const { 00062 return baseSolution_; 00063 } 00064 00065 protected: 00066 // Data 00067 00069 int numberSolutions_; 00071 int howOften_; 00073 int numberSuccesses_; 00075 int numberTries_; 00077 int lastNode_; 00079 int stepSize_; 00080 int k_; 00081 int kmax_; 00082 int nDifferent_; 00084 double * baseSolution_; 00085 }; 00086 00087 #endif 00088