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);
Error Class thrown by an exception.
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.
Abstract branching object base class.
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.
Abstract Base Class for describing an interface to a solver.
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)
double infeasibility() const
Return infeasibility.
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.
This class chooses a variable to branch on.
virtual OsiBranchingObject * createBranch(OsiSolverInterface *, const OsiBranchingInformation *, int) const
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.
Abstract base class for `objects'.
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.