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,
105 int &preferredWay)
const = 0;
108 int &preferredWay)
const {
109 return infeasibility(preferredWay);
112 throw CoinError(
"Need code",
"infeasibility",
"CbcBranchBase");
119 virtual void feasibleRegion() = 0;
121 virtual double feasibleRegion(OsiSolverInterface * solver,
const OsiBranchingInformation * info)
const;
127 virtual double feasibleRegion(OsiSolverInterface * solver)
const ;
134 #ifdef CBC_NEW_STYLE_BRANCH 135 virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface * solver,
const OsiBranchingInformation * info,
int way) = 0;
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;
159 virtual OsiSolverBranch * solverBranch()
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);
231 position_ = position;
246 return preferredWay_;
250 preferredWay_ = value;
virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface *, const OsiBranchingInformation *, int)
Create a branching object and indicate which way to branch first.
virtual CbcBranchingObject * preferredNewFeasible() const
Given a valid solution (with reduced costs, etc.), return a branching object which would give a new f...
CbcBranchingObject * possibleBranch
Abstract base class for `objects'.
virtual void initializeForBranching(CbcModel *)
Initialize for branching.
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.
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.
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
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.
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
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.