13#include "OsiBranchingObject.hpp"
14class OsiSolverInterface;
21class OsiChooseVariable;
102#ifdef CBC_NEW_STYLE_BRANCH
103 virtual double infeasibility(
const OsiBranchingInformation *info,
113 throw CoinError(
"Need code",
"infeasibility",
"CbcBranchBase");
122 virtual double feasibleRegion(OsiSolverInterface *solver,
const OsiBranchingInformation *info)
const;
135#ifdef CBC_NEW_STYLE_BRANCH
140 const OsiBranchingInformation *
148 const OsiBranchingInformation * ,
int )
const
150 throw CoinError(
"Need code",
"createBranch",
"CbcBranchBase");
158 virtual OsiBranchingObject *
createOsiBranch(OsiSolverInterface *solver,
const OsiBranchingInformation *info,
int way)
const;
199 virtual void floorCeiling(
double &floorValue,
double &ceilingValue,
double value,
200 double tolerance)
const;
213 inline int id()
const
230 return (
id_ >= 1000000000 &&
id_ < 1100000000);
Abstract branching object base class Now just difference with OsiBranchingObject.
Simple Branch and bound class.
Information required to recreate the subproblem at this node.
Information required while the node is live.
virtual void resetBounds(const OsiSolverInterface *)
Reset variable bounds to their original values.
void setId(int value)
Set identifier (normally column number in matrix) but 1000000000 to 1100000000 means optional branchi...
virtual void redoSequenceEtc(CbcModel *, int, const int *)
Redoes data when sequence numbers change.
virtual CbcObjectUpdateData createUpdateInformation(const OsiSolverInterface *solver, const CbcNode *node, const CbcBranchingObject *branchingObject)
Pass in information on branch just done and create CbcObjectUpdateData instance.
void setPosition(int position)
Set 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...
int position() const
Get position in object_ list.
virtual OsiBranchingObject * createBranch(OsiSolverInterface *, const OsiBranchingInformation *, int) const
void setModel(CbcModel *model)
update model
virtual void initializeForBranching(CbcModel *)
Initialize for branching.
virtual OsiBranchingObject * createOsiBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way) const
Create an Osibranching object and indicate which way to branch first.
virtual double feasibleRegion(OsiSolverInterface *solver) const
For the variable(s) referenced by the object, look at the current solution and set bounds to match th...
void setPreferredWay(int value)
Set -1 down always chosen first, +1 up always, 0 normal.
CbcObject & operator=(const CbcObject &rhs)
virtual CbcObject * clone() const =0
Clone.
virtual double feasibleRegion(OsiSolverInterface *solver, const OsiBranchingInformation *info) const
Dummy one for compatibility.
int position_
Position in object list.
virtual void feasibleRegion()=0
For the variable(s) referenced by the object, look at the current solution and set bounds to match th...
int id() const
Identifier (normally column number in matrix)
int id_
Identifier (normally column number in matrix)
CbcObject(const CbcObject &)
CbcModel * model() const
Return model.
virtual ~CbcObject()
Destructor.
int preferredWay() const
If -1 down always chosen first, +1 up always, 0 normal.
virtual double infeasibility(const OsiBranchingInformation *, int &preferredWay) const
Infeasibility of the object.
virtual void floorCeiling(double &floorValue, double &ceilingValue, double value, double tolerance) const
Returns floor and ceiling i.e.
virtual CbcBranchingObject * preferredNewFeasible() const
Given a valid solution (with reduced costs, etc.), return a branching object which would give a new f...
CbcObject(CbcModel *model)
virtual double infeasibility(int &) const
int preferredWay_
If -1 down always chosen first, +1 up always, 0 normal.
virtual OsiSolverBranch * solverBranch() const
Create an OsiSolverBranch object.
bool optionalObject() const
Return true if optional branching object i.e.
virtual void updateInformation(const CbcObjectUpdateData &)
Update object by CbcObjectUpdateData.
virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface *, const OsiBranchingInformation *, int)
Create a branching object and indicate which way to branch first.
Abstract base class for ‘objects’.
CbcBranchingObject * possibleBranch