Public Member Functions | Protected Attributes | List of all members
CbcBranchingObject Class Referenceabstract

Abstract branching object base class Now just difference with OsiBranchingObject. More...

#include <CbcBranchingObject.hpp>

Inheritance diagram for CbcBranchingObject:
CbcCliqueBranchingObject CbcCliqueBranchingObject CbcCutBranchingObject CbcCutBranchingObject CbcDummyBranchingObject CbcDummyBranchingObject CbcFixingBranchingObject CbcFixingBranchingObject CbcIntegerBranchingObject CbcIntegerBranchingObject CbcLinkBranchingObject CbcLongCliqueBranchingObject CbcLongCliqueBranchingObject CbcLotsizeBranchingObject CbcLotsizeBranchingObject CbcNWayBranchingObject CbcNWayBranchingObject CbcSOSBranchingObject CbcSOSBranchingObject

Public Member Functions

 CbcBranchingObject ()
 Default Constructor. More...
 
 CbcBranchingObject (CbcModel *model, int variable, int way, double value)
 Constructor. More...
 
 CbcBranchingObject (const CbcBranchingObject &)
 Copy constructor. More...
 
CbcBranchingObjectoperator= (const CbcBranchingObject &rhs)
 Assignment operator. More...
 
virtual CbcBranchingObjectclone () const =0
 Clone. More...
 
virtual ~CbcBranchingObject ()
 Destructor. More...
 
virtual int fillStrongInfo (CbcStrongInfo &)
 Some branchingObjects may claim to be able to skip strong branching. More...
 
void resetNumberBranchesLeft ()
 Reset number of branches left to original. More...
 
void setNumberBranches (int value)
 Set number of branches to do. More...
 
virtual double branch ()=0
 Execute the actions required to branch, as specified by the current state of the branching object, and advance the object's state. More...
 
virtual double branch (OsiSolverInterface *)
 Execute the actions required to branch, as specified by the current state of the branching object, and advance the object's state. More...
 
virtual void fix (OsiSolverInterface *, double *, double *, int) const
 Update bounds in solver as in 'branch' and update given bounds. More...
 
virtual bool tighten (OsiSolverInterface *)
 Change (tighten) bounds in object to reflect bounds in solver. More...
 
virtual void previousBranch ()
 Reset every information so that the branching object appears to point to the previous child. More...
 
virtual void print () const
 Print something about branch - only if log level high. More...
 
int variable () const
 Index identifying the associated CbcObject within its class. More...
 
int way () const
 Get the state of the branching object. More...
 
void way (int way)
 Set the state of the branching object. More...
 
void setModel (CbcModel *model)
 update model More...
 
CbcModelmodel () const
 Return model. More...
 
CbcObjectobject () const
 Return pointer back to object which created. More...
 
void setOriginalObject (CbcObject *object)
 Set pointer back to object which created. More...
 
virtual CbcBranchObjType type () const =0
 Return the type (an integer identifier) of this. More...
 
virtual int compareOriginalObject (const CbcBranchingObject *brObj) const
 Compare the original object of this with the original object of brObj. More...
 
virtual CbcRangeCompare compareBranchingObject (const CbcBranchingObject *brObj, const bool replaceIfOverlap=false)=0
 Compare the this with brObj. More...
 
 CbcBranchingObject ()
 Default Constructor. More...
 
 CbcBranchingObject (CbcModel *model, int variable, int way, double value)
 Constructor. More...
 
 CbcBranchingObject (const CbcBranchingObject &)
 Copy constructor. More...
 
CbcBranchingObjectoperator= (const CbcBranchingObject &rhs)
 Assignment operator. More...
 
virtual CbcBranchingObjectclone () const =0
 Clone. More...
 
virtual ~CbcBranchingObject ()
 Destructor. More...
 
virtual int fillStrongInfo (CbcStrongInfo &)
 Some branchingObjects may claim to be able to skip strong branching. More...
 
void resetNumberBranchesLeft ()
 Reset number of branches left to original. More...
 
void setNumberBranches (int value)
 Set number of branches to do. More...
 
virtual double branch ()=0
 Execute the actions required to branch, as specified by the current state of the branching object, and advance the object's state. More...
 
virtual double branch (OsiSolverInterface *)
 Execute the actions required to branch, as specified by the current state of the branching object, and advance the object's state. More...
 
virtual void fix (OsiSolverInterface *, double *, double *, int) const
 Update bounds in solver as in 'branch' and update given bounds. More...
 
