47 const int * which,
const double *
weights,
int identifier,
63 virtual double infeasibility(
const OsiBranchingInformation * info,
93 OsiSOS *
osiObject(
const OsiSolverInterface * solver)
const;
96 return numberMembers_;
110 return numberTimesDown_;
114 return numberTimesUp_;
140 return (sosType_ == 1 && integerValued_);
144 integerValued_ = yesNo;
165 mutable double shadowEstimateDown_;
167 mutable double shadowEstimateUp_;
169 double downDynamicPseudoRatio_;
171 double upDynamicPseudoRatio_;
173 int numberTimesDown_;
217 virtual double branch();
220 virtual void fix(OsiSolverInterface * solver,
221 double * lower,
double * upper,
222 int branchState)
const ;
229 computeNonzeroRange();
235 virtual void print();
263 void computeNonzeroRange();
virtual double infeasibility(const OsiBranchingInformation *info, int &preferredWay) const
Infeasibility - large is 0.5.
Branching object for Special ordered sets.
Branching object for Special Ordered Sets of type 1 and 2.
int sosType() const
SOS type.
double * mutableWeights() const
Array of weights.
virtual void feasibleRegion()=0
For the variable(s) referenced by the object, look at the current solution and set bounds to match th...
virtual void feasibleRegion()
This looks at solution and sets bounds to contain solution.
OsiSOS * osiObject(const OsiSolverInterface *solver) const
Construct an OsiSOS object.
int numberMembers() const
Number of members.
virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way)
Creates a branching object.
int numberTimesDown() const
Down number times.
virtual CbcObject * clone() const
Clone.
CbcSOS & operator=(const CbcSOS &rhs)
virtual void redoSequenceEtc(CbcModel *model, int numberColumns, const int *originalColumns)
Redoes data when sequence numbers change.
virtual void updateInformation(const CbcObjectUpdateData &data)
Update object by CbcObjectUpdateData.
Abstract branching object base class Now just difference with OsiBranchingObject. ...
void setIntegerValued(bool yesNo)
Set whether set is integer valued or not.
virtual void previousBranch()
Reset every information so that the branching object appears to point to the previous child...
Information required while the node is live.
int numberTimesUp() const
Up number times.
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...
int * mutableMembers() const
Members (indices in range 0 ... numberColumns-1)
virtual void previousBranch()
Reset every information so that the branching object appears to point to the previous child...
virtual void print() const
Print something about branch - only if log level high.
virtual bool canDoHeuristics() const
Return true if object can take part in normal heuristics.
virtual CbcBranchObjType type() const
Return the type (an integer identifier) of this.
virtual OsiSolverBranch * solverBranch() const
Create an OsiSolverBranch object.
virtual OsiSolverBranch * solverBranch() const
Create an OsiSolverBranch object.
void setNumberMembers(int n)
Set number of members.
const int * members() const
Members (indices in range 0 ... numberColumns-1)
Simple Branch and bound class.
int preferredWay() const
If -1 down always chosen first, +1 up always, 0 normal.
const double * weights() const
Array of weights.
virtual CbcObjectUpdateData createUpdateInformation(const OsiSolverInterface *solver, const CbcNode *node, const CbcBranchingObject *branchingObject)
Pass in information on branch just done and create CbcObjectUpdateData instance.