11 #include "CoinModel.hpp"
12 #include "OsiClpSolverInterface.hpp"
13 #include "OsiChooseVariable.hpp"
16 class CoinPackedMatrix;
46 virtual int fathom(
bool allFixed) ;
53 double *
nonlinearSLP(
int numberPasses,
double deltaTolerance);
92 void load( CoinModel & modelObject,
bool tightenBounds =
false,
int logLevel = 1);
94 virtual OsiSolverInterface *
clone(
bool copyData =
true)
const;
110 void addBoundModifier(
bool upperBoundAffected,
bool useUpperBound,
int whichVariable,
int whichVariableAffected,
112 double multiplier = 1.0);
161 CoinPackedMatrix *
quadraticRow(
int rowNumber,
double * linear)
const;
315 int numberAffected,
const int * positionL,
316 const int * positionU,
const double * multiplier);
336 void addBoundModifier(
bool upperBoundAffected,
bool useUpperBound,
int whichVariable,
337 double multiplier = 1.0);
349 unsigned char affect;
350 unsigned char ubUsed;
357 } boundElementAction;
361 OsiSolverInterface *
model_;
410 virtual int solution(
double & objectiveValue,
411 double * newSolution);
425 #include "OsiBranchingObject.hpp"
430 class CoinWarmStartBasis;
445 OsiOldLink (
const OsiSolverInterface * solver,
int numberMembers,
447 const double * weights,
int setNumber);
454 OsiOldLink (
const OsiSolverInterface * solver,
int numberMembers,
456 const double * weights,
int setNumber);
462 virtual OsiObject *
clone()
const;
470 using OsiObject::infeasibility ;
472 virtual double infeasibility(
const OsiBranchingInformation * info,
int & whichWay)
const;
474 using OsiObject::feasibleRegion ;
480 virtual double feasibleRegion(OsiSolverInterface * solver,
const OsiBranchingInformation * info)
const;
486 virtual OsiBranchingObject *
createBranch(OsiSolverInterface * solver,
const OsiBranchingInformation * info,
int way)
const;
489 virtual void resetSequenceEtc(
int numberColumns,
const int * originalColumns);
535 virtual OsiBranchingObject *
clone()
const;
540 using OsiBranchingObject::branch ;
542 virtual double branch(OsiSolverInterface * solver);
544 using OsiBranchingObject::print ;
547 virtual void print(
const OsiSolverInterface * solver = NULL);
566 OsiOneLink (
const OsiSolverInterface * solver,
int xRow,
int xColumn,
int xyRow,
567 const char * functionString);
598 class OsiLink :
public OsiSOS {
608 OsiLink (
const OsiSolverInterface * solver,
int yRow,
609 int yColumn,
double meshSize);
615 virtual OsiObject *
clone()
const;
623 using OsiObject::infeasibility ;
625 virtual double infeasibility(
const OsiBranchingInformation * info,
int & whichWay)
const;
627 using OsiObject::feasibleRegion ;
633 virtual double feasibleRegion(OsiSolverInterface * solver,
const OsiBranchingInformation * info)
const;
639 virtual OsiBranchingObject *
createBranch(OsiSolverInterface * solver,
const OsiBranchingInformation * info,
int way)
const;
642 virtual void resetSequenceEtc(
int numberColumns,
const int * originalColumns);
695 virtual OsiBranchingObject *
clone()
const;
700 using OsiBranchingObject::branch ;
702 virtual double branch(OsiSolverInterface * solver);
704 using OsiBranchingObject::print ;
707 virtual void print(
const OsiSolverInterface * solver = NULL);
732 double xMesh,
double yMesh,
733 int numberExistingObjects = 0,
const OsiObject ** objects = NULL );
742 double xMesh,
double yMesh,
743 int numberExistingObjects = 0,
const OsiObject ** objects = NULL );
749 virtual OsiObject *
clone()
const;
757 using OsiObject::infeasibility ;
759 virtual double infeasibility(
const OsiBranchingInformation * info,
int & whichWay)
const;
761 using OsiObject::feasibleRegion ;
767 virtual double feasibleRegion(OsiSolverInterface * solver,
const OsiBranchingInformation * info)
const;
773 virtual OsiBranchingObject *
createBranch(OsiSolverInterface * solver,
const OsiBranchingInformation * info,
int way)
const;
776 virtual void resetSequenceEtc(
int numberColumns,
const int * originalColumns);
873 void setMeshSizes(
const OsiSolverInterface * solver,
double x,
double y);
904 void newBounds(OsiSolverInterface * solver,
int way,
short xOrY,
double separator)
const;
906 int updateCoefficients(
const double * lower,
const double * upper,
double * objective,
907 CoinPackedMatrix * matrix, CoinWarmStartBasis * basis)
const;
911 void getCoefficients(
const OsiSolverInterface * solver,
double xB[2],
double yB[2],
double xybar[4])
const;
913 double computeLambdas(
const double xB[3],
const double yB[3],
const double xybar[4],
double lambda[4])
const;
919 double getMovement(
const OsiBranchingInformation * info);
923 void computeLambdas(
const OsiSolverInterface * solver,
double lambda[4])
const;
999 double separator,
int chosen);
1008 virtual OsiBranchingObject *
clone()
const;
1013 using OsiBranchingObject::branch ;
1015 virtual double branch(OsiSolverInterface * solver);
1017 using OsiBranchingObject::print ;
1020 virtual void print(
const OsiSolverInterface * solver = NULL);
1056 virtual OsiObject *
clone()
const;
1065 virtual double improvement(
const OsiSolverInterface * solver)
const;
1071 double newGrid(OsiSolverInterface * solver,
int type)
const;
1107 virtual OsiObject *
clone()
const;
1115 using OsiObject::infeasibility ;
1117 virtual double infeasibility(
const OsiBranchingInformation * info,
int & whichWay)
const;
1123 virtual OsiBranchingObject *
createBranch(OsiSolverInterface * solver,
const OsiBranchingInformation * info,
int way)
const;
1145 OsiUsesBiLinear (
const OsiSolverInterface * solver,
int iColumn,
int type);
1157 virtual OsiObject *
clone()
const;
1165 using OsiObject::infeasibility ;
1167 virtual double infeasibility(
const OsiBranchingInformation * info,
int & whichWay)
const;
1173 virtual OsiBranchingObject *
createBranch(OsiSolverInterface * solver,
const OsiBranchingInformation * info,
int way)
const;
1175 using OsiObject::feasibleRegion ;
1181 virtual double feasibleRegion(OsiSolverInterface * solver,
const OsiBranchingInformation * info)
const;
1218 virtual OsiChooseVariable *
clone()
const;
1227 virtual int setupList ( OsiBranchingInformation *info,
bool initialize);
1241 virtual int chooseVariable( OsiSolverInterface * solver, OsiBranchingInformation *info,
bool fixVariables);
1260 #include "CglStored.hpp"
1262 class CoinWarmStartBasis;
1279 virtual void generateCuts(
const OsiSolverInterface & si, OsiCuts & cs,
1280 const CglTreeInfo info = CglTreeInfo())
const;
1292 virtual CglCutGenerator *
clone()
const;
1334 virtual OsiSolverInterface *
clone(
bool copyData =
true)
const;
1401 int numberPasses,
double deltaTolerance,
void setXSatisfied(double value)
virtual ~CglTemporary()
Destructor.
double newGrid(OsiSolverInterface *solver, int type) const
change grid if type 0 then use solution and make finer if 1 then back to original returns mesh size ...
OsiChooseStrongSubset()
Default Constructor.
CoinModel coinModel_
Model in CoinModel format.
int numberPoints_
Number of points.
int firstLambda() const
First lambda (of 4)
double meshSize_
data Current increment for y points
virtual void resolve()
Resolve an LP relaxation after problem modification.
double defaultBound_
Default maximum bound.
int * convex_
Indicator whether is convex, concave or neither -1 concave, 0 neither, +1 convex. ...
void addBiLinearObjects(OsiSolverLink *solver)
Add all bi-linear objects.
OsiBiLinearBranchingObject()
virtual void resetSequenceEtc(int numberColumns, const int *originalColumns)
Redoes data when sequence numbers change.
virtual OsiObject * clone() const
Clone.
int integerPriority_
Priority for integers.
virtual OsiBranchingObject * clone() const
Clone.
void setXYSatisfied(double value)
virtual OsiBranchingObject * createBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way) const
Creates a branching object.
void setBranchingStrategyOnVariables(int strategyValue, int priorityValue=-1, int mode=7)
Set options and priority on all or some biLinear variables 1 - on I-I 2 - on I-x 4 - on x-x or combin...
int specialOptions2() const
Get special options.
int type_
Type of variable - 0 continuous, 1 integer.
virtual bool canDoHeuristics() const
Return true if object can take part in normal heuristics.
OsiLink & operator=(const OsiLink &rhs)
int xyRow() const
XY row.
void gutsOfCopy(const OsiSolverLink &rhs)
Do real work of copy.
virtual bool boundBranch() const
Return true if branch should only bound variables.
int * startNonLinear_
Starts of lists.
double bestObjectiveValue() const
Objective value of best solution found internally.
void setDefaultBound(double value)
Add a bound modifier.
CoinPackedMatrix * cleanMatrix() const
Clean copy of matrix So we can add rows.
int updateCoefficients(ClpSimplex *solver, CoinPackedMatrix *matrix)
Update coefficients - returns number updated if in updating mode.
virtual bool boundBranch() const
Return true if branch should only bound variables.
OsiBiLinearBranchingObject & operator=(const OsiBiLinearBranchingObject &rhs)
virtual double infeasibility(const OsiBranchingInformation *info, int &whichWay) const
Infeasibility - large is 0.5.
int boundType() const
Simple quadratic bound marker.
Branching object for Linked ordered sets.
This is to allow the user to replace initialSolve and resolve.
Define Continuous BiLinear objects for an == bound.
double yOtherSatisfied() const
Y other satisfied if less than this away from mesh.
double xySatisfied() const
XY satisfied if two version differ by less than this.
OsiLinkBranchingObject & operator=(const OsiLinkBranchingObject &rhs)
void setNumberPoints(int value)
virtual ~OsiBiLinearBranchingObject()
CoinPackedMatrix * quadraticRow(int rowNumber, double *linear) const
Gets correct form for a quadratic row - user to delete.
ClpSimplex * quadraticModel_
Copy of quadratic model if one.
int numberLinks() const
Number of links for each member.
virtual void resetModel(CbcModel *model)
Resets stuff if model changes.
void load(CoinModel &modelObject, bool tightenBounds=false, int logLevel=1)
Default Constructor.
virtual OsiChooseVariable * clone() const
Clone.
heuristic - just picks up any good solution
OsiUsesBiLinear & operator=(const OsiUsesBiLinear &rhs)
Assignment operator.
virtual OsiObject * clone() const
Clone.
OsiLinkedBound & operator=(const OsiLinkedBound &rhs)
Assignment operator.
virtual bool boundBranch() const
Return true if branch should only bound variables.
int xColumn() const
X column.
int numberAffected_
Number of variables/elements affected.
List of bounds which depend on other bounds.
OsiLinkedBound * info_
Information.
double * nonlinearSLP(int numberPasses, double deltaTolerance)
Solves nonlinear problem from CoinModel using SLP - may be used as crash for other algorithms when nu...
int numberPoints() const
Number of points.
OsiSolverLinearizedQuadratic()
Default Constructor.
double xMeshSize() const
X meshSize.
virtual int solution(double &objectiveValue, double *newSolution)=0
returns 0 if no solution, 1 if valid solution with better objective value than one passed in Sets sol...
OsiChooseStrongSubset & operator=(const OsiChooseStrongSubset &rhs)
Assignment operator.
void setBoundType(int value)
This is for codes where solver needs to know about CbcModel Seems to provide only one value-added fea...
void setBiLinearPriority(int value)
Set biLinear priority.
void setMeshSizes(const OsiSolverInterface *solver, double x, double y)
Set sizes and other stuff.
int numberBiLinear_
data Number of bilinear objects (maybe could be more general)
short chosen_
Which chosen -1 none, 0 x, 1 y.
int boundType_
Simple quadratic bound marker.
Branching object for Linked ordered sets.
double * multiplier_
Multiplier for coefficient on row.
void addExtraRow(int row, double multiplier)
Adds in data for extra row with variable coefficients.
double xSatisfied() const
X satisfied if less than this away from mesh.
void setSpecialOptions2(int value)
Set special options.
int numberFix_
Number of variables which when fixed help.
void setCoefficient(double value)
Set coefficient.
int objectiveRow_
Objective transfer row if one.
int biLinearPriority() const
Get biLinear priority.
Define a single variable class which is involved with OsiBiLinear objects.
void newBounds(OsiSolverInterface *solver, int way, short xOrY, double separator) const
Does work of branching.
virtual double branch(OsiSolverInterface *solver)
Does next branch and updates state.
double xyBranchValue_
value of x or y to branch about
void setMeshSizes(double value)
Set all mesh sizes on x-x variables.
double xSatisfied_
x satisfied if less than this away from mesh
OsiSimpleFixedInteger & operator=(const OsiSimpleFixedInteger &rhs)
Assignment operator.
double bestObjectiveValue_
Objective value of best solution found internally.
ClpSimplex * quadraticModel() const
Copy of quadratic model if one.
void setXOtherSatisfied(double value)
virtual ~OsiBiLinearEquality()
virtual void initialSolve()
Solve initial LP relaxation.
virtual int solution(double &objectiveValue, double *newSolution)
returns 0 if no solution, 1 if valid solution.
CglTemporary & operator=(const CglTemporary &rhs)
Assignment operator.
Define data for one link.
virtual void initialSolve()
Solve initial LP relaxation.
virtual void print(const OsiSolverInterface *solver=NULL)
Print something about branch - only if log level high.
virtual ~OsiChooseStrongSubset()
Destructor.
double xOtherSatisfied_
X other satisfied if less than this away from mesh.
virtual ~OsiSolverLinearizedQuadratic()
Destructor.
virtual void print(const OsiSolverInterface *solver=NULL)
Print something about branch - only if log level high.
double defaultMeshSize() const
Default meshSize.
virtual OsiBranchingObject * createBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way) const
Creates a branching object.
OsiSolverInterface * model_
Pointer back to model.
OsiOneLink & operator=(const OsiOneLink &rhs)
int numberLinks_
Number of links.
ClpSimplex * quadraticModel_
Copy of quadratic model if one.
virtual void resetSequenceEtc(int numberColumns, const int *originalColumns)
Redoes data when sequence numbers change.
void setSpecialOptions3(int value)
Set special options.
virtual double infeasibility(const OsiBranchingInformation *info, int &whichWay) const
Infeasibility - large is 0.5.
OsiOldLinkBranchingObject & operator=(const OsiOldLinkBranchingObject &rhs)
boundElementAction * affected_
Actions.
virtual int setupList(OsiBranchingInformation *info, bool initialize)
Sets up strong list and clears all if initialize is true.
virtual OsiBranchingObject * createBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way) const
Creates a branching object.
Define a single integer class - but one where you keep branching until fixed even if satisfied...
Stored Temporary Cut Generator Class - destroyed after first use.
double bestObjectiveValue_
Objective value of best solution found internally.
std::string function_
Function.
void addBoundModifier(bool upperBoundAffected, bool useUpperBound, int whichVariable, int whichVariableAffected, double multiplier=1.0)
Add a bound modifier.
double yOtherSatisfied_
Y other satisfied if less than this away from mesh.
void sayConvex(bool convex)
Say convex (should work it out) - if convex false then strictly concave.
ClpSimplex * approximateSolution(CoinModel &coinModel, int numberPasses, double deltaTolerance, int mode=0)
Return an approximate solution to a CoinModel.
OsiSimpleFixedInteger()
Default Constructor.
virtual ~OsiSolverLink()
Destructor.
int firstLambda_
First lambda (of 4)
virtual double improvement(const OsiSolverInterface *solver) const
Possible improvement.
This class chooses a variable to branch on.
double bestObjectiveValue() const
Objective value of best solution found internally.
virtual OsiBranchingObject * clone() const
Clone.
void setBestSolution(const double *solution, int numberColumns)
Set best solution found internally.
double xOtherSatisfied() const
X other satisfied if less than this away from mesh.
int xColumn_
Column which defines x.
CoinPackedMatrix * matrix_
Clean copy of matrix Marked coefficients will be multiplied by L or U.
void setYMeshSize(double value)
virtual double branch(OsiSolverInterface *solver)
Does next branch and updates state.
OsiBiLinear & operator=(const OsiBiLinear &rhs)
virtual ~OsiSimpleFixedInteger()
Destructor.
const double * bestSolution() const
Best solution found internally.
int yColumn_
Column which defines y.
const CoinModel * coinModel() const
Return CoinModel.
double * bestSolution_
Best solution found internally.
OsiBiLinearEquality & operator=(const OsiBiLinearEquality &rhs)
int numberObjectsToUse() const
Number of objects to use.
int specialOptions3_
0 bit (1) - don't do mini B&B 1 bit (2) - quadratic only in objective
virtual double feasibleRegion(OsiSolverInterface *solver, const OsiBranchingInformation *info) const
Set bounds to fix the variable at the current value.
int objectiveVariable() const
Objective transfer variable if one.
virtual CbcHeuristic * clone() const
Clone.
OsiSolverLinearizedQuadratic & operator=(const OsiSolverLinearizedQuadratic &rhs)
Assignment operator.
virtual double infeasibility(const OsiBranchingInformation *info, int &whichWay) const
Infeasibility - large is 0.5.
double * bestSolution_
Best solution found internally.
int * fixVariables_
list of fixed variables
virtual OsiBranchingObject * createBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way) const
Creates a branching object.
void getPseudoShadow(const OsiBranchingInformation *info)
Sets infeasibility and other when pseudo shadow prices.
ClpSimplex * quadraticModel() const
Copy of quadratic model if one.
double xyCoefficient(const double *solution) const
Returns true value of single xyRow coefficient.
virtual OsiSolverInterface * clone(bool copyData=true) const
Clone.
virtual CglCutGenerator * clone() const
Clone.
int yRow_
y row (-1 if x*x)
int * whichNonLinear_
Indices in a list/row.
void getCoefficients(const OsiSolverInterface *solver, double xB[2], double yB[2], double xybar[4]) const
Get LU coefficients from matrix.
double defaultBound() const
Default maximumbound.
virtual ~OsiUsesBiLinear()
Destructor.
int integerPriority() const
Get integer priority.
void setYSatisfied(double value)
int branchingStrategy() const
branching strategy etc bottom 2 bits 0 branch on either, 1 branch on x, 2 branch on y next bit 4 set ...
virtual OsiObject * clone() const
Clone.
double ySatisfied_
y satisfied if less than this away from mesh
int doAOCuts(CglTemporary *cutGen, const double *solution, const double *solution2)
Do OA cuts.
void setBiLinearPriorities(int value, double meshSize=1.0)
Set all biLinear priorities on x-x variables.
Define Special Linked Ordered Sets.
int yRow_
Row which defines y.
double coefficient() const
Coefficient.
void setBestObjectiveValue(double value)
Set objective value of best solution found internally.
CoinPackedMatrix * originalRowCopy_
Row copy of matrix Just genuine columns and rows.
virtual double infeasibility(const OsiBranchingInformation *info, int &whichWay) const
Infeasibility - large is 0.5.
virtual ~OsiOldLinkBranchingObject()
double linearizedBAB(CglStored *cut)
Solve linearized quadratic objective branch and bound.
virtual OsiObject * clone() const
Clone.
void setYOtherSatisfied(double value)
OsiSolverLink()
Default Constructor.
virtual OsiBranchingObject * clone() const
Clone.
double xySatisfied_
xy satisfied if less than this away from true
virtual void resetSequenceEtc(int numberColumns, const int *originalColumns)
Redoes data when sequence numbers change.
void setXMeshSize(double value)
void setDefaultMeshSize(double value)
Add a bound modifier.
double ySatisfied() const
Y satisfied if less than this away from mesh.
virtual int chooseVariable(OsiSolverInterface *solver, OsiBranchingInformation *info, bool fixVariables)
Choose a variable Returns - -1 Node is infeasible 0 Normal termination - we have a candidate 1 All lo...
virtual int fathom(bool allFixed)
Problem specific Returns -1 if node fathomed and no solution 0 if did nothing 1 if node fathomed and ...
virtual double feasibleRegion(OsiSolverInterface *solver, const OsiBranchingInformation *info) const
Set bounds to fix the variable at the current (integer) value.
double getMovement(const OsiBranchingInformation *info)
Gets sum of movements to correct value.
int biLinearPriority_
Priority for bilinear.
int convexity_
Convexity row.
int specialOptions3() const
Get special options.
void updateBounds(ClpSimplex *solver)
Update other bounds.
OsiObject ** objects_
Objects.
void setIntegerPriority(int value)
Set integer priority.
const double * bestSolution() const
Best solution found internally.
virtual OsiObject * clone() const
Clone.
virtual void generateCuts(const OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo info=CglTreeInfo()) const
Generate Mixed Integer Stored cuts for the model of the solver interface, si.
virtual OsiObject * clone() const
Clone.
void setBranchingStrategy(int value)
int numberLinks() const
Number of links for each member.
int numberNonLinearRows_
Number of rows with nonLinearities.
virtual double infeasibility(const OsiBranchingInformation *info, int &whichWay) const
Infeasibility - large is 0.5.
OsiOldLinkBranchingObject()
int * rowNonLinear_
Row number for a list.
virtual ~OsiLinkBranchingObject()
virtual bool canDoHeuristics() const
Return true if object can take part in normal heuristics.
double * heuristicSolution(int numberPasses, double deltaTolerance, int mode)
Solves nonlinear problem from CoinModel using SLP - and then tries to get heuristic solution Returns ...
virtual OsiBranchingObject * createBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way) const
Creates a branching object.
CbcHeuristicDynamic3 & operator=(const CbcHeuristicDynamic3 &rhs)
Illegal Assignment operator.
int specialOptions2_
0 bit (1) - call fathom (may do mini B&B) 1 bit (2) - quadratic only in objective (add OA cuts) 2 bit...
double yMeshSize() const
Y meshSize.
virtual bool canDealWithOdd() const
Returns true if can deal with "odd" problems e.g. sos type 2.
void setNumberObjectsToUse(int value)
Set number of objects to use.
int variable() const
Get variable.
int * extraRow_
Row number.
int yColumn() const
Y column.
virtual double feasibleRegion(OsiSolverInterface *solver, const OsiBranchingInformation *info) const
Set bounds to fix the variable at the current (integer) value.
virtual void print(const OsiSolverInterface *solver=NULL)
Print something about branch - only if log level high.
double computeLambdas(const double xB[3], const double yB[3], const double xybar[4], double lambda[4]) const
Compute lambdas (third entry in each .B is current value) (nonzero if bad)
double defaultMeshSize_
Default mesh.
virtual bool canDoHeuristics() const
Return true if object can take part in normal heuristics.
void analyzeObjects()
Analyze constraints to see which are convex (quadratic)
int updateCoefficients(const double *lower, const double *upper, double *objective, CoinPackedMatrix *matrix, CoinWarmStartBasis *basis) const
Updates coefficients - returns number updated.
OsiOldLink & operator=(const OsiOldLink &rhs)
OsiUsesBiLinear()
Default Constructor.
int branchingStrategy_
branching strategy etc bottom 2 bits 0 branch on either, 1 branch on x, 2 branch on y next bit 4 set ...
virtual double feasibleRegion(OsiSolverInterface *solver, const OsiBranchingInformation *info) const
Set bounds to fix the variable at the current (integer) value.
OsiSolverLink & operator=(const OsiSolverLink &rhs)
Assignment operator.
This is to allow the user to replace initialSolve and resolve This version changes coefficients...
virtual double checkInfeasibility(const OsiBranchingInformation *info) const
int numberVariables_
Number of variables in tightening phase.
int maximumAffected_
Maximum number of variables/elements affected.
Branching object for BiLinear objects.
void gutsOfDestructor(bool justNullify=false)
Do real work of initialize.
int numberExtraRows_
Number of extra rows (coefficients to be modified)
void addTighterConstraints()
Add reformulated bilinear constraints.
int numberObjectsToUse_
Number of objects to be used (and set in solver)
int objectiveVariable_
Objective transfer variable if one.
virtual void setModel(CbcModel *model)
update model
Simple Branch and bound class.
virtual OsiSolverInterface * clone(bool copyData=true) const
Clone.
~OsiLinkedBound()
Destructor.
virtual bool boundBranch() const
Return true if branch should only bound variables.
CoinPackedMatrix * originalRowCopy() const
Row copy of matrix Just genuine columns and rows Linear part.
void addBoundModifier(bool upperBoundAffected, bool useUpperBound, int whichVariable, double multiplier=1.0)
Add a bound modifier.
void setFixedPriority(int priorityValue)
Two tier integer problem where when set of variables with priority less than this are fixed the probl...
virtual double branch(OsiSolverInterface *solver)
Does next branch and updates state.
CglTemporary()
Default constructor.
OsiLinkedBound()
Default Constructor.
short chosen_
data 1 means branch on x, 2 branch on y