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