diff options
Diffstat (limited to 'thirdparty/linux/include/coin/CbcHeuristicVND.hpp')
-rw-r--r-- | thirdparty/linux/include/coin/CbcHeuristicVND.hpp | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/thirdparty/linux/include/coin/CbcHeuristicVND.hpp b/thirdparty/linux/include/coin/CbcHeuristicVND.hpp new file mode 100644 index 0000000..a245ab0 --- /dev/null +++ b/thirdparty/linux/include/coin/CbcHeuristicVND.hpp @@ -0,0 +1,94 @@ +// $Id: CbcHeuristicVND.hpp 1899 2013-04-09 18:12:08Z stefan $ +// Copyright (C) 2006, International Business Machines +// Corporation and others. All Rights Reserved. +// This code is licensed under the terms of the Eclipse Public License (EPL). + +// edwin 12/5/09 carved out of CbcHeuristicRINS + +#ifndef CbcHeuristicVND_H +#define CbcHeuristicVND_H + +#include "CbcHeuristic.hpp" + + +/** LocalSearch class + */ + +class CbcHeuristicVND : public CbcHeuristic { +public: + + // Default Constructor + CbcHeuristicVND (); + + /* Constructor with model - assumed before cuts + Initial version does not do Lps + */ + CbcHeuristicVND (CbcModel & model); + + // Copy constructor + CbcHeuristicVND ( const CbcHeuristicVND &); + + // Destructor + ~CbcHeuristicVND (); + + /// Clone + virtual CbcHeuristic * clone() const; + + + /// Assignment operator + CbcHeuristicVND & operator=(const CbcHeuristicVND& rhs); + + /// Create C++ lines to get to current state + virtual void generateCpp( FILE * fp) ; + + /// Resets stuff if model changes + virtual void resetModel(CbcModel * model); + + /// update model (This is needed if cliques update matrix etc) + virtual void setModel(CbcModel * model); + + using CbcHeuristic::solution ; + /** returns 0 if no solution, 1 if valid solution. + Sets solution values if good, sets objective value (only if good) + This does Relaxation Induced Neighborhood Search + */ + virtual int solution(double & objectiveValue, + double * newSolution); + /// This version fixes stuff and does IP + int solutionFix(double & objectiveValue, + double * newSolution, + const int * keep); + + /// Sets how often to do it + inline void setHowOften(int value) { + howOften_ = value; + } + /// base solution array so we can set + inline double * baseSolution() const { + return baseSolution_; + } + +protected: + // Data + + /// Number of solutions so we can do something at solution + int numberSolutions_; + /// How often to do (code can change) + int howOften_; + /// Number of successes + int numberSuccesses_; + /// Number of tries + int numberTries_; + /// Node when last done + int lastNode_; + /// Step size for decomposition + int stepSize_; + int k_; + int kmax_; + int nDifferent_; + /// Base solution + double * baseSolution_; +}; + +#endif + |