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,
104 int &preferredWay)
const = 0;
107 int &preferredWay)
const 109 return infeasibility(preferredWay);
113 throw CoinError(
"Need code",
"infeasibility",
"CbcBranchBase");
120 virtual void feasibleRegion() = 0;
122 virtual double feasibleRegion(OsiSolverInterface *solver,
const OsiBranchingInformation *info)
const;
128 virtual double feasibleRegion(OsiSolverInterface *solver)
const;
135 #ifdef CBC_NEW_STYLE_BRANCH 136 virtual CbcBranchingObject *createCbcBranch(OsiSolverInterface *solver,
const OsiBranchingInformation *info,
int way) = 0;
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;
163 virtual OsiSolverBranch *solverBranch()
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);
242 position_ = position;
260 return preferredWay_;
265 preferredWay_ = value;
virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface *, const OsiBranchingInformation *, int)
Create a branching object and indicate which way to branch first.
CbcBranchingObject * possibleBranch
Abstract base class for `objects'.
virtual void initializeForBranching(CbcModel *)
Initialize for branching.
virtual CbcBranchingObject * preferredNewFeasible() const
Given a valid solution (with reduced costs, etc.), return a branching object which would give a new f...
virtual OsiBranchingObject * createBranch(OsiSolverInterface *, const OsiBranchingInformation *, int) const
void setPosition(int position)
Set position in object_ list.
int position_
Position in object list.
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)
bool optionalObject() const
Return true if optional branching object i.e.
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.
CbcModel * model() const
Return model.
CbcObjectUpdateData & operator=(const CbcObjectUpdateData &rhs)
Assignment operator.
Information required to recreate the subproblem at this node.
int preferredWay_
If -1 down always chosen first, +1 up always, 0 normal.
virtual double infeasibility(int &) const
void setPreferredWay(int value)
Set -1 down always chosen first, +1 up always, 0 normal.
int position() const
Get position in object_ list.
virtual CbcBranchingObject * notPreferredNewFeasible() const
Given a valid solution (with reduced costs, etc.), return a branching object which would give a new f...
virtual double infeasibility(const OsiBranchingInformation *, int &preferredWay) const
Infeasibility of the object.
int id() const
Identifier (normally column number in matrix)
Simple Branch and bound class.
virtual void updateInformation(const CbcObjectUpdateData &)
Update object by CbcObjectUpdateData.
int preferredWay() const
If -1 down always chosen first, +1 up always, 0 normal.
virtual void redoSequenceEtc(CbcModel *, int, const int *)
Redoes data when sequence numbers change.