Go to the documentation of this file.
6 #ifndef CbcBranchLotsize_H
7 #define CbcBranchLotsize_H
22 int numberPoints,
const double *points,
bool range =
false);
37 virtual double infeasibility(
const OsiBranchingInformation *info,
82 virtual void resetBounds(
const OsiSolverInterface *solver);
91 virtual void floorCeiling(
double &floorLotsize,
double &ceilingLotsize,
double value,
92 double tolerance)
const;
143 void printLotsize(
double value,
bool condition,
int type)
const;
195 double lowerValue,
double upperValue);
218 virtual void print();
virtual CbcBranchingObject * notPreferredNewFeasible() const
Given a valid solution (with reduced costs, etc.), return a branching object which would give a new f...
virtual CbcBranchingObject * clone() const
Clone.
bool findRange(double value) const
Finds range of interest so value is feasible in range range_ or infeasible between hi[range_] and lo[...
virtual CbcRangeCompare compareBranchingObject(const CbcBranchingObject *brObj, const bool replaceIfOverlap=false)
Compare the this with brObj.
int way() const
Get the state of the branching object.
int variable() const
Index identifying the associated CbcObject within its class.
virtual double branch()
Sets the bounds for the variable according to the current arm of the branch and advances the object s...
int numberRanges_
Number of points.
CbcLotsize & operator=(const CbcLotsize &rhs)
CbcLotsizeBranchingObject()
Default constructor.
CbcLotsizeBranchingObject & operator=(const CbcLotsizeBranchingObject &rhs)
Assignment operator.
int preferredWay() const
If -1 down always chosen first, +1 up always, 0 normal.
virtual void feasibleRegion()=0
For the variable(s) referenced by the object, look at the current solution and set bounds to match th...
virtual double branch()=0
Execute the actions required to branch, as specified by the current state of the branching object,...
double originalUpperBound() const
double originalLowerBound() const
Original variable bounds.
void printLotsize(double value, bool condition, int type) const
Just for debug (CBC_PRINT defined in CbcBranchLotsize.cpp)
virtual CbcBranchObjType type() const
Return the type (an integer identifier) of this.
virtual void resetBounds(const OsiSolverInterface *solver)
Reset original upper and lower bound values from the solver.
virtual double infeasibility(const OsiBranchingInformation *info, int &preferredWay) const
Infeasibility - large is 0.5.
double * bound() const
Ranges.
virtual CbcBranchingObject * preferredNewFeasible() const
Given a valid solution (with reduced costs, etc.), return a branching object which would give a new f...
virtual void feasibleRegion()
Set bounds to contain the current solution.
virtual int columnNumber() const
Column number if single column object -1 otherwise, so returns >= 0 Used by heuristics.
int rangeType() const
Type - 1 points, 2 ranges.
int modelSequence() const
Model column number.
Simple Branch and bound class.
virtual void print() const
Print something about branch - only if log level high.
int numberRanges() const
Number of points.
Abstract branching object base class Now just difference with OsiBranchingObject.
virtual bool canDoHeuristics() const
Return true if object can take part in normal heuristics.
virtual ~CbcLotsizeBranchingObject()
Destructor.
virtual CbcObject * clone() const
Clone.
void setModelSequence(int value)
Set model column number.
CbcModel * model() const
Return model.
virtual void print()
Print something about branch - only if log level high.
Lotsize branching object.
double up_[2]
Lower [0] and upper [1] bounds for the up arm (way_ = 1)
double down_[2]
Lower [0] and upper [1] bounds for the down arm (way_ = -1)
virtual void floorCeiling(double &floorLotsize, double &ceilingLotsize, double value, double tolerance) const
Returns floor and ceiling.
int rangeType_
Type - 1 points, 2 ranges.
CbcModel * model() const
Return model.
virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way)
Creates a branching object.