102 #ifdef CBC_NEW_STYLE_BRANCH
107 int &preferredWay)
const
113 throw CoinError(
"Need code",
"infeasibility",
"CbcBranchBase");
135 #ifdef CBC_NEW_STYLE_BRANCH
150 throw CoinError(
"Need code",
"createBranch",
"CbcBranchBase");
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 ~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.
CbcBranchingObject * possibleBranch
virtual void redoSequenceEtc(CbcModel *, int, const int *)
Redoes data when sequence numbers change.
double infeasibility() const
Return infeasibility.
virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface *, const OsiBranchingInformation *, int)
Create a branching object and indicate which way to branch first.
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 OsiBranchingObject * createBranch(OsiSolverInterface *, const OsiBranchingInformation *, int) const
Create a branching object and indicate which way to branch first.
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...
virtual void initializeForBranching(CbcModel *)
Initialize for branching.
int preferredWay() const
If -1 down always chosen first, +1 up always, 0 normal.
Abstract Base Class for describing an interface to a solver.
int id_
Identifier (normally column number in matrix)
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.
Error Class thrown by an exception.
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.
This class chooses a variable to branch on.
Abstract base class for `objects'.
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.
Abstract branching object base class.