CbcBranchingObject Class Reference

Abstract branching object base class. More...

#include <CbcBranchBase.hpp>

Inheritance diagram for CbcBranchingObject:

Inheritance graph
[legend]
Collaboration diagram for CbcBranchingObject:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 CbcBranchingObject ()
 Default Constructor.
 CbcBranchingObject (CbcModel *model, int variable, int way, double value)
 Constructor.
 CbcBranchingObject (const CbcBranchingObject &)
 Copy constructor.
CbcBranchingObjectoperator= (const CbcBranchingObject &rhs)
 Assignment operator.
virtual CbcBranchingObjectclone () 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.
CbcModelmodel () const
 Return model.
CbcObjectobject () const
 Return pointer back to object which created.
void setOriginalObject (CbcObject *object)
 Set pointer back to object which created.

Protected Attributes

CbcModelmodel_
 The model that owns this branching object.
CbcObjectoriginalObject_
 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.

Detailed Description

Abstract branching object base class.

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.


Constructor & Destructor Documentation

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.


Member Function Documentation

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.

Todo:
The hardwired `2' has to be changed before cbc can do branches with more than two arms.

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.

See also:
way_

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]

Current value.

Definition at line 311 of file CbcBranchBase.hpp.

References value_.

CbcModel* CbcBranchingObject::model (  )  const [inline]

Return model.

Definition at line 315 of file CbcBranchBase.hpp.

References model_.

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]

Set pointer back to object which created.

Definition at line 322 of file CbcBranchBase.hpp.


Member Data Documentation

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]

Current value.

Definition at line 345 of file CbcBranchBase.hpp.

Referenced by value().

int CbcBranchingObject::numberBranchesLeft_ [protected]

Number of arms remaining to be evaluated.

Todo:
Compare with CbcNodeInfo::numberBranchesLeft_, and check for redundancy.

Definition at line 352 of file CbcBranchBase.hpp.

Referenced by numberBranchesLeft(), and resetNumberBranchesLeft().


The documentation for this class was generated from the following file:
Generated on Thu May 15 21:59:49 2008 by  doxygen 1.4.7