8#ifndef CbcGeneralDepth_H
9#define CbcGeneralDepth_H
20#include "ClpSimplex.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;
55 virtual void feasibleRegion();
58 virtual CbcBranchingObject *createCbcBranch(OsiSolverInterface *solver,
const OsiBranchingInformation *info,
int way);
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];
91 virtual void redoSequenceEtc(
CbcModel *model,
int numberColumns,
const int *originalColumns);
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();
133 virtual double branch();
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();
244 virtual double branch();
247 virtual void checkIsCutoff(
double cutoff);
252 virtual void print();
281 CbcGeneralBranchingObject *object_;
Abstract branching object base class Now just difference with OsiBranchingObject.
CbcBranchingObject & operator=(const CbcBranchingObject &rhs)
Assignment operator.
virtual double branch()=0
Execute the actions required to branch, as specified by the current state of the branching object,...
virtual void print() const
Print something about branch - only if log level high.
Define a catch all class.
virtual CbcObject * clone() const =0
Clone.
CbcGeneral & operator=(const CbcGeneral &rhs)
Simple Branch and bound class.
Information required while the node is live.
virtual void feasibleRegion()=0
For the variable(s) referenced by the object, look at the current solution and set bounds to match th...