Go to the documentation of this file.
8 #ifndef CbcSimpleInteger_H
9 #define CbcSimpleInteger_H
37 int way,
double value);
47 double lowerValue,
double upperValue);
71 virtual void fix(OsiSolverInterface *solver,
72 double *lower,
double *upper,
73 int branchState)
const;
76 virtual bool tighten(OsiSolverInterface *);
104 memcpy(
down_, bounds, 2 *
sizeof(
double));
109 memcpy(
up_, bounds, 2 *
sizeof(
double));
111 #ifdef FUNNY_BRANCHING
114 inline const int *variables()
const
119 inline const double *newBounds()
const
124 inline int numberExtraChangedBounds()
const
126 return numberExtraChangedBounds_;
129 int applyExtraBounds(
int iColumn,
double lower,
double upper,
int way);
133 inline bool active()
const
135 return (
down_[1] != -COIN_DBL_MAX);
160 #ifdef FUNNY_BRANCHING
167 int numberExtraChangedBounds_;
199 virtual double infeasibility(
const OsiBranchingInformation *info,
208 virtual double feasibleRegion(OsiSolverInterface *solver,
const OsiBranchingInformation *info)
const;
224 virtual OsiSolverBranch *
solverBranch(OsiSolverInterface *solver,
const OsiBranchingInformation *info)
const;
249 virtual void resetBounds(
const OsiSolverInterface *solver);
253 virtual void resetSequenceEtc(
int numberColumns,
const int *originalColumns);
virtual OsiSolverBranch * solverBranch() const
Create an OsiSolverBranch object.
int way() const
Get the state of the branching object.
int variable() const
Index identifying the associated CbcObject within its class.
double breakEven_
Breakeven i.e. >= this preferred is up.
void fillPart(int variable, int way, double value)
Does part of constructor.
int preferredWay() const
If -1 down always chosen first, +1 up always, 0 normal.
OsiSimpleInteger * osiObject() const
Construct an OsiSimpleInteger object.
void setUpBounds(const double bounds[2])
Set lower and upper bounds for up branch.
virtual void fix(OsiSolverInterface *solver, double *lower, double *upper, int branchState) const
Update bounds in solver as in 'branch' and update given bounds.
virtual void previousBranch()
Reset every information so that the branching object appears to point to the previous child.
virtual void feasibleRegion()=0
For the variable(s) referenced by the object, look at the current solution and set bounds to match th...
double originalUpperBound() const
double breakEven() const
Breakeven e.g 0.7 -> >= 0.7 go up first.
virtual double branch()=0
Execute the actions required to branch, as specified by the current state of the branching object,...
void setColumnNumber(int value)
Set column number.
double up_[2]
Lower [0] and upper [1] bounds for the up arm (way_ = 1)
virtual CbcBranchObjType type() const
Return the type (an integer identifier) of this.
const double * downBounds() const
Lower and upper bounds for down branch.
virtual void resetSequenceEtc(int numberColumns, const int *originalColumns)
Change column numbers after preprocessing.
CbcIntegerBranchingObject()
Default constructor.
CbcSimpleInteger & operator=(const CbcSimpleInteger &rhs)
double originalLowerBound() const
Original bounds.
virtual CbcBranchingObject * clone() const
Clone.
const double * upBounds() const
Lower and upper bounds for up branch.
int columnNumber_
Column number in model.
virtual double branch()
Sets the bounds for the variable according to the current arm of the branch and advances the object s...
virtual ~CbcIntegerBranchingObject()
Destructor.
Simple Branch and bound class.
CbcIntegerBranchingObject & operator=(const CbcIntegerBranchingObject &rhs)
Assignment operator.
void setBreakEven(double value)
Set breakeven e.g 0.7 -> >= 0.7 go up first.
virtual CbcRangeCompare compareBranchingObject(const CbcBranchingObject *brObj, const bool replaceIfOverlap=false)
Compare the this with brObj.
void setOriginalUpperBound(double value)
virtual void print() const
Print something about branch - only if log level high.
Abstract branching object base class Now just difference with OsiBranchingObject.
virtual void resetBounds(const OsiSolverInterface *solver)
Reset variable bounds to their original values.
virtual int columnNumber() const
Column number if single column object -1 otherwise, so returns >= 0 Used by heuristics.
virtual CbcObject * clone() const
Clone.
CbcModel * model() const
Return model.
Simple branching object for an integer variable.
double down_[2]
Lower [0] and upper [1] bounds for the down arm (way_ = -1)
double originalUpper_
Original upper bound.
void setDownBounds(const double bounds[2])
Set lower and upper bounds for down branch.
Define a single integer class.
int preferredWay_
If -1 down always chosen first, +1 up always, 0 normal.
CbcModel * model() const
Return model.
virtual ~CbcSimpleInteger()
virtual bool tighten(OsiSolverInterface *)
Change (tighten) bounds in object to reflect bounds in solver.
double originalLower_
data
void fillCreateBranch(CbcIntegerBranchingObject *branching, const OsiBranchingInformation *info, int way)
Fills in a created branching object.
virtual void print()
Print something about branch - only if log level high.
virtual double infeasibility(const OsiBranchingInformation *info, int &preferredWay) const
Infeasibility - large is 0.5.
void setOriginalLowerBound(double value)
virtual void feasibleRegion()
Set bounds to fix the variable at the current (integer) value.
virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way)
Create a branching object and indicate which way to branch first.