13 #include "OsiBranchingObject.hpp" 14 class OsiSolverInterface;
15 class OsiSolverBranch;
21 class OsiChooseVariable;
103 #ifdef CBC_NEW_STYLE_BRANCH 104 virtual double infeasibility(
const OsiBranchingInformation * info,
105 int &preferredWay)
const = 0;
108 int &preferredWay)
const {
109 return infeasibility(preferredWay);
112 throw CoinError(
"Need code",
"infeasibility",
"CbcBranchBase");
119 virtual void feasibleRegion() = 0;
121 virtual double feasibleRegion(OsiSolverInterface * solver,
const OsiBranchingInformation * info)
const;
127 virtual double feasibleRegion(OsiSolverInterface * solver)
const ;
134 #ifdef CBC_NEW_STYLE_BRANCH 135 virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface * solver,
const OsiBranchingInformation * info,
int way) = 0;
139 const OsiBranchingInformation *
145 const OsiBranchingInformation * ,
int )
const {
146 throw CoinError(
"Need code",
"createBranch",
"CbcBranchBase");
154 virtual OsiBranchingObject * createOsiBranch(OsiSolverInterface * solver,
const OsiBranchingInformation * info,
int way)
const;
159 virtual OsiSolverBranch * solverBranch()
const;
193 virtual void floorCeiling(
double & floorValue,
double & ceilingValue,
double value,
194 double tolerance)
const;
207 inline int id()
const {
221 return (id_ >= 1000000000 && id_ < 1100000000);
231 position_ = position;
246 return preferredWay_;
250 preferredWay_ = value;
virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface *, const OsiBranchingInformation *, int)
Create a branching object and indicate which way to branch first.
CbcBranchingObject * possibleBranch
Abstract base class for `objects'.
virtual void initializeForBranching(CbcModel *)
Initialize for branching.
virtual CbcBranchingObject * preferredNewFeasible() const
Given a valid solution (with reduced costs, etc.), return a branching object which would give a new f...
virtual OsiBranchingObject * createBranch(OsiSolverInterface *, const OsiBranchingInformation *, int) const
void setPosition(int position)
Set position in object_ list.
int position_
Position in object list.
void setModel(CbcModel *model)
update model
void setId(int value)
Set identifier (normally column number in matrix) but 1000000000 to 1100000000 means optional branchi...
int id_
Identifier (normally column number in matrix)
bool optionalObject() const
Return true if optional branching object i.e.
Abstract branching object base class Now just difference with OsiBranchingObject. ...
virtual void resetBounds(const OsiSolverInterface *)
Reset variable bounds to their original values.
Information required while the node is live.
CbcModel * model() const
Return model.
CbcObjectUpdateData & operator=(const CbcObjectUpdateData &rhs)
Assignment operator.
Information required to recreate the subproblem at this node.
int preferredWay_
If -1 down always chosen first, +1 up always, 0 normal.
virtual double infeasibility(int &) const
void setPreferredWay(int value)
Set -1 down always chosen first, +1 up always, 0 normal.
int position() const
Get position in object_ list.
virtual CbcBranchingObject * notPreferredNewFeasible() const
Given a valid solution (with reduced costs, etc.), return a branching object which would give a new f...
virtual double infeasibility(const OsiBranchingInformation *, int &preferredWay) const
Infeasibility of the object.
int id() const
Identifier (normally column number in matrix)
Simple Branch and bound class.
virtual void updateInformation(const CbcObjectUpdateData &)
Update object by CbcObjectUpdateData.
int preferredWay() const
If -1 down always chosen first, +1 up always, 0 normal.
virtual void redoSequenceEtc(CbcModel *, int, const int *)
Redoes data when sequence numbers change.