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,
108 int &preferredWay)
const {
112 throw CoinError(
"Need code",
"infeasibility",
"CbcBranchBase");
121 virtual double feasibleRegion(OsiSolverInterface * solver,
const OsiBranchingInformation * info)
const;
127 virtual double feasibleRegion(OsiSolverInterface * solver)
const ;
134 #ifdef CBC_NEW_STYLE_BRANCH
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;
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);
virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface *, const OsiBranchingInformation *, int)
Create a branching object and indicate which way to branch first.
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...
CbcBranchingObject * possibleBranch
virtual void feasibleRegion()=0
For the variable(s) referenced by the object, look at the current solution and set bounds to match th...
Abstract base class for `objects'.
virtual void initializeForBranching(CbcModel *)
Initialize for branching.
virtual OsiSolverBranch * solverBranch() const
Create an OsiSolverBranch object.
virtual CbcBranchingObject * notPreferredNewFeasible() const
Given a valid solution (with reduced costs, etc.), return a branching object which would give a new f...
void setPosition(int position)
Set position in object_ list.
virtual CbcObjectUpdateData createUpdateInformation(const OsiSolverInterface *solver, const CbcNode *node, const CbcBranchingObject *branchingObject)
Pass in information on branch just done and create CbcObjectUpdateData instance.
int preferredWay() const
If -1 down always chosen first, +1 up always, 0 normal.
int position_
Position in object list.
virtual double infeasibility(const OsiBranchingInformation *, int &preferredWay) const
Infeasibility of the object.
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)
int id() const
Identifier (normally column number in matrix)
int position() const
Get position in object_ list.
CbcModel * model() const
Return model.
virtual CbcObject * clone() const =0
Clone.
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.
virtual double infeasibility(int &) const
Information required to recreate the subproblem at this node.
virtual ~CbcObject()
Destructor.
CbcObject & operator=(const CbcObject &rhs)
int preferredWay_
If -1 down always chosen first, +1 up always, 0 normal.
bool optionalObject() const
Return true if optional branching object i.e.
void setPreferredWay(int value)
Set -1 down always chosen first, +1 up always, 0 normal.
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.
Simple Branch and bound class.
virtual void updateInformation(const CbcObjectUpdateData &)
Update object by CbcObjectUpdateData.
virtual void redoSequenceEtc(CbcModel *, int, const int *)
Redoes data when sequence numbers change.