Cbc  2.9.8
CbcBranchDynamic.hpp
Go to the documentation of this file.
1 /* $Id: CbcBranchDynamic.hpp 1573 2011-01-05 01:12:36Z lou $ */
2 // Copyright (C) 2005, 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 #ifndef CbcBranchDynamic_H
7 #define CbcBranchDynamic_H
8 
9 #include "CoinPackedMatrix.hpp"
11 #include "CbcBranchActual.hpp"
12 
20 public:
21  // Default Constructor
23 
24  // Copy constructor
26 
27  virtual ~CbcBranchDynamicDecision();
28 
30  virtual CbcBranchDecision * clone() const;
31 
33  virtual void initialize(CbcModel * model);
34 
54  virtual int betterBranch(CbcBranchingObject * thisOne,
55  CbcBranchingObject * bestSoFar,
56  double changeUp, int numInfUp,
57  double changeDn, int numInfDn);
59  virtual void setBestCriterion(double value);
60  virtual double getBestCriterion() const;
63  virtual int whichMethod() {
64  return 3;
65  }
66 
69  virtual void saveBranchingObject(OsiBranchingObject * object) ;
72  virtual void updateInformation(OsiSolverInterface * solver,
73  const CbcNode * node);
74 
75 
76 private:
77 
79  CbcBranchDynamicDecision & operator=(const CbcBranchDynamicDecision& rhs);
80 
82 
84  double bestCriterion_;
85 
87  double bestChangeUp_;
88 
90  int bestNumberUp_;
91 
93  double bestChangeDown_;
94 
96  int bestNumberDown_;
97 
99  CbcBranchingObject * bestObject_;
100 };
112 
113 public:
114 
117 
125  CbcDynamicPseudoCostBranchingObject (CbcModel *model, int variable,
126  int way , double value,
128 
136  CbcDynamicPseudoCostBranchingObject (CbcModel *model, int variable, int way,
137  double lowerValue, double upperValue) ;
138 
141 
144 
146  virtual CbcBranchingObject * clone() const;
147 
150 
152  void fillPart (int variable,
153  int way , double value,
155 
161  virtual double branch();
162 
167  virtual int fillStrongInfo( CbcStrongInfo & info);
168 
170  inline double changeInGuessed() const {
171  return changeInGuessed_;
172  }
174  inline void setChangeInGuessed(double value) {
175  changeInGuessed_ = value;
176  }
179  return object_;
180  }
183  object_ = object;
184  }
185 
187  virtual CbcBranchObjType type() const {
189  }
190 
191  // LL: compareOriginalObject and compareBranchingObject are inherited from
192  // CbcIntegerBranchingObject thus need not be declared/defined here. After
193  // all, this kind of branching object is simply using pseudocosts to make
194  // decisions, but once the decisions are made they are the same kind as in
195  // the underlying class.
196 
197 protected:
202 
203 };
204 
205 #endif
206 
Simple branching object for an integer variable.
CbcSimpleIntegerDynamicPseudoCost * object_
Pointer back to object.
virtual void setBestCriterion(double value)
Sets or gets best criterion so far.
Branching decision dynamic class.
virtual ~CbcBranchDynamicDecision()
Abstract base class for `objects'.
Definition: CbcObject.hpp:51
Define a single integer class but with dynamic pseudo costs.
void setChangeInGuessed(double value)
Set change in guessed.
virtual void initialize(CbcModel *model)
Initialize, e.g. before the start of branch selection at a node.
CbcBranchingObject * object_
virtual void saveBranchingObject(OsiBranchingObject *object)
Saves a clone of current branching object.
double changeInGuessed_
Change in guessed objective value for next branch.
virtual CbcBranchObjType type() const
Return the type (an integer identifier) of this.
virtual CbcBranchDecision * clone() const
Clone.
Simple branching object for an integer variable with pseudo costs.
Abstract branching object base class Now just difference with OsiBranchingObject. ...
Information required while the node is live.
Definition: CbcNode.hpp:49
CbcBranchObjType
double changeInGuessed() const
Change in guessed.
virtual double branch()=0
Execute the actions required to branch, as specified by the current state of the branching object...
virtual double getBestCriterion() const
CbcSimpleIntegerDynamicPseudoCost * object() const
Return object.
virtual void updateInformation(OsiSolverInterface *solver, const CbcNode *node)
Pass in information on branch just done.
virtual int whichMethod()
Says whether this method can handle both methods - 1 better, 2 best, 3 both.
virtual int betterBranch(CbcBranchingObject *thisOne, CbcBranchingObject *bestSoFar, double changeUp, int numInfUp, double changeDn, int numInfDn)
Compare two branching objects.
void setObject(CbcSimpleIntegerDynamicPseudoCost *object)
Set object.
Simple Branch and bound class.
Definition: CbcModel.hpp:101