Cbc
2.10.10
|
Information required while the node is live. More...
#include <CbcNode.hpp>
Public Member Functions | |
CbcNode () | |
Default Constructor. More... | |
CbcNode (CbcModel *model, CbcNode *lastNode) | |
Construct and increment parent reference count. More... | |
CbcNode (const CbcNode &) | |
Copy constructor. More... | |
CbcNode & | operator= (const CbcNode &rhs) |
Assignment operator. More... | |
~CbcNode () | |
Destructor. More... | |
void | createInfo (CbcModel *model, CbcNode *lastNode, const CoinWarmStartBasis *lastws, const double *lastLower, const double *lastUpper, int numberOldActiveCuts, int numberNewCuts) |
Create a description of the subproblem at this node. More... | |
int | chooseBranch (CbcModel *model, CbcNode *lastNode, int numberPassesLeft) |
Create a branching object for the node. More... | |
int | chooseDynamicBranch (CbcModel *model, CbcNode *lastNode, OsiSolverBranch *&branches, int numberPassesLeft) |
Create a branching object for the node - when dynamic pseudo costs. More... | |
int | chooseOsiBranch (CbcModel *model, CbcNode *lastNode, OsiBranchingInformation *usefulInfo, int branchState) |
Create a branching object for the node. More... | |
int | chooseClpBranch (CbcModel *model, CbcNode *lastNode) |
Create a branching object for the node. More... | |
int | analyze (CbcModel *model, double *results) |
void | decrementCuts (int change=1) |
Decrement active cut counts. More... | |
void | decrementParentCuts (CbcModel *model, int change=1) |
Decrement all active cut counts in chain starting at parent. More... | |
void | nullNodeInfo () |
Nulls out node info. More... | |
void | initializeInfo () |
Initialize reference counts in attached CbcNodeInfo. More... | |
int | branch (OsiSolverInterface *solver) |
Does next branch and updates state. More... | |
double | checkIsCutoff (double cutoff) |
Double checks in case node can change its mind! Returns objective value Can change objective etc. More... | |
CbcNodeInfo * | nodeInfo () const |
double | objectiveValue () const |
void | setObjectiveValue (double value) |
int | numberBranches () const |
Number of arms defined for the attached OsiBranchingObject. More... | |
int | way () const |
int | depth () const |
Depth in branch-and-cut search tree. More... | |
void | setDepth (int value) |
Set depth in branch-and-cut search tree. More... | |
int | numberUnsatisfied () const |
Get the number of objects unsatisfied at this node. More... | |
void | setNumberUnsatisfied (int value) |
Set the number of objects unsatisfied at this node. More... | |
double | sumInfeasibilities () const |
Get sum of "infeasibilities" reported by each object. More... | |
void | setSumInfeasibilities (double value) |
Set sum of "infeasibilities" reported by each object. More... | |
double | guessedObjectiveValue () const |
void | setGuessedObjectiveValue (double value) |
const OsiBranchingObject * | branchingObject () const |
Branching object for this node. More... | |
OsiBranchingObject * | modifiableBranchingObject () const |
Modifiable branching object for this node. More... | |
void | setBranchingObject (OsiBranchingObject *branchingObject) |
Set branching object for this node (takes ownership) More... | |
int | nodeNumber () const |
The node number. More... | |
void | setNodeNumber (int node) |
bool | onTree () const |
Returns true if on tree. More... | |
void | setOnTree (bool yesNo) |
Sets true if on tree. More... | |
bool | active () const |
Returns true if active. More... | |
void | setActive (bool yesNo) |
Sets true if active. More... | |
int | getState () const |
Get state (really for debug) More... | |
void | setState (int value) |
Set state (really for debug) More... | |
void | print () const |
Print. More... | |
void | checkInfo () const |
Debug. More... | |
Private Attributes | |
CbcNodeInfo * | nodeInfo_ |
Information to make basis and bounds. More... | |
double | objectiveValue_ |
Objective value. More... | |
double | guessedObjectiveValue_ |
Guessed satisfied Objective value. More... | |
double | sumInfeasibilities_ |
Sum of "infeasibilities" reported by each object. More... | |
OsiBranchingObject * | branch_ |
Branching object for this node. More... | |
int | depth_ |
Depth of the node in the search tree. More... | |
int | numberUnsatisfied_ |
The number of objects unsatisfied at this node. More... | |
int | nodeNumber_ |
The node number. More... | |
int | state_ |
State 1 - on tree 2 - active. More... | |
Information required while the node is live.
When a subproblem is initially created, it is represented by an CbcNode object and an attached CbcNodeInfo object.
The CbcNode contains information (depth, branching instructions), that's needed while the subproblem remains ‘live’, i.e., while the subproblem is not fathomed and there are branch arms still be be evaluated. The CbcNode is deleted when the last branch arm has been evaluated.
The CbcNodeInfo object contains the information needed to maintain the search tree and recreate the subproblem for the node. It remains in existence until there are no nodes remaining in the subtree rooted at this node.
Definition at line 49 of file CbcNode.hpp.
CbcNode::CbcNode | ( | ) |
Default Constructor.
Construct and increment parent reference count.
CbcNode::CbcNode | ( | const CbcNode & | ) |
Copy constructor.
CbcNode::~CbcNode | ( | ) |
Destructor.
void CbcNode::createInfo | ( | CbcModel * | model, |
CbcNode * | lastNode, | ||
const CoinWarmStartBasis * | lastws, | ||
const double * | lastLower, | ||
const double * | lastUpper, | ||
int | numberOldActiveCuts, | ||
int | numberNewCuts | ||
) |
Create a description of the subproblem at this node.
The CbcNodeInfo structure holds the information (basis & variable bounds) required to recreate the subproblem for this node. It also links the node to its parent (via the parent's CbcNodeInfo object).
If lastNode == NULL, a CbcFullNodeInfo object will be created. All parameters except model
are unused.
If lastNode != NULL, a CbcPartialNodeInfo object will be created. Basis and bounds information will be stored in the form of differences between the parent subproblem and this subproblem. (More precisely, lastws
, lastUpper
, lastLower
, numberOldActiveCuts
, and numberNewCuts
are used.)
Create a branching object for the node.
The routine scans the object list of the model and selects a set of unsatisfied objects as candidates for branching. The candidates are evaluated, and an appropriate branch object is installed.
The numberPassesLeft is decremented to stop fixing one variable each time and going on and on (e.g. for stock cutting, air crew scheduling)
If evaluation determines that an object is monotone or infeasible, the routine returns immediately. In the case of a monotone object, the branch object has already been called to modify the model.
Return value:
int CbcNode::chooseDynamicBranch | ( | CbcModel * | model, |
CbcNode * | lastNode, | ||
OsiSolverBranch *& | branches, | ||
int | numberPassesLeft | ||
) |
Create a branching object for the node - when dynamic pseudo costs.
The routine scans the object list of the model and selects a set of unsatisfied objects as candidates for branching. The candidates are evaluated, and an appropriate branch object is installed. This version gives preference in evaluation to variables which have not been evaluated many times. It also uses numberStrong to say give up if last few tries have not changed incumbent. See Achterberg, Koch and Martin.
The numberPassesLeft is decremented to stop fixing one variable each time and going on and on (e.g. for stock cutting, air crew scheduling)
If evaluation determines that an object is monotone or infeasible, the routine returns immediately. In the case of a monotone object, the branch object has already been called to modify the model.
Return value:
int CbcNode::chooseOsiBranch | ( | CbcModel * | model, |
CbcNode * | lastNode, | ||
OsiBranchingInformation * | usefulInfo, | ||
int | branchState | ||
) |
Create a branching object for the node.
The routine scans the object list of the model and selects a set of unsatisfied objects as candidates for branching. The candidates are evaluated, and an appropriate branch object is installed.
The numberPassesLeft is decremented to stop fixing one variable each time and going on and on (e.g. for stock cutting, air crew scheduling)
If evaluation determines that an object is monotone or infeasible, the routine returns immediately. In the case of a monotone object, the branch object has already been called to modify the model.
Return value:
Branch state:
Create a branching object for the node.
The routine scans the object list of the model and selects a set of unsatisfied objects as candidates for branching. It then solves a series of problems and a CbcGeneral branch object is installed.
If evaluation determines that an object is infeasible, the routine returns immediately.
Return value:
int CbcNode::analyze | ( | CbcModel * | model, |
double * | results | ||
) |
void CbcNode::decrementCuts | ( | int | change = 1 | ) |
Decrement active cut counts.
void CbcNode::decrementParentCuts | ( | CbcModel * | model, |
int | change = 1 |
||
) |
Decrement all active cut counts in chain starting at parent.
void CbcNode::nullNodeInfo | ( | ) |
Nulls out node info.
void CbcNode::initializeInfo | ( | ) |
Initialize reference counts in attached CbcNodeInfo.
This is a convenience routine, which will initialize the reference counts in the attached CbcNodeInfo object based on the attached OsiBranchingObject.
int CbcNode::branch | ( | OsiSolverInterface * | solver | ) |
Does next branch and updates state.
double CbcNode::checkIsCutoff | ( | double | cutoff | ) |
Double checks in case node can change its mind! Returns objective value Can change objective etc.
|
inline |
Definition at line 215 of file CbcNode.hpp.
|
inline |
Definition at line 221 of file CbcNode.hpp.
|
inline |
Definition at line 225 of file CbcNode.hpp.
|
inline |
Number of arms defined for the attached OsiBranchingObject.
Definition at line 230 of file CbcNode.hpp.
int CbcNode::way | ( | ) | const |
|
inline |
Depth in branch-and-cut search tree.
Definition at line 246 of file CbcNode.hpp.
|
inline |
Set depth in branch-and-cut search tree.
Definition at line 251 of file CbcNode.hpp.
|
inline |
Get the number of objects unsatisfied at this node.
Definition at line 256 of file CbcNode.hpp.
|
inline |
Set the number of objects unsatisfied at this node.
Definition at line 261 of file CbcNode.hpp.
|
inline |
Get sum of "infeasibilities" reported by each object.
Definition at line 266 of file CbcNode.hpp.
|
inline |
Set sum of "infeasibilities" reported by each object.
Definition at line 271 of file CbcNode.hpp.
|
inline |
Definition at line 276 of file CbcNode.hpp.
|
inline |
Definition at line 280 of file CbcNode.hpp.
|
inline |
Branching object for this node.
Definition at line 285 of file CbcNode.hpp.
|
inline |
Modifiable branching object for this node.
Definition at line 290 of file CbcNode.hpp.
|
inline |
Set branching object for this node (takes ownership)
Definition at line 295 of file CbcNode.hpp.
|
inline |
The node number.
Definition at line 300 of file CbcNode.hpp.
|
inline |
Definition at line 304 of file CbcNode.hpp.
|
inline |
Returns true if on tree.
Definition at line 309 of file CbcNode.hpp.
|
inline |
Sets true if on tree.
Definition at line 314 of file CbcNode.hpp.
|
inline |
Returns true if active.
Definition at line 322 of file CbcNode.hpp.
|
inline |
Sets true if active.
Definition at line 327 of file CbcNode.hpp.
|
inline |
Get state (really for debug)
Definition at line 335 of file CbcNode.hpp.
|
inline |
Set state (really for debug)
Definition at line 340 of file CbcNode.hpp.
void CbcNode::print | ( | ) | const |
Print.
|
inline |
Debug.
Definition at line 347 of file CbcNode.hpp.
|
private |
Information to make basis and bounds.
Definition at line 355 of file CbcNode.hpp.
|
private |
Objective value.
Definition at line 357 of file CbcNode.hpp.
|
private |
Guessed satisfied Objective value.
Definition at line 359 of file CbcNode.hpp.
|
private |
Sum of "infeasibilities" reported by each object.
Definition at line 361 of file CbcNode.hpp.
|
private |
Branching object for this node.
Definition at line 363 of file CbcNode.hpp.
|
private |
Depth of the node in the search tree.
Definition at line 365 of file CbcNode.hpp.
|
private |
The number of objects unsatisfied at this node.
Definition at line 367 of file CbcNode.hpp.
|
private |
The node number.
Definition at line 369 of file CbcNode.hpp.
|
private |
State 1 - on tree 2 - active.
Definition at line 374 of file CbcNode.hpp.