8 #ifndef CbcGeneralDepth_H
9 #define CbcGeneralDepth_H
35 CbcGeneralDepth(
CbcModel *model,
int maximumDepth);
38 CbcGeneralDepth(
const CbcGeneralDepth &);
44 CbcGeneralDepth &
operator=(
const CbcGeneralDepth &rhs);
51 int &preferredWay)
const;
60 inline int maximumNodes()
const
65 inline int maximumDepth()
const
70 inline void setMaximumDepth(
int value)
72 maximumDepth_ = value;
75 inline int numberNodes()
const
80 inline int whichSolution()
const
82 return whichSolution_;
85 inline ClpNode *nodeInfo(
int which)
87 return nodeInfo_->nodeInfo_[which];
100 mutable int whichSolution_;
102 mutable int numberNodes_;
114 CbcGeneralBranchingObject();
117 CbcGeneralBranchingObject(
CbcModel *model);
120 CbcGeneralBranchingObject(
const CbcGeneralBranchingObject &);
123 CbcGeneralBranchingObject &
operator=(
const CbcGeneralBranchingObject &rhs);
129 virtual ~CbcGeneralBranchingObject();
141 virtual void print();
143 void state(
double &objectiveValue,
double &sumInfeasibilities,
144 int &numberUnsatisfied,
int which)
const;
146 inline void setNode(
CbcNode *node)
175 inline int numberSubProblems()
const
177 return numberSubProblems_;
180 inline int decrementNumberLeft()
183 return numberSubLeft_;
186 inline int whichNode()
const
191 inline void setWhichNode(
int value)
196 const CbcSubProblem *subProblem(
int which)
const
198 return subProblems_ + which;
204 CbcSubProblem *subProblems_;
208 int numberSubProblems_;
223 CbcOneGeneralBranchingObject();
226 CbcOneGeneralBranchingObject(
CbcModel *model,
227 CbcGeneralBranchingObject *
object,
231 CbcOneGeneralBranchingObject(
const CbcOneGeneralBranchingObject &);
234 CbcOneGeneralBranchingObject &
operator=(
const CbcOneGeneralBranchingObject &rhs);
240 virtual ~CbcOneGeneralBranchingObject();
252 virtual void print();
281 CbcGeneralBranchingObject *object_;
285 #endif //COIN_HAS_CLP
virtual CbcBranchingObject * clone() const =0
Clone.
Abstract branching object base class Now just difference with OsiBranchingObject. ...
CbcGeneral & operator=(const CbcGeneral &rhs)
virtual void print() const
Print something about branch - only if log level high.
virtual void checkIsCutoff(double)
Double checks in case node can change its mind! Returns objective value Can change objective etc...
virtual CbcBranchObjType type() const =0
Return the type (an integer identifier) of this.
double infeasibility() const
Return infeasibility.
virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way)
Creates a branching object.
double value() const
Current value.
virtual void feasibleRegion()=0
For the variable(s) referenced by the object, look at the current solution and set bounds to match th...
Abstract Base Class for describing an interface to a solver.
virtual CbcRangeCompare compareBranchingObject(const CbcBranchingObject *brObj, const bool replaceIfOverlap=false)=0
Compare the this with brObj.
virtual void feasibleRegion()=0
This looks at solution and sets bounds to contain solution.
virtual CbcObject * clone() const =0
Clone.
CbcBranchingObject & operator=(const CbcBranchingObject &rhs)
Assignment operator.
virtual void redoSequenceEtc(CbcModel *model, int numberColumns, const int *originalColumns)=0
Redoes data when sequence numbers change.
Information required while the node is live.
Define a catch all class.
virtual int compareOriginalObject(const CbcBranchingObject *brObj) const
Compare the original object of this with the original object of brObj.
Simple Branch and bound class.
virtual double branch()=0
Execute the actions required to branch, as specified by the current state of the branching object...