12 #include "OsiRowCut.hpp"
13 #include "CoinHelperFunctions.hpp"
14 #include "CoinPackedMatrix.hpp"
49 virtual double infeasibility(
const OsiBranchingInformation * info,
59 virtual int gutsOfFollowOn(
int & otherRow,
int & preferredWay)
const;
84 int numberOnDownSide,
const int * down,
85 int numberOnUpSide,
const int * up);
114 virtual void print();
185 virtual double infeasibility(
const OsiBranchingInformation * info,
198 OsiRowCut
buildCut(
const OsiBranchingInformation * info,
int type,
int & preferredWay)
const;
virtual CbcBranchingObject * clone() const
Clone.
virtual ~CbcFixingBranchingObject()
virtual CbcBranchObjType type() const
Return the type (an integer identifier) of this.
virtual double branch()
Does next branch and updates state.
CbcFixingBranchingObject()
virtual void feasibleRegion()
This looks at solution and sets bounds to contain solution.
virtual void print()
Print something about branch - only if log level high.
virtual void feasibleRegion()=0
For the variable(s) referenced by the object, look at the current solution and set bounds to match th...
OsiRowCut buildCut(const OsiBranchingInformation *info, int type, int &preferredWay) const
Build "cut".
virtual void feasibleRegion()
This looks at solution and sets bounds to contain solution.
Define an idiotic idea class.
int preferredWay() const
If -1 down always chosen first, +1 up always, 0 normal.
virtual CbcObject * clone() const
Clone.
CbcFollowOn & operator=(const CbcFollowOn &rhs)
CbcModel * model() const
Return model.
int way() const
Get the state of the branching object.
CbcFixingBranchingObject & operator=(const CbcFixingBranchingObject &rhs)
Abstract branching object base class Now just difference with OsiBranchingObject. ...
CoinPackedMatrix matrixByRow_
Matrix by row.
virtual void previousBranch()
Reset every information so that the branching object appears to point to the previous child...
CoinThreadRandom savedRandomNumberGenerator_
Saved version of thread specific random number generator.
virtual int compareOriginalObject(const CbcBranchingObject *brObj) const
Compare the original object of this with the original object of brObj.
CbcModel * model() const
Return model.
virtual double branch()=0
Execute the actions required to branch, as specified by the current state of the branching object...
virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way)
Creates a branching object.
General Branching Object class.
virtual void print() const
Print something about branch - only if log level high.
virtual double infeasibility(const OsiBranchingInformation *info, int &preferredWay) const
Infeasibility - large is 0.5.
int * rhs_
Possible rhs (if 0 then not possible)
virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way)
Creates a branching object.
Define a follow on class.
CoinPackedMatrix matrix_
data Matrix
CoinThreadRandom randomNumberGenerator_
data Thread specific random number generator
virtual CbcObject * clone() const
Clone.
virtual double infeasibility(const OsiBranchingInformation *info, int &preferredWay) const
Infeasibility - large is 0.5.
virtual int gutsOfFollowOn(int &otherRow, int &preferredWay) const
As some computation is needed in more than one place - returns row.
virtual CbcRangeCompare compareBranchingObject(const CbcBranchingObject *brObj, const bool replaceIfOverlap=false)
Compare the this with brObj.
CbcIdiotBranch & operator=(const CbcIdiotBranch &rhs)
Simple Branch and bound class.
virtual void initializeForBranching(CbcModel *)
Initialize for branching.