Cbc  2.10.10
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
CbcBranchDynamic.hpp
Go to the documentation of this file.
1 /* $Id$ */
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  {
65  return 3;
66  }
67 
70  virtual void saveBranchingObject(OsiBranchingObject *object);
73  virtual void updateInformation(OsiSolverInterface *solver,
74  const CbcNode *node);
75 
76 private:
79 
81 
84 
86  double bestChangeUp_;
87 
90 
93 
96 
99 };
111 
112 public:
115 
124  int way, double value,
126 
135  double lowerValue, double upperValue);
136 
139 
142 
144  virtual CbcBranchingObject *clone() const;
145 
148 
150  void fillPart(int variable,
151  int way, double value,
153 
159  virtual double branch();
160 
165  virtual int fillStrongInfo(CbcStrongInfo &info);
166 
168  inline double changeInGuessed() const
169  {
170  return changeInGuessed_;
171  }
173  inline void setChangeInGuessed(double value)
174  {
175  changeInGuessed_ = value;
176  }
179  {
180  return object_;
181  }
184  {
185  object_ = object;
186  }
187 
189  virtual CbcBranchObjType type() const
190  {
192  }
193 
194  // LL: compareOriginalObject and compareBranchingObject are inherited from
195  // CbcIntegerBranchingObject thus need not be declared/defined here. After
196  // all, this kind of branching object is simply using pseudocosts to make
197  // decisions, but once the decisions are made they are the same kind as in
198  // the underlying class.
199 
200 protected:
205 };
206 
207 #endif
208 
209 /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
210 */
CbcBranchDynamicDecision::bestNumberUp_
int bestNumberUp_
Number of infeasibilities for up.
Definition: CbcBranchDynamic.hpp:89
CbcBranchingObject::way
int way() const
Get the state of the branching object.
Definition: CbcBranchingObject.hpp:157
CbcBranchingObject::variable
int variable() const
Index identifying the associated CbcObject within its class.
Definition: CbcBranchingObject.hpp:145
CbcSimpleIntegerDynamicPseudoCost
Define a single integer class but with dynamic pseudo costs.
Definition: CbcSimpleIntegerDynamicPseudoCost.hpp:33
CbcBranchDynamicDecision::bestNumberDown_
int bestNumberDown_
Number of infeasibilities for down.
Definition: CbcBranchDynamic.hpp:95
CbcDynamicPseudoCostBranchingObject::fillPart
void fillPart(int variable, int way, double value, CbcSimpleIntegerDynamicPseudoCost *object)
Does part of constructor.
CbcBranchDynamicDecision::setBestCriterion
virtual void setBestCriterion(double value)
Sets or gets best criterion so far.
CbcBranchDynamicDecision::bestChangeUp_
double bestChangeUp_
Change up for best.
Definition: CbcBranchDynamic.hpp:86
CbcDynamicPseudoCostBranchingObject
Simple branching object for an integer variable with pseudo costs.
Definition: CbcBranchDynamic.hpp:110
CbcDynamicPseudoCostBranchingObject::object_
CbcSimpleIntegerDynamicPseudoCost * object_
Pointer back to object.
Definition: CbcBranchDynamic.hpp:204
CbcBranchingObject::branch
virtual double branch()=0
Execute the actions required to branch, as specified by the current state of the branching object,...
CbcSimpleIntegerDynamicPseudoCost.hpp
CbcBranchDynamicDecision::bestChangeDown_
double bestChangeDown_
Change down for best.
Definition: CbcBranchDynamic.hpp:92
CbcBranchDynamicDecision::saveBranchingObject
virtual void saveBranchingObject(OsiBranchingObject *object)
Saves a clone of current branching object.
CbcBranchDynamicDecision::~CbcBranchDynamicDecision
virtual ~CbcBranchDynamicDecision()
CbcBranchDynamicDecision::CbcBranchDynamicDecision
CbcBranchDynamicDecision()
CbcDynamicPseudoCostBranchingObject::~CbcDynamicPseudoCostBranchingObject
virtual ~CbcDynamicPseudoCostBranchingObject()
Destructor.
CbcDynamicPseudoCostBranchingObject::setChangeInGuessed
void setChangeInGuessed(double value)
Set change in guessed.
Definition: CbcBranchDynamic.hpp:173
CbcDynamicPseudoCostBranchingObject::changeInGuessed_
double changeInGuessed_
Change in guessed objective value for next branch.
Definition: CbcBranchDynamic.hpp:202
CbcModel
Simple Branch and bound class.
Definition: CbcModel.hpp:100
CbcBranchDynamicDecision::initialize
virtual void initialize(CbcModel *model)
Initialize, e.g. before the start of branch selection at a node.
CbcDynamicPseudoCostBranchingObject::changeInGuessed
double changeInGuessed() const
Change in guessed.
Definition: CbcBranchDynamic.hpp:168
CbcBranchDynamicDecision::updateInformation
virtual void updateInformation(OsiSolverInterface *solver, const CbcNode *node)
Pass in information on branch just done.
CbcDynamicPseudoCostBranchingObject::type
virtual CbcBranchObjType type() const
Return the type (an integer identifier) of this.
Definition: CbcBranchDynamic.hpp:189
CbcBranchingObject
Abstract branching object base class Now just difference with OsiBranchingObject.
Definition: CbcBranchingObject.hpp:51
CbcDynamicPseudoCostBranchingObject::operator=
CbcDynamicPseudoCostBranchingObject & operator=(const CbcDynamicPseudoCostBranchingObject &rhs)
Assignment operator.
CbcBranchDecision
Definition: CbcBranchDecision.hpp:28
CbcBranchDynamicDecision
Branching decision dynamic class.
Definition: CbcBranchDynamic.hpp:19
CbcIntegerBranchingObject
Simple branching object for an integer variable.
Definition: CbcSimpleInteger.hpp:23
CbcNode
Information required while the node is live.
Definition: CbcNode.hpp:49
CbcBranchDynamicDecision::whichMethod
virtual int whichMethod()
Says whether this method can handle both methods - 1 better, 2 best, 3 both.
Definition: CbcBranchDynamic.hpp:63
CbcBranchDynamicDecision::bestCriterion_
double bestCriterion_
data
Definition: CbcBranchDynamic.hpp:83
CbcDynamicPseudoCostBranchingObject::object
CbcSimpleIntegerDynamicPseudoCost * object() const
Return object.
Definition: CbcBranchDynamic.hpp:178
CbcStrongInfo
Abstract base class for ‘objects’.
Definition: CbcObject.hpp:51
CbcDynamicPseudoCostBranchingObject::CbcDynamicPseudoCostBranchingObject
CbcDynamicPseudoCostBranchingObject()
Default constructor.
CbcDynamicPseudoCostBranchingObject::setObject
void setObject(CbcSimpleIntegerDynamicPseudoCost *object)
Set object.
Definition: CbcBranchDynamic.hpp:183
CbcBranchObjType
CbcBranchObjType
Definition: CbcBranchingObject.hpp:17
CbcBranchDynamicDecision::betterBranch
virtual int betterBranch(CbcBranchingObject *thisOne, CbcBranchingObject *bestSoFar, double changeUp, int numInfUp, double changeDn, int numInfDn)
Compare two branching objects.
CbcBranchingObject::model
CbcModel * model() const
Return model.
Definition: CbcBranchingObject.hpp:177
CbcBranchActual.hpp
CbcBranchDynamicDecision::getBestCriterion
virtual double getBestCriterion() const
DynamicPseudoCostBranchObj
@ DynamicPseudoCostBranchObj
Definition: CbcBranchingObject.hpp:30
CbcBranchDynamicDecision::clone
virtual CbcBranchDecision * clone() const
Clone.
CbcDynamicPseudoCostBranchingObject::branch
virtual double branch()
Sets the bounds for the variable according to the current arm of the branch and advances the object s...
CbcDynamicPseudoCostBranchingObject::fillStrongInfo
virtual int fillStrongInfo(CbcStrongInfo &info)
Some branchingObjects may claim to be able to skip strong branching.
CbcBranchDynamicDecision::bestObject_
CbcBranchingObject * bestObject_
Pointer to best branching object.
Definition: CbcBranchDynamic.hpp:98
CbcDynamicPseudoCostBranchingObject::clone
virtual CbcBranchingObject * clone() const
Clone.
CbcBranchDynamicDecision::operator=
CbcBranchDynamicDecision & operator=(const CbcBranchDynamicDecision &rhs)
Illegal Assignment operator.