#include <CbcBranchBase.hpp>
Inheritance diagram for CbcBranchingObject:
Public Member Functions | |
CbcBranchingObject () | |
Default Constructor. | |
CbcBranchingObject (CbcModel *model, int variable, int way, double value) | |
Constructor. | |
CbcBranchingObject (const CbcBranchingObject &) | |
Copy constructor. | |
CbcBranchingObject & | operator= (const CbcBranchingObject &rhs) |
Assignment operator. | |
virtual CbcBranchingObject * | clone () const =0 |
Clone. | |
virtual | ~CbcBranchingObject () |
Destructor. | |
virtual int | fillStrongInfo (CbcStrongInfo &info) |
Some branchingObjects may claim to be able to skip strong branching. | |
virtual int | numberBranches () const |
The number of branch arms created for this branching object. | |
virtual int | numberBranchesLeft () const |
The number of branch arms left to be evaluated. | |
void | resetNumberBranchesLeft () |
Reset number of branches left to original. | |
virtual double | branch (bool normalBranch=false)=0 |
Execute the actions required to branch, as specified by the current state of the branching object, and advance the object's state. | |
virtual void | print (bool normalBranch) |
Print something about branch - only if log level high. | |
virtual bool | boundBranch () const |
Return true if branch should fix variables. | |
int | variable () const |
Index identifying the associated CbcObject within its class. | |
int | way () const |
Get the state of the branching object. | |
void | way (int way) |
Set the state of the branching object. | |
double | value () const |
Current value. | |
CbcModel * | model () const |
Return model. | |
CbcObject * | object () const |
Return pointer back to object which created. | |
void | setOriginalObject (CbcObject *object) |
Set pointer back to object which created. | |
Protected Attributes | |
CbcModel * | model_ |
The model that owns this branching object. | |
CbcObject * | originalObject_ |
Pointer back to object which created. | |
int | variable_ |
Branching variable (0 is first integer). | |
int | way_ |
The state of the branching object. | |
double | value_ |
Current value. | |
int | numberBranchesLeft_ |
Number of arms remaining to be evaluated. |
In the abstract, an CbcBranchingObject contains instructions for how to branch. We want an abstract class so that we can describe how to branch on simple objects (e.g., integers) and more exotic objects (e.g., cliques or hyperplanes).
The branch() method is the crucial routine: it is expected to be able to step through a set of branch arms, executing the actions required to create each subproblem in turn. The base class is primarily virtual to allow for a wide range of problem modifications.
See CbcObject for an overview of the three classes (CbcObject, CbcBranchingObject, and CbcBranchDecision) which make up cbc's branching model.
Definition at line 220 of file CbcBranchBase.hpp.
CbcBranchingObject::CbcBranchingObject | ( | ) |
Default Constructor.
CbcBranchingObject::CbcBranchingObject | ( | CbcModel * | model, | |
int | variable, | |||
int | way, | |||
double | value | |||
) |
Constructor.
CbcBranchingObject::CbcBranchingObject | ( | const CbcBranchingObject & | ) |
Copy constructor.
virtual CbcBranchingObject::~CbcBranchingObject | ( | ) | [virtual] |
Destructor.
CbcBranchingObject& CbcBranchingObject::operator= | ( | const CbcBranchingObject & | rhs | ) |
Assignment operator.
virtual CbcBranchingObject* CbcBranchingObject::clone | ( | ) | const [pure virtual] |
Clone.
Implemented in CbcLinkBranchingObject, CbcIntegerBranchingObject, CbcIntegerPseudoCostBranchingObject, CbcCliqueBranchingObject, CbcLongCliqueBranchingObject, CbcSOSBranchingObject, CbcNWayBranchingObject, CbcFixingBranchingObject, CbcCutBranchingObject, CbcDynamicPseudoCostBranchingObject, and CbcLotsizeBranchingObject.
virtual int CbcBranchingObject::fillStrongInfo | ( | CbcStrongInfo & | info | ) | [inline, virtual] |
Some branchingObjects may claim to be able to skip strong branching.
If so they ahve to fill in CbcStrongInfo. The object mention in incoming CbcStrongInfo must match. Returns nonzero if skip is wanted
Reimplemented in CbcDynamicPseudoCostBranchingObject.
Definition at line 246 of file CbcBranchBase.hpp.
virtual int CbcBranchingObject::numberBranches | ( | ) | const [inline, virtual] |
The number of branch arms created for this branching object.
Reimplemented in CbcNWayBranchingObject.
Definition at line 252 of file CbcBranchBase.hpp.
Referenced by CbcNode::numberBranches(), and resetNumberBranchesLeft().
virtual int CbcBranchingObject::numberBranchesLeft | ( | ) | const [inline, virtual] |
The number of branch arms left to be evaluated.
Definition at line 256 of file CbcBranchBase.hpp.
References numberBranchesLeft_.
void CbcBranchingObject::resetNumberBranchesLeft | ( | ) | [inline] |
Reset number of branches left to original.
Definition at line 259 of file CbcBranchBase.hpp.
References numberBranches(), and numberBranchesLeft_.
virtual double CbcBranchingObject::branch | ( | bool | normalBranch = false |
) | [pure virtual] |
Execute the actions required to branch, as specified by the current state of the branching object, and advance the object's state.
Mainly for diagnostics, whether it is true branch or strong branching is also passed. Returns change in guessed objective on next branch
Implemented in CbcLinkBranchingObject, CbcIntegerBranchingObject, CbcIntegerPseudoCostBranchingObject, CbcCliqueBranchingObject, CbcLongCliqueBranchingObject, CbcSOSBranchingObject, CbcNWayBranchingObject, CbcFixingBranchingObject, CbcCutBranchingObject, CbcDynamicPseudoCostBranchingObject, and CbcLotsizeBranchingObject.
virtual void CbcBranchingObject::print | ( | bool | normalBranch | ) | [inline, virtual] |
Print something about branch - only if log level high.
Reimplemented in CbcLinkBranchingObject, CbcIntegerBranchingObject, CbcCliqueBranchingObject, CbcLongCliqueBranchingObject, CbcSOSBranchingObject, CbcNWayBranchingObject, CbcFixingBranchingObject, CbcCutBranchingObject, and CbcLotsizeBranchingObject.
Definition at line 272 of file CbcBranchBase.hpp.
virtual bool CbcBranchingObject::boundBranch | ( | ) | const [inline, virtual] |
Return true if branch should fix variables.
Reimplemented in CbcCutBranchingObject.
Definition at line 276 of file CbcBranchBase.hpp.
int CbcBranchingObject::variable | ( | ) | const [inline] |
Index identifying the associated CbcObject within its class.
The name is misleading, and typically the index will not refer directly to a variable. Rather, it identifies an CbcObject within the class of similar CbcObjects
E.g., for an CbcSimpleInteger, variable() is the index of the integer variable in the set of integer variables (not the index of the variable in the set of all variables).
Definition at line 290 of file CbcBranchBase.hpp.
References variable_.
Referenced by CbcNode::variable().
int CbcBranchingObject::way | ( | ) | const [inline] |
Get the state of the branching object.
Returns a code indicating the active arm of the branching object. The precise meaning is defined in the derived class.
Definition at line 300 of file CbcBranchBase.hpp.
References way_.
Referenced by CbcNode::way().
void CbcBranchingObject::way | ( | int | way | ) | [inline] |
Set the state of the branching object.
See way()
Definition at line 307 of file CbcBranchBase.hpp.
References way_.
double CbcBranchingObject::value | ( | ) | const [inline] |
CbcModel* CbcBranchingObject::model | ( | ) | const [inline] |
CbcObject* CbcBranchingObject::object | ( | ) | const [inline] |
Return pointer back to object which created.
Reimplemented in CbcDynamicPseudoCostBranchingObject.
Definition at line 319 of file CbcBranchBase.hpp.
References originalObject_.
void CbcBranchingObject::setOriginalObject | ( | CbcObject * | object | ) | [inline] |
CbcModel* CbcBranchingObject::model_ [protected] |
The model that owns this branching object.
Definition at line 323 of file CbcBranchBase.hpp.
Referenced by model().
CbcObject* CbcBranchingObject::originalObject_ [protected] |
Pointer back to object which created.
Definition at line 330 of file CbcBranchBase.hpp.
Referenced by object().
int CbcBranchingObject::variable_ [protected] |
Branching variable (0 is first integer).
Definition at line 333 of file CbcBranchBase.hpp.
Referenced by variable().
int CbcBranchingObject::way_ [protected] |
The state of the branching object.
Specifies the active arm of the branching object. Coded as -1 to take the `down' arm, +1 for the `up' arm. `Down' and `up' are defined based on the natural meaning (floor and ceiling, respectively) for a simple integer. The precise meaning is defined in the derived class.
Definition at line 342 of file CbcBranchBase.hpp.
Referenced by way().
double CbcBranchingObject::value_ [protected] |
int CbcBranchingObject::numberBranchesLeft_ [protected] |
Number of arms remaining to be evaluated.
Definition at line 352 of file CbcBranchBase.hpp.
Referenced by numberBranchesLeft(), and resetNumberBranchesLeft().