Cbc 2.10.12
Loading...
Searching...
No Matches
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
18
20public:
21 // Default Constructor
23
24 // Copy constructor
26
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
76private:
79
81
84
87
90
93
96
99};
100
109
111
112public:
115
124 int way, double value,
126
133
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 }
172
173 inline void setChangeInGuessed(double value)
174 {
175 changeInGuessed_ = value;
176 }
177
179 {
180 return object_;
181 }
182
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
200protected:
205};
206
207#endif
208
209/* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
210*/
@ DynamicPseudoCostBranchObj
CbcModel * model() const
Return model.
CbcBranchDecision()
Default Constructor.
int bestNumberUp_
Number of infeasibilities for up.
CbcBranchingObject * bestObject_
Pointer to best branching object.
virtual double getBestCriterion() const
virtual void setBestCriterion(double value)
Sets or gets best criterion so far.
virtual CbcBranchDecision * clone() const
Clone.
virtual ~CbcBranchDynamicDecision()
CbcBranchDynamicDecision & operator=(const CbcBranchDynamicDecision &rhs)
Illegal Assignment operator.
CbcBranchDynamicDecision(const CbcBranchDynamicDecision &)
double bestChangeUp_
Change up for best.
virtual void updateInformation(OsiSolverInterface *solver, const CbcNode *node)
Pass in information on branch just done.
virtual void initialize(CbcModel *model)
Initialize, e.g. before the start of branch selection at a node.
int bestNumberDown_
Number of infeasibilities for down.
virtual int betterBranch(CbcBranchingObject *thisOne, CbcBranchingObject *bestSoFar, double changeUp, int numInfUp, double changeDn, int numInfDn)
Compare two branching objects.
double bestChangeDown_
Change down for best.
virtual void saveBranchingObject(OsiBranchingObject *object)
Saves a clone of current branching object.
virtual int whichMethod()
Says whether this method can handle both methods - 1 better, 2 best, 3 both.
Abstract branching object base class Now just difference with OsiBranchingObject.
CbcBranchingObject & operator=(const CbcBranchingObject &rhs)
Assignment operator.
virtual CbcBranchingObject * clone() const =0
Clone.
CbcBranchingObject()
Default Constructor.
virtual double branch()=0
Execute the actions required to branch, as specified by the current state of the branching object,...
CbcModel * model() const
Return model.
int variable() const
Index identifying the associated CbcObject within its class.
int way() const
Get the state of the branching object.
*Return object CbcSimpleIntegerDynamicPseudoCost * object() const
virtual CbcBranchObjType type() const
Return the type (an integer identifier) of this.
virtual double branch()
Create a degenerate branch object.
CbcDynamicPseudoCostBranchingObject()
Default constructor.
virtual int fillStrongInfo(CbcStrongInfo &info)
Some branchingObjects may claim to be able to skip strong branching.
*Pointer back to object CbcSimpleIntegerDynamicPseudoCost * object_
*Set object void setObject(CbcSimpleIntegerDynamicPseudoCost *object)
*Change in guessed double changeInGuessed() const
*Change in guessed objective value for next branch double changeInGuessed_
CbcDynamicPseudoCostBranchingObject(CbcModel *model, int variable, int way, double value, CbcSimpleIntegerDynamicPseudoCost *object)
Create a standard floor/ceiling branch object.
*Set change in guessed void setChangeInGuessed(double value)
CbcIntegerBranchingObject()
Default constructor.
Simple Branch and bound class.
Definition CbcModel.hpp:100
Define a single integer class but with dynamic pseudo costs.