6 #ifndef CbcBranchLotsize_H 7 #define CbcBranchLotsize_H 24 int numberPoints,
const double * points,
bool range =
false);
39 virtual double infeasibility(
const OsiBranchingInformation * info,
84 virtual void resetBounds(
const OsiSolverInterface * solver);
93 virtual void floorCeiling(
double & floorLotsize,
double & ceilingLotsize,
double value,
94 double tolerance)
const;
102 columnNumber_ = value;
115 return bound_[rangeType_*numberRanges_-1];
123 return numberRanges_;
137 void printLotsize(
double value,
bool condition,
int type)
const;
181 int way ,
double value,
const CbcLotsize * lotsize) ;
190 double lowerValue,
double upperValue) ;
208 virtual double branch();
213 virtual void print();
bool findRange(double value) const
Finds range of interest so value is feasible in range range_ or infeasible between hi[range_] and lo[...
double * bound() const
Ranges.
virtual void feasibleRegion()
Set bounds to contain the current solution.
double originalUpperBound() const
virtual void feasibleRegion()=0
For the variable(s) referenced by the object, look at the current solution and set bounds to match th...
void setModelSequence(int value)
Set model column number.
int numberRanges() const
Number of points.
int rangeType() const
Type - 1 points, 2 ranges.
virtual CbcBranchingObject * preferredNewFeasible() const
Given a valid solution (with reduced costs, etc.), return a branching object which would give a new f...
Abstract branching object base class Now just difference with OsiBranchingObject. ...
virtual void floorCeiling(double &floorLotsize, double &ceilingLotsize, double value, double tolerance) const
Returns floor and ceiling.
virtual double infeasibility(const OsiBranchingInformation *info, int &preferredWay) const
Infeasibility - large is 0.5.
virtual CbcObject * clone() const
Clone.
virtual void resetBounds(const OsiSolverInterface *solver)
Reset original upper and lower bound values from the solver.
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 void print() const
Print something about branch - only if log level high.
int modelSequence() const
Model column number.
Lotsize branching object.
virtual int columnNumber() const
Column number if single column object -1 otherwise, so returns >= 0 Used by heuristics.
virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way)
Creates a branching object.
virtual CbcBranchObjType type() const
Return the type (an integer identifier) of this.
CbcLotsize & operator=(const CbcLotsize &rhs)
virtual bool canDoHeuristics() const
Return true if object can take part in normal heuristics.
virtual CbcBranchingObject * notPreferredNewFeasible() const
Given a valid solution (with reduced costs, etc.), return a branching object which would give a new f...
Simple Branch and bound class.
double originalLowerBound() const
Original variable bounds.
int preferredWay() const
If -1 down always chosen first, +1 up always, 0 normal.