virtual bool tighten (OsiSolverInterface *)
 Change (tighten) bounds in object to reflect bounds in solver. More...
 
virtual void previousBranch ()
 Reset every information so that the branching object appears to point to the previous child. More...
 
virtual void print () const
 Print something about branch - only if log level high. More...
 
int variable () const
 Index identifying the associated CbcObject within its class. More...
 
int way () const
 Get the state of the branching object. More...
 
void way (int way)
 Set the state of the branching object. More...
 
void setModel (CbcModel *model)
 update model More...
 
CbcModelmodel () const
 Return model. More...
 
CbcObjectobject () const
 Return pointer back to object which created. More...
 
void setOriginalObject (CbcObject *object)
 Set pointer back to object which created. More...
 
virtual CbcBranchObjType type () const =0
 Return the type (an integer identifier) of this. More...
 
virtual int compareOriginalObject (const CbcBranchingObject *brObj) const
 Compare the original object of this with the original object of brObj. More...
 
virtual CbcRangeCompare compareBranchingObject (const CbcBranchingObject *brObj, const bool replaceIfOverlap=false)=0
 Compare the this with brObj. More...
 

Protected Attributes

CbcModelmodel_
 The model that owns this branching object. More...
 
CbcObjectoriginalCbcObject_
 Pointer back to object which created. More...
 
int variable_
 Branching variable (0 is first integer) More...
 
int way_
 The state of the branching object. More...
 

Detailed Description

Abstract branching object base class Now just difference with OsiBranchingObject.

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 47 of file CbcBranchingObject.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.

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
virtual int CbcBranchingObject::fillStrongInfo ( CbcStrongInfo )
inlinevirtual

Some branchingObjects may claim to be able to skip strong branching.

If so they have to fill in CbcStrongInfo. The object mention in incoming CbcStrongInfo must match. Returns nonzero if skip is wanted

Reimplemented in CbcDynamicPseudoCostBranchingObject, and CbcDynamicPseudoCostBranchingObject.

Definition at line 73 of file CbcBranchingObject.hpp.

void CbcBranchingObject::resetNumberBranchesLeft ( )
inline

Reset number of branches left to original.

Definition at line 77 of file CbcBranchingObject.hpp.

void CbcBranchingObject::setNumberBranches ( int  value)
inline

Set number of branches to do.

Definition at line 81 of file CbcBranchingObject.hpp.

virtual double CbcBranchingObject::branch ( )
pure virtual
virtual double CbcBranchingObject::branch ( OsiSolverInterface *  )
inlinevirtual

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

Definition at line 99 of file CbcBranchingObject.hpp.

virtual void CbcBranchingObject::fix ( OsiSolverInterface *  ,
double *  ,
double *  ,
int   
) const
inlinevirtual

Update bounds in solver as in 'branch' and update given bounds.

branchState is -1 for 'down' +1 for 'up'

Reimplemented in CbcSOSBranchingObject, CbcSOSBranchingObject, CbcIntegerBranchingObject, and CbcIntegerBranchingObject.

Definition at line 104 of file CbcBranchingObject.hpp.

virtual bool CbcBranchingObject::tighten ( OsiSolverInterface *  )
inlinevirtual

Change (tighten) bounds in object to reflect bounds in solver.

Return true if now fixed

Reimplemented in CbcIntegerBranchingObject, and CbcIntegerBranchingObject.

Definition at line 110 of file CbcBranchingObject.hpp.

virtual void CbcBranchingObject::previousBranch ( )
inlinevirtual

Reset every information so that the branching object appears to point to the previous child.

This method does not need to modify anything in any solver.

Reimplemented in CbcSOSBranchingObject, and CbcSOSBranchingObject.

Definition at line 115 of file CbcBranchingObject.hpp.

virtual void CbcBranchingObject::print ( ) const
inlinevirtual

Print something about branch - only if log level high.

Definition at line 124 of file CbcBranchingObject.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 137 of file CbcBranchingObject.hpp.

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 148 of file CbcBranchingObject.hpp.

void CbcBranchingObject::way ( int  way)
inline

Set the state of the branching object.

See way()

Definition at line 156 of file CbcBranchingObject.hpp.

void CbcBranchingObject::setModel ( CbcModel model)
inline

update model

Definition at line 161 of file CbcBranchingObject.hpp.

CbcModel* CbcBranchingObject::model ( ) const
inline

Return model.

