7 #include "OsiBranchingObject.hpp"
8 class OsiSolverInterface;
15 class OsiChooseVariable;
53 int numIntInfeasDown ;
54 int numObjInfeasDown ;
97 #ifdef CBC_NEW_STYLE_BRANCH
98 virtual double infeasibility(
const OsiBranchingInformation * info,
106 throw CoinError(
"Need code",
"infeasibility",
"CbcBranchBase");
115 virtual double feasibleRegion(OsiSolverInterface * solver,
const OsiBranchingInformation * info)
const;
121 virtual double feasibleRegion(OsiSolverInterface * solver)
const ;
128 #ifdef CBC_NEW_STYLE_BRANCH
135 const OsiBranchingInformation * ,
int ) {
136 throw CoinError(
"Need code",
"createBranch",
"CbcBranchBase");
144 virtual OsiBranchingObject *
createOsiBranch(OsiSolverInterface * solver,
const OsiBranchingInformation * info,
int way)
const;
183 virtual void floorCeiling(
double & floorValue,
double & ceilingValue,
double value,
184 double tolerance)
const;
197 inline int id()
const {
211 return (
id_ >= 1000000000 &&
id_ < 1100000000);
virtual ~CbcObject()
Destructor.
void setModel(CbcModel *model)
update model
Abstract branching object base class Now just difference with OsiBranchingObject. ...
int preferredWay_
If -1 down always chosen first, +1 up always, 0 normal.
virtual double infeasibility(const OsiBranchingInformation *, int &preferredWay) const
Infeasibility of the object.
virtual CbcObject * clone() const =0
Clone.
virtual CbcBranchingObject * createBranch(OsiSolverInterface *, const OsiBranchingInformation *, int)
virtual void redoSequenceEtc(CbcModel *, int, const int *)
Redoes data when sequence numbers change.
virtual OsiBranchingObject * createOsiBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way) const
Create an Osibranching object and indicate which way to branch first.
int position_
Position in object list.
virtual double infeasibility(int &) const
Information required to recreate the subproblem at this node.
void setId(int value)
Set identifier (normally column number in matrix) but 1000000000 to 1100000000 means optional branchi...
virtual void resetBounds(const OsiSolverInterface *)
Reset variable bounds to their original values.
CbcObject & operator=(const CbcObject &rhs)
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 void feasibleRegion()=0
For the variable(s) referenced by the object, look at the current solution and set bounds to match th...
int preferredWay() const
If -1 down always chosen first, +1 up always, 0 normal.
int id_
Identifier (normally column number in matrix)
virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way)
Create a branching object and indicate which way to branch first.
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.
void setPosition(int position)
Set position in object_ list.
CbcModel * model() const
Return model.
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 void floorCeiling(double &floorValue, double &ceilingValue, double value, double tolerance) const
Returns floor and ceiling i.e.
virtual CbcObjectUpdateData createUpdateInformation(const OsiSolverInterface *solver, const CbcNode *node, const CbcBranchingObject *branchingObject)
Pass in information on branch just done and create CbcObjectUpdateData instance.
Information required while the node is live.
Abstract base class for `objects'.
int id() const
Identifier (normally column number in matrix)
virtual OsiSolverBranch * solverBranch() const
Create an OsiSolverBranch object.
Simple Branch and bound class.