14 #include "CoinWarmStartBasis.hpp"
15 #include "CoinSearchTree.hpp"
18 class OsiSolverInterface;
19 class OsiSolverBranch;
23 class OsiRowCutDebugger;
24 class CoinWarmStartBasis;
29 class CbcGeneralBranchingObject;
114 int ¤tNumberCuts)
const = 0 ;
116 virtual int applyBounds(
int iColumn,
double & lower,
double & upper,
int force) = 0;
208 void deleteCuts(
int numberToDelete,
int * which);
337 void setParentBasedData();
340 #endif // CbcNodeInfo_H
void unsetParentBasedData()
If we need to take off parent based data.
CbcNode * mutableOwner() const
virtual void applyToModel(CbcModel *model, CoinWarmStartBasis *&basis, CbcCountRowCut **addCuts, int ¤tNumberCuts) const =0
Modify model according to information at node.
void deleteCuts(int numberToDelete, CbcCountRowCut **cuts)
Delete cuts (decrements counts) Slow unless cuts in same order as saved.
CbcCountRowCut ** cuts_
Array of pointers to cuts.
void deactivate(int mode=3)
Deactivate node information.
void decrementCuts(int change=1)
Decrement active cut counts.
const CbcNode * owner() const
int numberPointingToThis() const
Return number of objects pointing to this.
void setNodeNumber(int node)
bool marked() const
Say if marked.
void setNumberBranchesLeft(int value)
Set number of branches left in object.
void setNumberPointingToThis(int number)
Set number of objects pointing to this.
void increment(int amount=1)
Increment number of references.
int nodeNumber_
The node number.
void incrementCuts(int change=1)
Increment active cut counts.
CbcNodeInfo * parent_
parent
int numberBranchesLeft_
Number of branch arms left to explore at this node.
void incrementNumberPointingToThis()
Increment number of objects pointing to this.
CbcCountRowCut ** cuts() const
Array of pointers to cuts.
int decrement(int amount=1)
Decrement number of references and return number left.
CbcNodeInfo * parent() const
Parent of this.
int numberPointingToThis_
Number of other nodes pointing to this node.
const OsiBranchingObject * parentBranch() const
Branching object for the parent.
virtual ~CbcNodeInfo()
Destructor.
void decrementParentCuts(CbcModel *model, int change=1)
Decrement all active cut counts in chain starting at parent.
void nullOwner()
Set owner null.
int active_
Active node information.
void deleteCut(int whichOne)
Really delete a cut.
OsiRowCut augmented with bookkeeping.
virtual CbcNodeInfo * buildRowBasis(CoinWarmStartBasis &basis) const =0
Builds up row basis backwards (until original model).
virtual void allBranchesGone()
Called when number branches left down to zero.
Information required while the node is live.
OsiBranchingObject * parentBranch_
Copy of the branching object of the parent when the node is created.
void initializeInfo(int number)
Initialize reference counts.
int branchedOn()
Say one branch taken.
int numberCuts_
Number of row cuts (this node)
Information required to recreate the subproblem at this node.
CbcNodeInfo()
Default Constructor.
void incrementParentCuts(CbcModel *model, int change=1)
Increment all active cut counts in parent chain.
void throwAway()
Say thrown away.
int numberRows_
Number of rows in problem (before these cuts).
int nodeNumber() const
The node number.
void nullParent()
Set parent null.
virtual CbcNodeInfo * clone() const =0
Clone.
int numberCuts() const
Number of row cuts (this node)
void setNumberCuts(int value)
virtual int applyBounds(int iColumn, double &lower, double &upper, int force)=0
Just apply bounds to one variable - force means overwrite by lower,upper (1=>infeasible) ...
int numberBranchesLeft() const
Return number of branches left in object.
Simple Branch and bound class.
void addCuts(OsiCuts &cuts, int numberToBranch, int numberPointingToThis)
bool allActivated() const
Say if normal.