Definition at line 165 of file CbcBranchingObject.hpp.

CbcObject* CbcBranchingObject::object ( ) const
inline

Return pointer back to object which created.

Definition at line 170 of file CbcBranchingObject.hpp.

void CbcBranchingObject::setOriginalObject ( CbcObject object)
inline

Set pointer back to object which created.

Definition at line 174 of file CbcBranchingObject.hpp.

virtual CbcBranchObjType CbcBranchingObject::type ( ) const
pure virtual
virtual int CbcBranchingObject::compareOriginalObject ( const CbcBranchingObject brObj) const
inlinevirtual

Compare the original object of this with the original object of brObj.

Assumes that there is an ordering of the original objects. This method should be invoked only if this and brObj are of the same type. Return negative/0/positive depending on whether this is smaller/same/larger than the argument.

Reimplemented in CbcLongCliqueBranchingObject, CbcLongCliqueBranchingObject, CbcSOSBranchingObject, CbcSOSBranchingObject, CbcCliqueBranchingObject, CbcCliqueBranchingObject, CbcCutBranchingObject, CbcCutBranchingObject, CbcNWayBranchingObject, CbcNWayBranchingObject, CbcFixingBranchingObject, CbcFixingBranchingObject, CbcDummyBranchingObject, and CbcDummyBranchingObject.

Definition at line 193 of file CbcBranchingObject.hpp.

virtual CbcRangeCompare CbcBranchingObject::compareBranchingObject ( const CbcBranchingObject brObj,
const bool  replaceIfOverlap = false 
)
pure virtual

Compare the this with brObj.

