diff options
Diffstat (limited to 'newstructure/thirdparty/linux/include/coin/CbcHeuristicDINS.hpp')
-rw-r--r-- | newstructure/thirdparty/linux/include/coin/CbcHeuristicDINS.hpp | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/newstructure/thirdparty/linux/include/coin/CbcHeuristicDINS.hpp b/newstructure/thirdparty/linux/include/coin/CbcHeuristicDINS.hpp new file mode 100644 index 0000000..49d0c1c --- /dev/null +++ b/newstructure/thirdparty/linux/include/coin/CbcHeuristicDINS.hpp @@ -0,0 +1,96 @@ +// $Id: CbcHeuristicDINS.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 CbcHeuristicDINS_H +#define CbcHeuristicDINS_H + +#include "CbcHeuristic.hpp" + + +class CbcHeuristicDINS : public CbcHeuristic { +public: + + // Default Constructor + CbcHeuristicDINS (); + + /* Constructor with model - assumed before cuts + Initial version does not do Lps + */ + CbcHeuristicDINS (CbcModel & model); + + // Copy constructor + CbcHeuristicDINS ( const CbcHeuristicDINS &); + + // Destructor + ~CbcHeuristicDINS (); + + /// Clone + virtual CbcHeuristic * clone() const; + + + /// Assignment operator + CbcHeuristicDINS & operator=(const CbcHeuristicDINS& 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; + } + /// Sets maximum number of solutions kept + inline void setMaximumKeep(int value) { + maximumKeepSolutions_ = value; + } + /// Sets tightness of extra constraint + inline void setConstraint(int value) { + localSpace_ = value; + } + +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_; + /// Maximum number of solutions to keep + int maximumKeepSolutions_; + /// Number of solutions kept + int numberKeptSolutions_; + /// Number of integer variables + int numberIntegers_; + /// Local parameter + int localSpace_; + /// Values of integer variables + int ** values_; +}; + +#endif + |