Cbc  2.9.9
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Attributes | Private Member Functions | List of all members
CbcFullNodeInfo Class Reference

Information required to recreate the subproblem at this node. More...

#include <CbcFullNodeInfo.hpp>

+ Inheritance diagram for CbcFullNodeInfo:
+ Collaboration diagram for CbcFullNodeInfo:

Public Member Functions

virtual void applyToModel (CbcModel *model, CoinWarmStartBasis *&basis, CbcCountRowCut **addCuts, int &currentNumberCuts) const
 Modify model according to information at node. More...
 
virtual int applyBounds (int iColumn, double &lower, double &upper, int force)
 Just apply bounds to one variable - force means overwrite by lower,upper (1=>infeasible) More...
 
virtual CbcNodeInfobuildRowBasis (CoinWarmStartBasis &basis) const
 Builds up row basis backwards (until original model). More...
 
 CbcFullNodeInfo ()
 
 CbcFullNodeInfo (CbcModel *model, int numberRowsAtContinuous)
 Constructor from continuous or satisfied. More...
 
 CbcFullNodeInfo (const CbcFullNodeInfo &)
 
 ~CbcFullNodeInfo ()
 
virtual CbcNodeInfoclone () const
 Clone. More...
 
const double * lower () const
 Lower bounds. More...
 
void setColLower (int sequence, double value)
 Set a bound. More...
 
double * mutableLower () const
 Mutable lower bounds. More...
 
const double * upper () const
 Upper bounds. More...
 
void setColUpper (int sequence, double value)
 Set a bound. More...
 
double * mutableUpper () const
 Mutable upper bounds. More...
 
- Public Member Functions inherited from CbcNodeInfo
virtual void allBranchesGone ()
 Called when number branches left down to zero. More...
 
void increment (int amount=1)
 Increment number of references. More...
 
int decrement (int amount=1)
 Decrement number of references and return number left. More...
 
void initializeInfo (int number)
 Initialize reference counts. More...
 
int numberBranchesLeft () const
 Return number of branches left in object. More...
 
void setNumberBranchesLeft (int value)
 Set number of branches left in object. More...
 
int numberPointingToThis () const
 Return number of objects pointing to this. More...
 
void setNumberPointingToThis (int number)
 Set number of objects pointing to this. More...
 
void incrementNumberPointingToThis ()
 Increment number of objects pointing to this. More...
 
int branchedOn ()
 Say one branch taken. More...
 
void throwAway ()
 Say thrown away. More...
 
CbcNodeInfoparent () const
 Parent of this. More...
 
void nullParent ()
 Set parent null. More...
 
void addCuts (OsiCuts &cuts, int numberToBranch, int numberPointingToThis)
 
void addCuts (int numberCuts, CbcCountRowCut **cuts, int numberToBranch)
 
void deleteCuts (int numberToDelete, CbcCountRowCut **cuts)
 Delete cuts (decrements counts) Slow unless cuts in same order as saved. More...
 
void deleteCuts (int numberToDelete, int *which)
 
void deleteCut (int whichOne)
 Really delete a cut. More...
 
void decrementCuts (int change=1)
 Decrement active cut counts. More...
 
void incrementCuts (int change=1)
 Increment active cut counts. More...
 
void decrementParentCuts (CbcModel *model, int change=1)
 Decrement all active cut counts in chain starting at parent. More...
 
void incrementParentCuts (CbcModel *model, int change=1)
 Increment all active cut counts in parent chain. More...
 
CbcCountRowCut ** cuts () const
 Array of pointers to cuts. More...
 
int numberCuts () const
 Number of row cuts (this node) More...
 
void setNumberCuts (int value)
 
void nullOwner ()
 Set owner null. More...
 
const CbcNodeowner () const
 
CbcNodemutableOwner () const
 
int nodeNumber () const
 The node number. More...
 
void setNodeNumber (int node)
 
void deactivate (int mode=3)
 Deactivate node information. More...
 
bool allActivated () const
 Say if normal. More...
 
bool marked () const
 Say if marked. More...
 
void mark ()
 Mark. More...
 
void unmark ()
 Unmark. More...
 
bool symmetryWorked () const
 Get symmetry value (true worked at this node) More...
 
void setSymmetryWorked ()
 Say symmetry worked at this node) More...
 
const OsiBranchingObjectparentBranch () const
 Branching object for the parent. More...
 
void unsetParentBasedData ()
 If we need to take off parent based data. More...
 
 CbcNodeInfo ()
 Default Constructor. More...
 
 CbcNodeInfo (const CbcNodeInfo &)
 Copy constructor. More...
 
 CbcNodeInfo (CbcNodeInfo *parent, CbcNode *owner)
 Construct with parent and owner. More...
 
virtual ~CbcNodeInfo ()
 Destructor. More...
 

Protected Attributes

CoinWarmStartBasisbasis_
 Full basis. More...
 
int numberIntegers_
 
double * lower_
 
double * upper_
 
- Protected Attributes inherited from CbcNodeInfo
int numberPointingToThis_
 Number of other nodes pointing to this node. More...
 
CbcNodeInfoparent_
 parent More...
 
OsiBranchingObjectparentBranch_
 Copy of the branching object of the parent when the node is created. More...
 
CbcNodeowner_
 Owner. More...
 
int numberCuts_
 Number of row cuts (this node) More...
 
