Cbc  2.9.9
CbcCompareDefault.hpp
Go to the documentation of this file.
1 // $Id: CbcCompareDefault.hpp 1899 2013-04-09 18:12:08Z stefan $
2 // Copyright (C) 2002, International Business Machines
3 // Corporation and others. All Rights Reserved.
4 // This code is licensed under the terms of the Eclipse Public License (EPL).
5 
6 //Edwin 11/25/09 carved out of CbcCompareActual
7 
8 #ifndef CbcCompareDefault_H
9 #define CbcCompareDefault_H
10 
11 
12 //#############################################################################
13 /* These are alternative strategies for node traversal.
14  They can take data etc for fine tuning
15 
16  At present the node list is stored as a heap and the "test"
17  comparison function returns true if node y is better than node x.
18 
19 */
20 #include "CbcNode.hpp"
21 #include "CbcCompareBase.hpp"
22 #include "CbcCompare.hpp"
23 
24 class CbcModel;
25 
26 /* This is an example of a more complex rule with data
27  It is default after first solution
28  If weight is 0.0 then it is computed to hit first solution
29  less 5%
30 */
32 public:
36  CbcCompareDefault (double weight);
37 
40 
43 
45  virtual CbcCompareBase * clone() const;
47  virtual void generateCpp( FILE * fp);
48 
50  /* This returns true if weighted value of node y is less than
51  weighted value of node x */
52  virtual bool test (CbcNode * x, CbcNode * y) ;
53 
57  virtual bool newSolution(CbcModel * model,
58  double objectiveAtContinuous,
59  int numberInfeasibilitiesAtContinuous) ;
62  virtual bool every1000Nodes(CbcModel * model, int numberNodes);
63 
64  /* if weight == -1.0 then fewest infeasibilities (before solution)
65  if -2.0 then do breadth first just for first 1000 nodes
66  if -3.0 then depth first before solution
67  */
68  inline double getWeight() const {
69  return weight_;
70  }
71  inline void setWeight(double weight) {
72  weight_ = weight;
73  }
75  inline double getCutoff() const {
76  return cutoff_;
77  }
78  inline void setCutoff(double cutoff) {
79  cutoff_ = cutoff;
80  }
82  inline double getBestPossible() const {
83  return bestPossible_;
84  }
85  inline void setBestPossible(double bestPossible) {
86  bestPossible_ = bestPossible;
87  }
89  inline void setBreadthDepth(int value) {
90  breadthDepth_ = value;
91  }
93  void startDive(CbcModel * model);
95  void cleanDive();
96 protected:
98  double weight_;
100  double saveWeight_;
102  double cutoff_;
117 };
118 
119 #endif //CbcCompareDefault_H
120 
CbcCompareDefault::startDive
void startDive(CbcModel *model)
Start dive.
CbcCompareDefault::operator=
CbcCompareDefault & operator=(const CbcCompareDefault &rhs)
Assignment operator.
CbcCompareDefault::weight_
double weight_
Weight for each infeasibility.
Definition: CbcCompareDefault.hpp:98
CbcCompareDefault::getWeight
double getWeight() const
Definition: CbcCompareDefault.hpp:68
CbcCompareDefault::startNodeNumber_
int startNodeNumber_
Chosen node from estimated (-1 is off)
Definition: CbcCompareDefault.hpp:112
CbcCompareDefault::~CbcCompareDefault
~CbcCompareDefault()
CbcCompareDefault::setWeight
void setWeight(double weight)
Definition: CbcCompareDefault.hpp:71
CbcCompareBase::newSolution
virtual bool newSolution(CbcModel *)
Reconsider behaviour after discovering a new solution.
Definition: CbcCompareBase.hpp:45
CbcCompareDefault::bestPossible_
double bestPossible_
Best possible solution.
Definition: CbcCompareDefault.hpp:104
CbcCompareDefault::CbcCompareDefault
CbcCompareDefault()
Default Constructor.
CbcCompareDefault::breadthDepth_
int breadthDepth_
Depth above which want to explore first.
Definition: CbcCompareDefault.hpp:110
CbcCompareDefault::generateCpp
virtual void generateCpp(FILE *fp)
Create C++ lines to get to current state.
CbcCompareDefault::afterNodeNumber_
int afterNodeNumber_
Node number when dive started.
Definition: CbcCompareDefault.hpp:114
CbcCompareDefault::every1000Nodes
virtual bool every1000Nodes(CbcModel *model, int numberNodes)
This allows method to change behavior Return true if want tree re-sorted.
CbcModel
Simple Branch and bound class.
Definition: CbcModel.hpp:101
CbcCompareDefault::setCutoff
void setCutoff(double cutoff)
Definition: CbcCompareDefault.hpp:78
CbcCompareDefault::setBreadthDepth
void setBreadthDepth(int value)
Depth above which want to explore first.
Definition: CbcCompareDefault.hpp:89
CbcCompare.hpp
CbcCompareDefault::cleanDive
void cleanDive()
Clean up diving (i.e. switch off or prepare)
CbcCompareBase.hpp
CbcCompareDefault::numberSolutions_
int numberSolutions_
Number of solutions.
Definition: CbcCompareDefault.hpp:106
CbcCompareDefault::test
virtual bool test(CbcNode *x, CbcNode *y)
This is test function.
CbcCompareDefault::getBestPossible
double getBestPossible() const
Best possible solution.
Definition: CbcCompareDefault.hpp:82
CbcCompareDefault::newSolution
virtual bool newSolution(CbcModel *model, double objectiveAtContinuous, int numberInfeasibilitiesAtContinuous)
This allows method to change behavior as it is called after each solution.
CbcNode
Information required while the node is live.
Definition: CbcNode.hpp:49
CbcCompareDefault::cutoff_
double cutoff_
Cutoff.
Definition: CbcCompareDefault.hpp:102
CbcCompareDefault::setupForDiving_
bool setupForDiving_
Indicates doing setup for diving.
Definition: CbcCompareDefault.hpp:116
CbcCompareDefault::setBestPossible
void setBestPossible(double bestPossible)
Definition: CbcCompareDefault.hpp:85
CbcCompareDefault::saveWeight_
double saveWeight_
Weight for each infeasibility - computed from solution.
Definition: CbcCompareDefault.hpp:100
CbcNode.hpp
CbcCompareDefault::clone
virtual CbcCompareBase * clone() const
Clone.
CbcCompareDefault::getCutoff
double getCutoff() const
Cutoff.
Definition: CbcCompareDefault.hpp:75
CbcCompareDefault
Definition: CbcCompareDefault.hpp:31
CbcCompareBase
Definition: CbcCompareBase.hpp:27
CbcCompareDefault::CbcCompareDefault
CbcCompareDefault(const CbcCompareDefault &rhs)
Copy constructor.
CbcCompareDefault::CbcCompareDefault
CbcCompareDefault(double weight)
Constructor with weight.
CbcCompareDefault::treeSize_
int treeSize_
Tree size (at last check)
Definition: CbcCompareDefault.hpp:108