this and brObj must be of the same type and must have the same original object, but they may have different feasible regions. Return the appropriate CbcRangeCompare value (first argument being the sub/superset if that's the case). In case of overlap (and if replaceIfOverlap is true) replace the current branching object with one whose feasible region is the overlap.

Implemented in CbcIntegerPseudoCostBranchingObject, CbcIntegerPseudoCostBranchingObject, CbcLongCliqueBranchingObject, CbcLongCliqueBranchingObject, CbcSOSBranchingObject, CbcSOSBranchingObject, CbcLotsizeBranchingObject, CbcLotsizeBranchingObject, CbcCliqueBranchingObject, CbcCliqueBranchingObject, CbcCutBranchingObject, CbcCutBranchingObject, CbcNWayBranchingObject, CbcNWayBranchingObject, CbcIntegerBranchingObject, CbcIntegerBranchingObject, CbcLinkBranchingObject, CbcFixingBranchingObject, CbcFixingBranchingObject, CbcDummyBranchingObject, and CbcDummyBranchingObject.

CbcBranchingObject& CbcBranchingObject::operator= ( const CbcBranchingObject rhs)

Assignment operator.

virtual CbcBranchingObject* CbcBranchingObject::clone ( ) const
pure virtual
virtual int CbcBranchingObject::fillStrongInfo ( CbcStrongInfo )
inlinevirtual

Some branchingObjects may claim to be able to skip strong branching.

If so they have to fill in CbcStrongInfo. The object mention in incoming CbcStrongInfo must match. Returns nonzero if skip is wanted

Reimplemented in CbcDynamicPseudoCostBranchingObject, and CbcDynamicPseudoCostBranchingObject.

Definition at line 73 of file CbcBranchingObject.hpp.

void CbcBranchingObject::resetNumberBranchesLeft ( )
inline

Reset number of branches left to original.

Definition at line 77 of file CbcBranchingObject.hpp.

void CbcBranchingObject::setNumberBranches ( int  value)
inline

Set number of branches to do.

Definition at line 81 of file CbcBranchingObject.hpp.

virtual double CbcBranchingObject::branch ( )
pure virtual
virtual double CbcBranchingObject::branch ( OsiSolverInterface *  )
inlinevirtual

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

Definition at line 99 of file CbcBranchingObject.hpp.

virtual void CbcBranchingObject::fix ( OsiSolverInterface *  ,
double *  ,
double *  ,
int   
) const
inlinevirtual

Update bounds in solver as in 'branch' and update given bounds.

branchState is -1 for 'down' +1 for 'up'

Reimplemented in CbcSOSBranchingObject, CbcSOSBranchingObject, CbcIntegerBranchingObject, and CbcIntegerBranchingObject.

Definition at line 104 of file CbcBranchingObject.hpp.

virtual bool CbcBranchingObject::tighten ( OsiSolverInterface *  )
inlinevirtual

Change (tighten) bounds in object to reflect bounds in solver.

Return true if now fixed

Reimplemented in CbcIntegerBranchingObject, and CbcIntegerBranchingObject.

Definition at line 110 of file CbcBranchingObject.hpp.

virtual void CbcBranchingObject::previousBranch ( )
inlinevirtual

Reset every information so that the branching object appears to point to the previous child.

This method does not need to modify anything in any solver.

Reimplemented in CbcSOSBranchingObject, and CbcSOSBranchingObject.

Definition at line 115 of file CbcBranchingObject.hpp.

virtual void CbcBranchingObject::print ( ) const
inlinevirtual

Print something about branch - only if log level high.

Definition at line 124 of file CbcBranchingObject.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 137 of file CbcBranchingObject.hpp.

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 148 of file CbcBranchingObject.hpp.

void CbcBranchingObject::way ( int  way)
inline

Set the state of the branching object.

See way()

Definition at line 156 of file CbcBranchingObject.hpp.

void CbcBranchingObject::setModel ( CbcModel model)
inline

update model

Definition at line 161 of file CbcBranchingObject.hpp.

CbcModel* CbcBranchingObject::model ( ) const
inline

Return model.

Definition at line 165 of file CbcBranchingObject.hpp.

CbcObject* CbcBranchingObject::object ( ) const
inline

Return pointer back to object which created.

Definition at line 170 of file CbcBranchingObject.hpp.

void CbcBranchingObject::setOriginalObject ( CbcObject object)
inline

Set pointer back to object which created.

Definition at line 174 of file CbcBranchingObject.hpp.

virtual CbcBranchObjType CbcBranchingObject::type ( ) const
pure virtual
virtual int CbcBranchingObject::compareOriginalObject ( const CbcBranchingObject brObj) const
inlinevirtual

Compare the original object of this with the original object of brObj.

Assumes that there is an ordering of the original objects. This method should be invoked only if this and brObj are of the same type. Return negative/0/positive depending on whether this is smaller/same/larger than the argument.

Reimplemented in CbcLongCliqueBranchingObject, CbcLongCliqueBranchingObject, CbcSOSBranchingObject, CbcSOSBranchingObject, CbcCliqueBranchingObject, CbcCliqueBranchingObject, CbcCutBranchingObject, CbcCutBranchingObject, CbcNWayBranchingObject, CbcNWayBranchingObject, CbcFixingBranchingObject, CbcFixingBranchingObject, CbcDummyBranchingObject, and CbcDummyBranchingObject.

Definition at line 193 of file CbcBranchingObject.hpp.

virtual CbcRangeCompare CbcBranchingObject::compareBranchingObject ( const CbcBranchingObject brObj,
const bool  replaceIfOverlap = false 
)
pure virtual

Compare the this with brObj.

this and brObj must be of the same type and must have the same original object, but they may have different feasible regions. Return the appropriate CbcRangeCompare value (first argument being the sub/superset if that's the case). In case of overlap (and if replaceIfOverlap is true) replace the current branching object with one whose feasible region is the overlap.

Implemented in CbcIntegerPseudoCostBranchingObject, CbcIntegerPseudoCostBranchingObject, CbcLongCliqueBranchingObject, CbcLongCliqueBranchingObject, CbcSOSBranchingObject, CbcSOSBranchingObject, CbcLotsizeBranchingObject, CbcLotsizeBranchingObject, CbcCliqueBranchingObject, CbcCliqueBranchingObject, CbcCutBranchingObject, CbcCutBranchingObject, CbcNWayBranchingObject, CbcNWayBranchingObject, CbcIntegerBranchingObject, CbcIntegerBranchingObject, CbcLinkBranchingObject, CbcFixingBranchingObject, CbcFixingBranchingObject, CbcDummyBranchingObject, and CbcDummyBranchingObject.

Member Data Documentation

CbcModel * CbcBranchingObject::model_
protected

The model that owns this branching object.

Definition at line 212 of file CbcBranchingObject.hpp.

CbcObject * CbcBranchingObject::originalCbcObject_
protected

Pointer back to object which created.

Definition at line 214 of file CbcBranchingObject.hpp.

int CbcBranchingObject::variable_
protected

Branching variable (0 is first integer)

Definition at line 217 of file CbcBranchingObject.hpp.

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 226 of file CbcBranchingObject.hpp.


The documentation for this class was generated from the following files: