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