13 #include "OsiBranchingObject.hpp"
14 class OsiSolverInterface;
15 class OsiSolverBranch;
21 class 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.
virtual OsiBranchingObject * createBranch(OsiSolverInterface *, const OsiBranchingInformation *, int) const
virtual OsiBranchingObject * createOsiBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way) const
Create an Osibranching object and indicate which way to branch first.
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 CbcBranchingObject * createCbcBranch(OsiSolverInterface *, const OsiBranchingInformation *, int)
Create a branching object and indicate which way to branch first.
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.
int position() const
Get position in object_ list.
void setModel(CbcModel *model)
update model
virtual void initializeForBranching(CbcModel *)
Initialize for branching.
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.
virtual double feasibleRegion(OsiSolverInterface *solver, const OsiBranchingInformation *info) const
Dummy one for compatibility.
CbcModel * model() const
Return model.
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 &)
virtual CbcObject * clone() const =0
Clone.
virtual CbcBranchingObject * preferredNewFeasible() const
Given a valid solution (with reduced costs, etc.), return a branching object which would give a new f...
virtual ~CbcObject()
Destructor.
int preferredWay() const
If -1 down always chosen first, +1 up always, 0 normal.
virtual OsiSolverBranch * solverBranch() const
Create an OsiSolverBranch object.
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.
CbcObject(CbcModel *model)
virtual double infeasibility(int &) const
virtual CbcBranchingObject * notPreferredNewFeasible() const
Given a valid solution (with reduced costs, etc.), return a branching object which would give a new f...
int preferredWay_
If -1 down always chosen first, +1 up always, 0 normal.
bool optionalObject() const
Return true if optional branching object i.e.
CbcObject & operator=(const CbcObject &rhs)
virtual void updateInformation(const CbcObjectUpdateData &)
Update object by CbcObjectUpdateData.
Abstract base class for ‘objects’.
CbcBranchingObject * possibleBranch