int nodeNumber_
 The node number. More...
 
CbcCountRowCut ** cuts_
 Array of pointers to cuts. More...
 
int numberRows_
 Number of rows in problem (before these cuts). More...
 
int numberBranchesLeft_
 Number of branch arms left to explore at this node. More...
 
int active_
 Active node information. More...
 

Private Member Functions

CbcFullNodeInfooperator= (const CbcFullNodeInfo &rhs)
 Illegal Assignment operator. More...
 

Detailed Description

Information required to recreate the subproblem at this node.

When a subproblem is initially created, it is represented by a CbcNode object and an attached CbcNodeInfo object.

The CbcNode contains information needed while the subproblem remains live. The CbcNode is deleted when the last branch arm has been evaluated.

The CbcNodeInfo contains information required to maintain the branch-and-cut search tree structure (links and reference counts) and to recreate the subproblem for this node (basis, variable bounds, cutting planes). A CbcNodeInfo object remains in existence until all nodes have been pruned from the subtree rooted at this node.

The principle used to maintain the reference count is that the reference count is always the sum of all potential and actual children of the node. Specifically,

Notice that the active subproblem lives in a sort of limbo, neither a potential or an actual node in the branch-and-cut tree.

CbcNodeInfo objects come in two flavours. A CbcFullNodeInfo object contains a full record of the information required to recreate a subproblem. A CbcPartialNodeInfo object expresses this information in terms of differences from the parent.Holds complete information for recreating a subproblem.

A CbcFullNodeInfo object contains all necessary information (bounds, basis, and cuts) required to recreate a subproblem.

Todo:
While there's no explicit statement, the code often makes the implicit assumption that an CbcFullNodeInfo structure will appear only at the root node of the search tree. Things will break if this assumption is violated.

Definition at line 81 of file CbcFullNodeInfo.hpp.

Constructor & Destructor Documentation

CbcFullNodeInfo::CbcFullNodeInfo ( )
CbcFullNodeInfo::CbcFullNodeInfo ( CbcModel model,
int  numberRowsAtContinuous 
)

Constructor from continuous or satisfied.

CbcFullNodeInfo::CbcFullNodeInfo ( const CbcFullNodeInfo )
CbcFullNodeInfo::~CbcFullNodeInfo ( )

Member Function Documentation

virtual void CbcFullNodeInfo::applyToModel ( CbcModel model,
CoinWarmStartBasis *&  basis,
CbcCountRowCut **  addCuts,
int &  currentNumberCuts 
) const
virtual

Modify model according to information at node.

The routine modifies the model according to bound information at node, creates a new basis according to information at node, but with the size passed in through basis, and adds any cuts to the addCuts array.

Note
The basis passed in via basis is solely a vehicle for passing in the desired basis size. It will be deleted and a new basis returned.

Implements CbcNodeInfo.

virtual int CbcFullNodeInfo::applyBounds ( int  iColumn,
double &  lower,
double &  upper,
int  force 
)
virtual

Just apply bounds to one variable - force means overwrite by lower,upper (1=>infeasible)

Implements CbcNodeInfo.

virtual CbcNodeInfo* CbcFullNodeInfo::buildRowBasis ( CoinWarmStartBasis basis) const
virtual

Builds up row basis backwards (until original model).

Returns NULL or previous one to apply . Depends on Free being 0 and impossible for cuts

Implements CbcNodeInfo.

virtual CbcNodeInfo* CbcFullNodeInfo::clone ( ) const
virtual

Clone.

Implements CbcNodeInfo.

const double* CbcFullNodeInfo::lower ( ) const
inline

Lower bounds.

Definition at line 123 of file CbcFullNodeInfo.hpp.

void CbcFullNodeInfo::setColLower ( int  sequence,
double  value 
)
inline

Set a bound.

Definition at line 127 of file CbcFullNodeInfo.hpp.

double* CbcFullNodeInfo::mutableLower ( ) const
inline

Mutable lower bounds.

Definition at line 130 of file CbcFullNodeInfo.hpp.

const double* CbcFullNodeInfo::upper ( ) const
inline

Upper bounds.

Definition at line 134 of file CbcFullNodeInfo.hpp.

void CbcFullNodeInfo::setColUpper ( int  sequence,
double  value 
)
inline

Set a bound.

Definition at line 138 of file CbcFullNodeInfo.hpp.

double* CbcFullNodeInfo::mutableUpper ( ) const
inline

Mutable upper bounds.

Definition at line 141 of file CbcFullNodeInfo.hpp.

CbcFullNodeInfo& CbcFullNodeInfo::operator= ( const CbcFullNodeInfo rhs)
private

Illegal Assignment operator.

Member Data Documentation

CoinWarmStartBasis* CbcFullNodeInfo::basis_
protected

Full basis.

This MUST BE A POINTER to avoid cutting extra information in derived warm start classes.

Definition at line 151 of file CbcFullNodeInfo.hpp.

int CbcFullNodeInfo::numberIntegers_
protected

Definition at line 152 of file CbcFullNodeInfo.hpp.

double* CbcFullNodeInfo::lower_
protected

Definition at line 154 of file CbcFullNodeInfo.hpp.

double* CbcFullNodeInfo::upper_
protected

Definition at line 155 of file CbcFullNodeInfo.hpp.


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