8 #ifndef CbcGeneralDepth_H
9 #define CbcGeneralDepth_H
20 #include "ClpSimplex.hpp"
21 #include "ClpNode.hpp"
37 CbcGeneralDepth (
CbcModel * model,
int maximumDepth);
40 CbcGeneralDepth (
const CbcGeneralDepth &);
46 CbcGeneralDepth &
operator=(
const CbcGeneralDepth& rhs);
52 virtual double infeasibility(
const OsiBranchingInformation * info,
53 int &preferredWay)
const;
62 inline int maximumNodes()
const {
66 inline int maximumDepth()
const {
70 inline void setMaximumDepth(
int value) {
71 maximumDepth_ = value;
74 inline int numberNodes()
const {
78 inline int whichSolution()
const {
79 return whichSolution_;
82 inline ClpNode * nodeInfo(
int which) {
83 return nodeInfo_->nodeInfo_[which];
96 mutable int whichSolution_;
98 mutable int numberNodes_;
100 mutable ClpNodeStuff * nodeInfo_;
111 CbcGeneralBranchingObject ();
114 CbcGeneralBranchingObject (
CbcModel * model);
117 CbcGeneralBranchingObject (
const CbcGeneralBranchingObject &);
120 CbcGeneralBranchingObject &
operator=(
const CbcGeneralBranchingObject& rhs);
126 virtual ~CbcGeneralBranchingObject ();
133 virtual void checkIsCutoff(
double cutoff);
138 virtual void print();
140 void state(
double & objectiveValue,
double & sumInfeasibilities,
141 int & numberUnsatisfied,
int which)
const;
143 inline void setNode(
CbcNode * node) {
171 inline int numberSubProblems()
const {
172 return numberSubProblems_;
175 inline int decrementNumberLeft() {
177 return numberSubLeft_;
180 inline int whichNode()
const {
184 inline void setWhichNode(
int value) {
188 const CbcSubProblem * subProblem(
int which)
const {
189 return subProblems_ + which;
195 CbcSubProblem * subProblems_;
199 int numberSubProblems_;
215 CbcOneGeneralBranchingObject ();
218 CbcOneGeneralBranchingObject (
CbcModel * model,
219 CbcGeneralBranchingObject *
object,
223 CbcOneGeneralBranchingObject (
const CbcOneGeneralBranchingObject &);
226 CbcOneGeneralBranchingObject &
operator=(
const CbcOneGeneralBranchingObject& rhs);
232 virtual ~CbcOneGeneralBranchingObject ();
239 virtual void checkIsCutoff(
double cutoff);
244 virtual void print();
273 CbcGeneralBranchingObject * object_;
277 #endif //COIN_HAS_CLP
virtual void feasibleRegion()=0
For the variable(s) referenced by the object, look at the current solution and set bounds to match th...
virtual int compareOriginalObject(const CbcBranchingObject *brObj) const
Compare the original object of this with the original object of brObj.
virtual CbcBranchingObject * clone() const =0
Clone.
virtual CbcObject * clone() const =0
Clone.
virtual CbcRangeCompare compareBranchingObject(const CbcBranchingObject *brObj, const bool replaceIfOverlap=false)=0
Compare the this with brObj.
CbcGeneral & operator=(const CbcGeneral &rhs)
Abstract branching object base class Now just difference with OsiBranchingObject. ...
CbcBranchingObject & operator=(const CbcBranchingObject &rhs)
Assignment operator.
virtual double infeasibility(const OsiBranchingInformation *info, int &preferredWay) const
Infeasibility - large is 0.5.
Information required while the node is live.
Define a catch all class.
virtual double branch()=0
Execute the actions required to branch, as specified by the current state of the branching object...
virtual CbcBranchObjType type() const =0
Return the type (an integer identifier) of this.
virtual void print() const
Print something about branch - only if log level high.
virtual void redoSequenceEtc(CbcModel *model, int numberColumns, const int *originalColumns)=0
Redoes data when sequence numbers change.
virtual void feasibleRegion()=0
This looks at solution and sets bounds to contain solution.
Simple Branch and bound class.
virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way)
Creates a branching object.