12#include "CoinWarmStartBasis.hpp"
13#include "CoinSearchTree.hpp"
19class OsiSolverInterface;
24class OsiRowCutDebugger;
25class CoinWarmStartBasis;
30class CbcGeneralBranchingObject;
85 const CoinWarmStartBasis *lastws,
86 const double *lastLower,
const double *lastUpper,
87 int numberOldActiveCuts,
int numberNewCuts);
111 int numberPassesLeft);
139 OsiSolverBranch *&branches,
140 int numberPassesLeft);
169 OsiBranchingInformation *usefulInfo,
233 return (
branch_->numberBranches());
OsiRowCut augmented with bookkeeping.
Simple Branch and bound class.
Information required to recreate the subproblem at this node.
Information required while the node is live.
int numberUnsatisfied_
The number of objects unsatisfied at this node.
void setNumberUnsatisfied(int value)
Set the number of objects unsatisfied at this node.
double objectiveValue() const
CbcNode(const CbcNode &)
Copy constructor.
double guessedObjectiveValue_
Guessed satisfied Objective value.
int nodeNumber_
The node number.
CbcNodeInfo * nodeInfo() const
int depth() const
Depth in branch-and-cut search tree.
void setDepth(int value)
Set depth in branch-and-cut search tree.
CbcNode(CbcModel *model, CbcNode *lastNode)
Construct and increment parent reference count.
void nullNodeInfo()
Nulls out node info.
OsiBranchingObject * modifiableBranchingObject() const
Modifiable branching object for this node.
double sumInfeasibilities() const
Get sum of "infeasibilities" reported by each object.
CbcNode()
Default Constructor.
bool active() const
Returns true if active.
CbcNodeInfo * nodeInfo_
Information to make basis and bounds.
void initializeInfo()
Initialize reference counts in attached CbcNodeInfo.
double sumInfeasibilities_
Sum of "infeasibilities" reported by each object.
void setBranchingObject(OsiBranchingObject *branchingObject)
Set branching object for this node (takes ownership)
int chooseBranch(CbcModel *model, CbcNode *lastNode, int numberPassesLeft)
Create a branching object for the node.
void setSumInfeasibilities(double value)
Set sum of "infeasibilities" reported by each object.
bool onTree() const
Returns true if on tree.
int getState() const
Get state (really for debug)
OsiBranchingObject * branch_
Branching object for this node.
void checkInfo() const
Debug.
double guessedObjectiveValue() const
void setGuessedObjectiveValue(double value)
int depth_
Depth of the node in the search tree.
const OsiBranchingObject * branchingObject() const
Branching object for this node.
void setNodeNumber(int node)
void decrementParentCuts(CbcModel *model, int change=1)
Decrement all active cut counts in chain starting at parent.
int chooseOsiBranch(CbcModel *model, CbcNode *lastNode, OsiBranchingInformation *usefulInfo, int branchState)
Create a branching object for the node.
void setOnTree(bool yesNo)
Sets true if on tree.
int chooseDynamicBranch(CbcModel *model, CbcNode *lastNode, OsiSolverBranch *&branches, int numberPassesLeft)
Create a branching object for the node - when dynamic pseudo costs.
int branch(OsiSolverInterface *solver)
Does next branch and updates state.
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.
int analyze(CbcModel *model, double *results)
void setActive(bool yesNo)
Sets true if active.
int numberUnsatisfied() const
Get the number of objects unsatisfied at this node.
void decrementCuts(int change=1)
Decrement active cut counts.
int nodeNumber() const
The node number.
int chooseClpBranch(CbcModel *model, CbcNode *lastNode)
Create a branching object for the node.
int numberBranches() const
Number of arms defined for the attached OsiBranchingObject.
void setObjectiveValue(double value)
int state_
State 1 - on tree 2 - active.
void setState(int value)
Set state (really for debug)
CbcNode & operator=(const CbcNode &rhs)
Assignment operator.
double checkIsCutoff(double cutoff)
Double checks in case node can change its mind!
double objectiveValue_
Objective value.