Go to the documentation of this file.
8 #ifndef CbcGeneralDepth_H
9 #define CbcGeneralDepth_H
20 #include "ClpSimplex.hpp"
21 #include "ClpNode.hpp"
35 CbcGeneralDepth(
CbcModel *model,
int maximumDepth);
38 CbcGeneralDepth(
const CbcGeneralDepth &);
44 CbcGeneralDepth &
operator=(
const CbcGeneralDepth &rhs);
50 virtual double infeasibility(
const OsiBranchingInformation *info,
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_;
104 mutable ClpNodeStuff *nodeInfo_;
114 CbcGeneralBranchingObject();
117 CbcGeneralBranchingObject(
CbcModel *model);
120 CbcGeneralBranchingObject(
const CbcGeneralBranchingObject &);
123 CbcGeneralBranchingObject &
operator=(
const CbcGeneralBranchingObject &rhs);
129 virtual ~CbcGeneralBranchingObject();
136 virtual void checkIsCutoff(
double cutoff);
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();
247 virtual void checkIsCutoff(
double cutoff);
252 virtual void print();
281 CbcGeneralBranchingObject *object_;
285 #endif //COIN_HAS_CLP
virtual CbcRangeCompare compareBranchingObject(const CbcBranchingObject *brObj, const bool replaceIfOverlap=false)=0
Compare the this with brObj.
CbcBranchingObject & operator=(const CbcBranchingObject &rhs)
Assignment operator.
virtual void feasibleRegion()=0
For the variable(s) referenced by the object, look at the current solution and set bounds to match th...
virtual double branch()=0
Execute the actions required to branch, as specified by the current state of the branching object,...
virtual void redoSequenceEtc(CbcModel *model, int numberColumns, const int *originalColumns)=0
Redoes data when sequence numbers change.
Simple Branch and bound class.
virtual CbcBranchObjType type() const =0
Return the type (an integer identifier) of this.
virtual int compareOriginalObject(const CbcBranchingObject *brObj) const
Compare the original object of this with the original object of brObj.
virtual void print() const
Print something about branch - only if log level high.
virtual void feasibleRegion()=0
This looks at solution and sets bounds to contain solution.
Abstract branching object base class Now just difference with OsiBranchingObject.
virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way)
Creates a branching object.
Information required while the node is live.
Define a catch all class.
virtual CbcObject * clone() const =0
Clone.
virtual double infeasibility(const OsiBranchingInformation *info, int &preferredWay) const
Infeasibility - large is 0.5.
CbcGeneral & operator=(const CbcGeneral &rhs)
virtual CbcBranchingObject * clone() const =0
Clone.