14 #ifndef BonNWayObject_H
15 #define BonNWayObject_H
16 #include "OsiBranchingObject.hpp"
17 #include "CbcConsequence.hpp"
46 for(
size_t i = 0 ; i <
indices.size() ; i++){
47 if(solver->getColLower()[
indices[i]] > 0.9) num_one++;
65 const int * which,
int identifier);
71 virtual OsiObject *
clone()
const;
84 int iSequence,
int state)
const;
88 int &preferredWay)
const;
91 virtual double feasibleRegion(OsiSolverInterface * solver,
const OsiBranchingInformation * info)
const;
94 virtual OsiBranchingObject *
createBranch(OsiSolverInterface * solver,
const OsiBranchingInformation * info,
int way)
const;
146 const std::vector<int>& order,
const std::list<int>& skipped);
155 virtual OsiBranchingObject *
clone()
const;
160 using OsiBranchingObject::branch ;
162 virtual double branch(OsiSolverInterface * solver);
165 virtual double branch(OsiSolverInterface * solver,
int state);
185 return order_[branchIndex_ - 1];
190 return branchIndex_ - 1;
void set_only_frac_branches(int depth)
virtual bool twoWay() const
Is this a two way object (-1 down, +1 up)
virtual ~BonNWayBranchingObject()
std::vector< int > members_
data
void fint fint fint real fint real real real real real real real real real fint real fint fint fint real fint fint fint fint * info
virtual OsiObject * clone() const
Clone.
virtual int numberBranches() const
The number of branch arms created for this branching object.
virtual ~BonNWayObject()
Destructor.
virtual OsiBranchingObject * createBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way) const
Creates a branching object.
const BonNWayObject * object_
Points back to object.
BonNWayObject & operator=(const BonNWayObject &rhs)
Assignment operator.
n_way_consequences & operator=(const n_way_consequences &rhs)
int only_frac_branch_
Only branch on fractional variables (last branch puts all of them to 0)
bool quicky_
Quicky only branch up on variables with non zero value.
void applyConsequence(OsiSolverInterface *solver, int iSequence, int state) const
Applies a consequence for a single member.
BonNWayBranchingObject & operator=(const BonNWayBranchingObject &rhs)
void setConsequence(int iMember, const n_way_consequences &consequence)
Set up a consequence for a single member.
n_way_consequences ** consequence_
Consequences (normally NULL)
size_t numberMembers() const
Number of members.
virtual double branch(OsiSolverInterface *solver)
Does next branch and updates state.
const int * members() const
Members (indices in range 0 ... numberColumns-1)
virtual double feasibleRegion(OsiSolverInterface *solver, const OsiBranchingInformation *info) const
This looks at solution and sets bounds to contain solution.
n_way_consequences(const n_way_consequences &rhs)
N way branching Object class.
void set_bounds(std::vector< double > &bounds) const
void applyToSolver(OsiSolverInterface *solver, int state) const
std::list< int > skipped_
Is only branching on a subset of variables (has to do a last branch with all variables in order set t...
std::vector< int > indices
std::vector< double > bounds_
Bounds on the members.
n_way_consequences * clone() const
std::vector< int > order_
order of branching
virtual double infeasibility(const OsiBranchingInformation *info, int &preferredWay) const
Infeasibility - large is 0.5 (and 0.5 will give this)
virtual OsiBranchingObject * clone() const
Clone.