Go to the documentation of this file.
13 #include "CoinModel.hpp"
14 #include "OsiClpSolverInterface.hpp"
15 #include "OsiChooseVariable.hpp"
18 class CoinPackedMatrix;
94 void load( CoinModel & modelObject,
bool tightenBounds =
false,
int logLevel = 1);
96 virtual OsiSolverInterface *
clone(
bool copyData =
true)
const;
112 void addBoundModifier(
bool upperBoundAffected,
bool useUpperBound,
int whichVariable,
int whichVariableAffected,
114 double multiplier = 1.0);
317 int numberAffected,
const int * positionL,
318 const int * positionU,
const double * multiplier);
339 double multiplier = 1.0);
351 unsigned char affect;
352 unsigned char ubUsed;
359 } boundElementAction;
363 OsiSolverInterface * model_;
370 int maximumAffected_;
372 boundElementAction * affected_;
413 double * newSolution);
427 #include "OsiBranchingObject.hpp"
432 class CoinWarmStartBasis;
447 OsiOldLink (
const OsiSolverInterface * solver,
int numberMembers,
449 const double * weights,
int setNumber);
456 OsiOldLink (
const OsiSolverInterface * solver,
int numberMembers,
458 const double * weights,
int setNumber);
472 using OsiObject::infeasibility ;
474 virtual double infeasibility(
const OsiBranchingInformation * info,
int & whichWay)
const;
476 using OsiObject::feasibleRegion ;
482 virtual double feasibleRegion(OsiSolverInterface * solver,
const OsiBranchingInformation * info)
const;
488 virtual OsiBranchingObject *
createBranch(OsiSolverInterface * solver,
const OsiBranchingInformation * info,
int way)
const;
537 virtual OsiBranchingObject *
clone()
const;
542 using OsiBranchingObject::branch ;
544 virtual double branch(OsiSolverInterface * solver);
546 using OsiBranchingObject::print ;
549 virtual void print(
const OsiSolverInterface * solver = NULL);
569 const char * functionString);
610 OsiLink (
const OsiSolverInterface * solver,
int yRow,
611 int yColumn,
double meshSize);
625 using OsiObject::infeasibility ;
627 virtual double infeasibility(
const OsiBranchingInformation * info,
int & whichWay)
const;
629 using OsiObject::feasibleRegion ;
635 virtual double feasibleRegion(OsiSolverInterface * solver,
const OsiBranchingInformation * info)
const;
641 virtual OsiBranchingObject *
createBranch(OsiSolverInterface * solver,
const OsiBranchingInformation * info,
int way)
const;
697 virtual OsiBranchingObject *
clone()
const;
702 using OsiBranchingObject::branch ;
704 virtual double branch(OsiSolverInterface * solver);
706 using OsiBranchingObject::print ;
709 virtual void print(
const OsiSolverInterface * solver = NULL);
734 double xMesh,
double yMesh,
735 int numberExistingObjects = 0,
const OsiObject ** objects = NULL );
744 double xMesh,
double yMesh,
745 int numberExistingObjects = 0,
const OsiObject ** objects = NULL );
759 using OsiObject::infeasibility ;
761 virtual double infeasibility(
const OsiBranchingInformation * info,
int & whichWay)
const;
763 using OsiObject::feasibleRegion ;
769 virtual double feasibleRegion(OsiSolverInterface * solver,
const OsiBranchingInformation * info)
const;
775 virtual OsiBranchingObject *
createBranch(OsiSolverInterface * solver,
const OsiBranchingInformation * info,
int way)
const;
875 void setMeshSizes(
const OsiSolverInterface * solver,
double x,
double y);
906 void newBounds(OsiSolverInterface * solver,
int way,
short xOrY,
double separator)
const;
909 CoinPackedMatrix * matrix, CoinWarmStartBasis * basis)
const;
913 void getCoefficients(
const OsiSolverInterface * solver,
double xB[2],
double yB[2],
double xybar[4])
const;
915 double computeLambdas(
const double xB[3],
const double yB[3],
const double xybar[4],
double lambda[4])
const;
1001 double separator,
int chosen);
1010 virtual OsiBranchingObject *
clone()
const;
1015 using OsiBranchingObject::branch ;
1017 virtual double branch(OsiSolverInterface * solver);
1019 using OsiBranchingObject::print ;
1022 virtual void print(
const OsiSolverInterface * solver = NULL);
1073 double newGrid(OsiSolverInterface * solver,
int type)
const;
1076 return numberPoints_;
1079 numberPoints_ = value;
1117 using OsiObject::infeasibility ;
1119 virtual double infeasibility(
const OsiBranchingInformation * info,
int & whichWay)
const;
1125 virtual OsiBranchingObject *
createBranch(OsiSolverInterface * solver,
const OsiBranchingInformation * info,
int way)
const;
1167 using OsiObject::infeasibility ;
1169 virtual double infeasibility(
const OsiBranchingInformation * info,
int & whichWay)
const;
1175 virtual OsiBranchingObject *
createBranch(OsiSolverInterface * solver,
const OsiBranchingInformation * info,
int way)
const;
1177 using OsiObject::feasibleRegion ;
1183 virtual double feasibleRegion(OsiSolverInterface * solver,
const OsiBranchingInformation * info)
const;
1220 virtual OsiChooseVariable *
clone()
const;
1229 virtual int setupList ( OsiBranchingInformation *info,
bool initialize);
1243 virtual int chooseVariable( OsiSolverInterface * solver, OsiBranchingInformation *info,
bool fixVariables);
1262 #include "CglStored.hpp"
1264 class CoinWarmStartBasis;
1282 const CglTreeInfo info = CglTreeInfo());
1294 virtual CglCutGenerator *
clone()
const;
1336 virtual OsiSolverInterface *
clone(
bool copyData =
true)
const;
1403 int numberPasses,
double deltaTolerance,
double bestObjectiveValue() const
Objective value of best solution found internally.
virtual void setModel(CbcModel *model)
update model
int objectiveRow_
Objective transfer row if one.
ClpSimplex * approximateSolution(CoinModel &coinModel, int numberPasses, double deltaTolerance, int mode=0)
Return an approximate solution to a CoinModel.
double ySatisfied_
y satisfied if less than this away from mesh
void addBiLinearObjects(OsiSolverLink *solver)
Add all bi-linear objects.
int xColumn() const
X column.
OsiChooseStrongSubset & operator=(const OsiChooseStrongSubset &rhs)
Assignment operator.
int * fixVariables_
list of fixed variables
void setMeshSizes(const OsiSolverInterface *solver, double x, double y)
Set sizes and other stuff.
List of bounds which depend on other bounds.
OsiBiLinear(const OsiBiLinear &)
void setSpecialOptions3(int value)
Set special options.
double * bestSolution_
Best solution found internally.
int variable() const
Get variable.
Define data for one link.
virtual ~OsiBiLinearBranchingObject()
double * multiplier_
Multiplier for coefficient on row.
void setBoundType(int value)
OsiSolverLinearizedQuadratic(ClpSimplex *quadraticModel)
Useful constructor (solution should be good)
OsiOldLink(const OsiOldLink &)
OsiSimpleFixedInteger & operator=(const OsiSimpleFixedInteger &rhs)
Assignment operator.
virtual double improvement(const OsiSolverInterface *solver) const
Possible improvement.
CglTemporary & operator=(const CglTemporary &rhs)
Assignment operator.
OsiBiLinearEquality & operator=(const OsiBiLinearEquality &rhs)
virtual double infeasibility(const OsiBranchingInformation *info, int &whichWay) const
Infeasibility - large is 0.5.
virtual void initialSolve()
Solve initial LP relaxation.
virtual OsiBranchingObject * clone() const
Clone.
int yRow_
y row (-1 if x*x)
OsiSolverLink()
Default Constructor.
double yMeshSize() const
Y meshSize.
int firstLambda_
First lambda (of 4)
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)
Branching object for Linked ordered sets.
double xOtherSatisfied() const
X other satisfied if less than this away from mesh.
OsiOneLink(const OsiOneLink &)
int specialOptions3() const
Get special options.
OsiLinkedBound(const OsiLinkedBound &)
Copy constructor.
virtual void resetModel(CbcModel *model)
Resets stuff if model changes.
virtual double infeasibility(const OsiBranchingInformation *info, int &whichWay) const
Infeasibility - large is 0.5.
void getPseudoShadow(const OsiBranchingInformation *info)
Sets infeasibility and other when pseudo shadow prices.
virtual OsiBranchingObject * clone() const
Clone.
double xySatisfied() const
XY satisfied if two version differ by less than this.
void setYMeshSize(double value)
Define a single integer class - but one where you keep branching until fixed even if satisfied.
Define Special Linked Ordered Sets.
void setXMeshSize(double value)
virtual void print(const OsiSolverInterface *solver=NULL)
Print something about branch - only if log level high.
virtual OsiSolverInterface * clone(bool copyData=true) const
Clone.
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...
void sayConvex(bool convex)
Say convex (should work it out) - if convex false then strictly concave.
void setBranchingStrategy(int value)
virtual ~OsiSimpleFixedInteger()
Destructor.
virtual void resolve()
Resolve an LP relaxation after problem modification.
OsiBiLinearEquality(OsiSolverInterface *solver, int xColumn, int yColumn, int xyRow, double rhs, double xMesh)
Useful constructor - This Adds in rows and variables to construct Ordered Set for x*y = b So note not...
void newBounds(OsiSolverInterface *solver, int way, short xOrY, double separator) const
Does work of branching.
virtual OsiBranchingObject * createBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way) const
Creates a branching object.
void setXOtherSatisfied(double value)
int specialOptions2_
0 bit (1) - call fathom (may do mini B&B) 1 bit (2) - quadratic only in objective (add OA cuts) 2 bit...
void setBiLinearPriority(int value)
Set biLinear priority.
Define Continuous BiLinear objects for an == bound.
int objectiveVariable_
Objective transfer variable if one.
virtual void resetSequenceEtc(int numberColumns, const int *originalColumns)
Redoes data when sequence numbers change.
virtual ~CglTemporary()
Destructor.
void setDefaultMeshSize(double value)
virtual double feasibleRegion(OsiSolverInterface *solver, const OsiBranchingInformation *info) const
Set bounds to fix the variable at the current (integer) value.
int numberFix_
Number of variables which when fixed help.
double bestObjectiveValue() const
Objective value of best solution found internally.
const double * bestSolution() const
Best solution found internally.
int * startNonLinear_
Starts of lists.
CoinPackedMatrix * originalRowCopy() const
Row copy of matrix Just genuine columns and rows Linear part.
virtual bool canDoHeuristics() const
Return true if object can take part in normal heuristics.
int numberObjectsToUse() const
Number of objects to use.
int doAOCuts(CglTemporary *cutGen, const double *solution, const double *solution2)
Do OA cuts.
OsiSolverLink(CoinModel &modelObject)
This creates from a coinModel object.
double defaultMeshSize() const
Default meshSize.
virtual double feasibleRegion(OsiSolverInterface *solver, const OsiBranchingInformation *info) const
Set bounds to fix the variable at the current value.
virtual double feasibleRegion(OsiSolverInterface *solver, const OsiBranchingInformation *info) const
Set bounds to fix the variable at the current (integer) value.
ClpSimplex * quadraticModel_
Copy of quadratic model if one.
~OsiLinkedBound()
Destructor.
double xOtherSatisfied_
X other satisfied if less than this away from mesh.
int numberLinks() const
Number of links for each member.
OsiOneLink & operator=(const OsiOneLink &rhs)
virtual ~OsiOldLinkBranchingObject()
This class chooses a variable to branch on.
ClpSimplex * quadraticModel() const
Copy of quadratic model if one.
double yOtherSatisfied_
Y other satisfied if less than this away from mesh.
OsiLinkBranchingObject(const OsiLinkBranchingObject &)
int numberObjectsToUse_
Number of objects to be used (and set in solver)
OsiOldLinkBranchingObject(OsiSolverInterface *solver, const OsiOldLink *originalObject, int way, double separator)
int * whichNonLinear_
Indices in a list/row.
virtual double infeasibility(const OsiBranchingInformation *info, int &whichWay) const
Infeasibility - large is 0.5.
OsiUsesBiLinear(const OsiSimpleInteger &rhs, int type)
Useful constructor - passed simple integer.
void addExtraRow(int row, double multiplier)
Adds in data for extra row with variable coefficients.
OsiLinkBranchingObject(OsiSolverInterface *solver, const OsiLink *originalObject, int way, double separator)
double bestObjectiveValue_
Objective value of best solution found internally.
virtual OsiObject * clone() const
Clone.
virtual ~OsiSolverLink()
Destructor.
int objectiveVariable() const
Objective transfer variable if one.
OsiSolverLink(const OsiSolverLink &)
Copy constructor.
int numberNonLinearRows_
Number of rows with nonLinearities.
int xColumn_
Column which defines x.
OsiSimpleFixedInteger()
Default Constructor.
OsiChooseStrongSubset(const OsiSolverInterface *solver)
Constructor from solver (so we can set up arrays etc)
OsiBiLinear & operator=(const OsiBiLinear &rhs)
OsiUsesBiLinear & operator=(const OsiUsesBiLinear &rhs)
Assignment operator.
OsiOldLinkBranchingObject(const OsiOldLinkBranchingObject &)
OsiUsesBiLinear(int iColumn, double lower, double upper, int type)
Useful constructor - passed solver index and original bounds.
virtual OsiObject * clone() const
Clone.
void setXYSatisfied(double value)
virtual bool canDoHeuristics() const
Return true if object can take part in normal heuristics.
CbcHeuristicDynamic3(const CbcHeuristicDynamic3 &)
virtual OsiObject * clone() const
Clone.
double xySatisfied_
xy satisfied if less than this away from true
OsiBiLinear(CoinModel *coinModel, int xColumn, int yColumn, int xyRow, double coefficient, double xMesh, double yMesh, int numberExistingObjects=0, const OsiObject **objects=NULL)
Useful constructor - This Adds in rows and variables to construct valid Linked Ordered Set Adds extra...
OsiSimpleFixedInteger(int iColumn, double lower, double upper)
Useful constructor - passed solver index and original bounds.
OsiOneLink(const OsiSolverInterface *solver, int xRow, int xColumn, int xyRow, const char *functionString)
Useful constructor -.
OsiOldLink(const OsiSolverInterface *solver, int numberMembers, int numberLinks, int first, const double *weights, int setNumber)
Useful constructor - A valid solution is if all variables are zero apart from k*numberLink to (k+1)*n...
short chosen_
Which chosen -1 none, 0 x, 1 y.
void setBiLinearPriorities(int value, double meshSize=1.0)
Set all biLinear priorities on x-x variables.
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 ...
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
virtual OsiBranchingObject * createBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way) const
Creates a branching object.
Simple Branch and bound class.
virtual double infeasibility(const OsiBranchingInformation *info, int &whichWay) const
Infeasibility - large is 0.5.
virtual ~OsiChooseStrongSubset()
Destructor.
OsiUsesBiLinear(const OsiUsesBiLinear &rhs)
Copy constructor.
virtual CbcHeuristic * clone() const
Clone.
virtual OsiSolverInterface * clone(bool copyData=true) const
Clone.
OsiBiLinearBranchingObject()
OsiLinkedBound()
Default Constructor.
const CoinModel * coinModel() const
Return CoinModel.
virtual bool boundBranch() const
Return true if branch should only bound variables.
int * rowNonLinear_
Row number for a list.
int branchingStrategy_
branching strategy etc bottom 2 bits 0 branch on either, 1 branch on x, 2 branch on y next bit 4 set ...
OsiSimpleFixedInteger(const OsiSimpleInteger &)
Useful constructor - passed simple integer.
Stored Temporary Cut Generator Class - destroyed after first use.
double linearizedBAB(CglStored *cut)
Solve linearized quadratic objective branch and bound.
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 * convex_
Indicator whether is convex, concave or neither -1 concave, 0 neither, +1 convex.
virtual int fathom(bool allFixed)
Problem specific Returns -1 if node fathomed and no solution 0 if did nothing 1 if node fathomed and ...
OsiSolverLinearizedQuadratic(const OsiSolverLinearizedQuadratic &)
Copy constructor.
ClpSimplex * quadraticModel_
Copy of quadratic model if one.
double defaultBound_
Default maximum bound.
CglTemporary(const CglTemporary &rhs)
Copy constructor.
int biLinearPriority_
Priority for bilinear.
void setYOtherSatisfied(double value)
virtual bool boundBranch() const
Return true if branch should only bound variables.
virtual OsiBranchingObject * createBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way) const
Creates a branching object.
virtual bool canDealWithOdd() const
Returns true if can deal with "odd" problems e.g. sos type 2.
void getCoefficients(const OsiSolverInterface *solver, double xB[2], double yB[2], double xybar[4]) const
Get LU coefficients from matrix.
void setFixedPriority(int priorityValue)
Two tier integer problem where when set of variables with priority less than this are fixed the probl...
int integerPriority() const
Get integer priority.
void setBestSolution(const double *solution, int numberColumns)
Set best solution found internally.
double getMovement(const OsiBranchingInformation *info)
Gets sum of movements to correct value.
virtual void print(const OsiSolverInterface *solver=NULL)
Print something about branch - only if log level high.
void updateBounds(ClpSimplex *solver)
Update other bounds.
void load(CoinModel &modelObject, bool tightenBounds=false, int logLevel=1)
void setBestObjectiveValue(double value)
Set objective value of best solution found internally.
CoinPackedMatrix * cleanMatrix() const
Clean copy of matrix So we can add rows.
virtual ~OsiUsesBiLinear()
Destructor.
int numberVariables_
Number of variables in tightening phase.
OsiUsesBiLinear(const OsiSolverInterface *solver, int iColumn, int type)
Useful constructor - passed solver index.
double xyBranchValue_
value of x or y to branch about
virtual void initialSolve()
Solve initial LP relaxation.
int integerPriority_
Priority for integers.
virtual OsiObject * clone() const
Clone.
OsiBiLinearBranchingObject(OsiSolverInterface *solver, const OsiBiLinear *originalObject, int way, double separator, int chosen)
OsiSolverLinearizedQuadratic()
Default Constructor.
OsiObject ** objects_
Objects.
void addBoundModifier(bool upperBoundAffected, bool useUpperBound, int whichVariable, int whichVariableAffected, double multiplier=1.0)
Add a bound modifier.
This is to allow the user to replace initialSolve and resolve This version changes coefficients.
Branching object for BiLinear objects.
void computeLambdas(const OsiSolverInterface *solver, double lambda[4]) const
Compute lambdas if coefficients not changing.
CglTemporary()
Default constructor.
int biLinearPriority() const
Get biLinear priority.
OsiLink & operator=(const OsiLink &rhs)
virtual int solution(double &objectiveValue, double *newSolution)
returns 0 if no solution, 1 if valid solution.
void analyzeObjects()
Analyze constraints to see which are convex (quadratic)
virtual double branch(OsiSolverInterface *solver)
Does next branch and updates state.
int numberPoints() const
Number of points.
CbcHeuristicDynamic3(CbcModel &model)
int specialOptions2() const
Get special options.
OsiLinkedBound * info_
Information.
void setXSatisfied(double value)
OsiOldLinkBranchingObject & operator=(const OsiOldLinkBranchingObject &rhs)
void setIntegerPriority(int value)
Set integer priority.
ClpSimplex * quadraticModel() const
Copy of quadratic model if one.
double coefficient() const
Coefficient.
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...
double xSatisfied_
x satisfied if less than this away from mesh
OsiLinkBranchingObject & operator=(const OsiLinkBranchingObject &rhs)
double ySatisfied() const
Y satisfied if less than this away from mesh.
This is for codes where solver needs to know about CbcModel Seems to provide only one value-added fea...
int type_
Type of variable - 0 continuous, 1 integer.
virtual OsiObject * clone() const
Clone.
int yColumn() const
Y column.
OsiBiLinear(OsiSolverInterface *solver, int xColumn, int yColumn, int xyRow, double coefficient, double xMesh, double yMesh, int numberExistingObjects=0, const OsiObject **objects=NULL)
Useful constructor - This Adds in rows and variables to construct valid Linked Ordered Set Adds extra...
void setNumberPoints(int value)
virtual CglCutGenerator * clone() const
Clone.
OsiLinkedBound & operator=(const OsiLinkedBound &rhs)
Assignment operator.
int updateCoefficients(const double *lower, const double *upper, double *objective, CoinPackedMatrix *matrix, CoinWarmStartBasis *basis) const
Updates coefficients - returns number updated.
double xMeshSize() const
X meshSize.
void setSpecialOptions2(int value)
Set special options.
int numberExtraRows_
Number of extra rows (coefficients to be modified)
OsiUsesBiLinear()
Default Constructor.
double xyCoefficient(const double *solution) const
Returns true value of single xyRow coefficient.
double * bestSolution_
Best solution found internally.
void gutsOfCopy(const OsiSolverLink &rhs)
Do real work of copy.
OsiChooseStrongSubset(const OsiChooseStrongSubset &)
Copy constructor.
OsiBiLinearBranchingObject & operator=(const OsiBiLinearBranchingObject &rhs)
OsiSimpleFixedInteger(const OsiSolverInterface *solver, int iColumn)
Useful constructor - passed solver index.
OsiLinkedBound(OsiSolverInterface *model, int variable, int numberAffected, const int *positionL, const int *positionU, const double *multiplier)
Useful Constructor.
virtual void resetSequenceEtc(int numberColumns, const int *originalColumns)
Redoes data when sequence numbers change.
double defaultMeshSize_
Default mesh.
virtual OsiObject * clone() const
Clone.
CoinPackedMatrix * originalRowCopy_
Row copy of matrix Just genuine columns and rows.
OsiOldLink(const OsiSolverInterface *solver, int numberMembers, int numberLinks, int typeSOS, const int *which, const double *weights, int setNumber)
Useful constructor - A valid solution is if all variables are zero apart from k*numberLink to (k+1)*n...
double defaultBound() const
Default maximumbound.
int updateCoefficients(ClpSimplex *solver, CoinPackedMatrix *matrix)
Update coefficients - returns number updated if in updating mode.
OsiLink(const OsiSolverInterface *solver, int yRow, int yColumn, double meshSize)
Useful constructor -.
int numberLinks() const
Number of links for each member.
CoinModel coinModel_
Model in CoinModel format.
int boundType_
Simple quadratic bound marker.
void setCoefficient(double value)
Set coefficient.
virtual OsiBranchingObject * clone() const
Clone.
virtual double branch(OsiSolverInterface *solver)
Does next branch and updates state.
OsiOldLinkBranchingObject()
void setYSatisfied(double value)
int firstLambda() const
First lambda (of 4)
virtual double infeasibility(const OsiBranchingInformation *info, int &whichWay) const
Infeasibility - large is 0.5.
virtual ~OsiBiLinearEquality()
virtual double branch(OsiSolverInterface *solver)
Does next branch and updates state.
std::string function_
Function.
double * heuristicSolution(int numberPasses, double deltaTolerance, int mode)
Solves nonlinear problem from CoinModel using SLP - and then tries to get heuristic solution Returns ...
void addTighterConstraints()
Add reformulated bilinear constraints.
Branching object for Linked ordered sets.
virtual void print(const OsiSolverInterface *solver=NULL)
Print something about branch - only if log level high.
virtual double feasibleRegion(OsiSolverInterface *solver, const OsiBranchingInformation *info) const
Set bounds to fix the variable at the current (integer) value.
double * nonlinearSLP(int numberPasses, double deltaTolerance)
Solves nonlinear problem from CoinModel using SLP - may be used as crash for other algorithms when nu...
Define a single variable class which is involved with OsiBiLinear objects.
const double * bestSolution() const
Best solution found internally.
CoinPackedMatrix * quadraticRow(int rowNumber, double *linear) const
Gets correct form for a quadratic row - user to delete.
void gutsOfDestructor(bool justNullify=false)
Do real work of initialize.
virtual ~OsiSolverLinearizedQuadratic()
Destructor.
virtual OsiBranchingObject * createBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way) const
Creates a branching object.
virtual ~OsiLinkBranchingObject()
int specialOptions3_
0 bit (1) - don't do mini B&B 1 bit (2) - quadratic only in objective
void setNumberObjectsToUse(int value)
Set number of objects to use.
int numberBiLinear_
data Number of bilinear objects (maybe could be more general)
CoinPackedMatrix * matrix_
Clean copy of matrix Marked coefficients will be multiplied by L or U.
int * extraRow_
Row number.
double bestObjectiveValue_
Objective value of best solution found internally.
virtual void resetSequenceEtc(int numberColumns, const int *originalColumns)
Redoes data when sequence numbers change.
virtual void generateCuts(const OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo info=CglTreeInfo())
Generate Mixed Integer Stored cuts for the model of the solver interface, si.
virtual bool boundBranch() const
Return true if branch should only bound variables.
void setDefaultBound(double value)
virtual OsiBranchingObject * createBranch(OsiSolverInterface *solver, const OsiBranchingInformation *info, int way) const
Creates a branching object.
virtual bool canDoHeuristics() const
Return true if object can take part in normal heuristics.
heuristic - just picks up any good solution
virtual bool boundBranch() const
Return true if branch should only bound variables.
void setMeshSizes(double value)
Set all mesh sizes on x-x variables.
This is to allow the user to replace initialSolve and resolve.
OsiSimpleFixedInteger(const OsiSimpleFixedInteger &)
Copy constructor.
OsiBiLinearBranchingObject(const OsiBiLinearBranchingObject &)
OsiBiLinearEquality(const OsiBiLinearEquality &)
OsiSolverLinearizedQuadratic & operator=(const OsiSolverLinearizedQuadratic &rhs)
Assignment operator.
double xSatisfied() const
X satisfied if less than this away from mesh.
virtual double checkInfeasibility(const OsiBranchingInformation *info) const
OsiOldLink & operator=(const OsiOldLink &rhs)
OsiChooseStrongSubset()
Default Constructor.
int boundType() const
Simple quadratic bound marker.
OsiSolverLink & operator=(const OsiSolverLink &rhs)
Assignment operator.
int convexity_
Convexity row.
virtual int setupList(OsiBranchingInformation *info, bool initialize)
Sets up strong list and clears all if initialize is true.
void addBoundModifier(bool upperBoundAffected, bool useUpperBound, int whichVariable, double multiplier=1.0)
Add a bound modifier.
virtual OsiChooseVariable * clone() const
Clone.
double yOtherSatisfied() const
Y other satisfied if less than this away from mesh.