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);
345 void setParentBasedData();
348 #endif // CbcNodeInfo_H bool allActivated() const
Say if normal.
void unsetParentBasedData()
If we need to take off parent based data.
int numberPointingToThis() const
Return number of objects pointing to this.
int numberBranchesLeft() const
Return number of branches left in object.
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.
CbcNodeInfo * parent() const
Parent of this.
void setNodeNumber(int node)
void setNumberBranchesLeft(int value)
Set number of branches left in object.
void setNumberPointingToThis(int number)
Set number of objects pointing to this.
int numberCuts() const
Number of row cuts (this node)
void increment(int amount=1)
Increment number of references.
int nodeNumber_
The node number.
void incrementCuts(int change=1)
Increment active cut counts.
void setSymmetryWorked()
Say symmetry worked at this node)
CbcNodeInfo * parent_
parent
int numberBranchesLeft_
Number of branch arms left to explore at this node.
void incrementNumberPointingToThis()
Increment number of objects pointing to this.
int decrement(int amount=1)
Decrement number of references and return number left.
int nodeNumber() const
The node number.
int numberPointingToThis_
Number of other nodes pointing to this node.
CbcCountRowCut ** cuts() const
Array of pointers to cuts.
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.
bool symmetryWorked() const
Get symmetry value (true worked at this node)
void deleteCut(int whichOne)
Really delete a cut.
OsiRowCut augmented with bookkeeping.
const OsiBranchingObject * parentBranch() const
Branching object for the parent.
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.
const CbcNode * owner() const
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.
CbcNode * mutableOwner() const
void throwAway()
Say thrown away.
bool marked() const
Say if marked.
int numberRows_
Number of rows in problem (before these cuts).
void nullParent()
Set parent null.
virtual CbcNodeInfo * clone() const =0
Clone.
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) ...
Simple Branch and bound class.
void addCuts(OsiCuts &cuts, int numberToBranch, int numberPointingToThis)