Go to the documentation of this file.
6 #ifndef OsiClpSolverInterface_H
7 #define OsiClpSolverInterface_H
24 class OsiClpUserSolver;
134 const double *c)
const;
137 virtual void getBInvARow(
int row,
double *z,
double *slack = NULL)
const;
144 bool keepScaled =
false)
const;
147 virtual void getBInvRow(
int row,
double *z)
const;
150 virtual void getBInvACol(
int col,
double *vec)
const;
162 virtual void getBInvCol(
int col,
double *vec)
const;
168 virtual void getBasics(
int *index)
const;
192 virtual int pivot(
int colIn,
int colOut,
int outStatus);
206 int &colOut,
int &outStatus,
216 int colOut,
int outStatus,
251 void *otherInformation = NULL);
342 void setStuff(
double tolerance,
double increment);
345 int numberRowsAtContinuous,
const int *whichGenerator,
351 int numberRowsAtContinuous,
const int *whichGenerator,
395 unsigned maxLen =
static_cast< unsigned >(std::string::npos))
const;
400 unsigned maxLen =
static_cast< unsigned >(std::string::npos))
const;
463 virtual bool isBinary(
int colIndex)
const;
469 virtual bool isInteger(
int colIndex)
const;
481 virtual const char *
getColType(
bool refresh =
false)
const;
561 virtual std::vector< double * >
getDualRays(
int maxNumRays,
562 bool fullRay =
false)
const;
574 virtual std::vector< double * >
getPrimalRays(
int maxNumRays)
const;
587 virtual void setObjCoeff(
int elementIndex,
double elementValue);
591 virtual void setColLower(
int elementIndex,
double elementValue);
595 virtual void setColUpper(
int elementIndex,
double elementValue);
599 double lower,
double upper);
610 const int *indexLast,
611 const double *boundList);
615 virtual void setRowLower(
int elementIndex,
double elementValue);
619 virtual void setRowUpper(
int elementIndex,
double elementValue);
623 double lower,
double upper);
626 virtual void setRowType(
int index,
char sense,
double rightHandSide,
638 const int *indexLast,
639 const double *boundList);
652 const int *indexLast,
653 const char *senseList,
654 const double *rhsList,
655 const double *rangeList);
677 virtual void setRowName(
int rowIndex, std::string name);
682 virtual void setColName(
int colIndex, std::string name);
698 virtual void setInteger(
const int *indices,
int len);
763 const double collb,
const double colub,
768 const double collb,
const double colub,
769 const double obj, std::string name);
771 virtual void addCol(
int numberElements,
const int *rows,
const double *elements,
772 const double collb,
const double colub,
776 virtual void addCol(
int numberElements,
777 const int *rows,
const double *elements,
778 const double collb,
const double colub,
779 const double obj, std::string name);
781 virtual void addCols(
const int numcols,
783 const double *collb,
const double *colub,
786 virtual void addCols(
const int numcols,
787 const CoinBigIndex *columnStarts,
const int *rows,
const double *elements,
788 const double *collb,
const double *colub,
791 virtual void deleteCols(
const int num,
const int *colIndices);
795 const double rowlb,
const double rowub);
803 const double rowlb,
const double rowub,
806 const char rowsen,
const double rowrhs,
807 const double rowrng);
809 virtual void addRow(
int numberElements,
const int *columns,
const double *element,
810 const double rowlb,
const double rowub);
814 const char rowsen,
const double rowrhs,
815 const double rowrng, std::string name);
817 virtual void addRows(
const int numrows,
819 const double *rowlb,
const double *rowub);
821 virtual void addRows(
const int numrows,
823 const char *rowsen,
const double *rowrhs,
824 const double *rowrng);
827 virtual void addRows(
const int numrows,
828 const CoinBigIndex *rowStarts,
const int *columns,
const double *element,
829 const double *rowlb,
const double *rowub);
832 bool keepZero =
false)
838 virtual void deleteRows(
const int num,
const int *rowIndices);
880 double effectivenessLb = 0.0);
902 const double *collb,
const double *colub,
904 const double *rowlb,
const double *rowub);
914 double *&collb,
double *&colub,
double *&obj,
915 double *&rowlb,
double *&rowub);
930 const double *collb,
const double *colub,
932 const char *rowsen,
const double *rowrhs,
933 const double *rowrng);
943 double *&collb,
double *&colub,
double *&obj,
944 char *&rowsen,
double *&rowrhs,
950 const double *collb,
const double *colub,
952 const double *rowlb,
const double *rowub);
956 virtual void loadProblem(
const int numcols,
const int numrows,
959 const double *collb,
const double *colub,
961 const double *rowlb,
const double *rowub);
965 virtual void loadProblem(
const int numcols,
const int numrows,
968 const double *collb,
const double *colub,
970 const char *rowsen,
const double *rowrhs,
971 const double *rowrng);
978 virtual int readMps(
const char *filename,
979 const char *extension =
"mps");
982 int readMps(
const char *filename,
bool keepNames,
bool allowErrors);
984 virtual int readMps(
const char *filename,
const char *extension,
985 int &numberSets,
CoinSet **&sets);
991 virtual void writeMps(
const char *filename,
992 const char *extension =
"mps",
993 double objSense = 0.0)
const;
1003 const char **rowNames,
const char **columnNames,
1004 int formatType = 0,
int numberAcross = 2,
1005 double objSense = 0.0)
const;
1007 virtual int readLp(
const char *filename,
const double epsilon = 1e-5);
1013 virtual void writeLp(
const char *filename,
1014 const char *extension =
"lp",
1015 double epsilon = 1e-5,
1016 int numberAcross = 10,
1018 double objSense = 0.0,
1019 bool useRowNames =
true)
const;
1024 virtual void writeLp(FILE *fp,
1025 double epsilon = 1e-5,
1026 int numberAcross = 10,
1028 double objSense = 0.0,
1029 bool useRowNames =
true)
const;
1231 virtual void reset();
1290 const int *indices,
const double *elements);
1323 const int *start,
const int *indices,
const double *weights = NULL);
1517 virtual bool check()
const;
double * columnLower() const
Column Lower.
This solves LPs using the simplex method.
This just implements CoinFactorization when an ClpMatrixBase object is passed.
bool setDblParam(OsiDblParam key, double value)
virtual int findIntegersAndSOS(bool justCount)
Identify integer variables and SOS and create corresponding objects.
CoinWarmStartBasis * ws_
A pointer to the warmstart information to be used in the hotstarts.
virtual void applyRowCuts(int numberCuts, const OsiRowCut *cuts)
Apply a collection of row cuts which are all effective.
virtual void assignProblem(CoinPackedMatrix *&matrix, double *&collb, double *&colub, double *&obj, double *&rowlb, double *&rowub)
Load in an problem by assuming ownership of the arguments (the constraints on the rows are given by l...
virtual void addCol(const CoinPackedVectorBase &vec, const double collb, const double colub, const double obj)
virtual const double * getRowActivity() const
Get pointer to array[getNumRows()] of row activity levels (constraint matrix times the solution vecto...
const double COIN_DBL_MAX
CoinSet * setInfo_
SOS set info.
virtual void setColSetBounds(const int *indexFirst, const int *indexLast, const double *boundList)
Set the bounds on a number of columns simultaneously The default implementation just invokes setColL...
CoinPackedMatrix * matrixByRow_
Pointer to row-wise copy of problem matrix coefficients.
int whereFrom() const
Get where from.
int itlimOrig_
The original iteration limit before hotstarts started.
OsiClpSolverInterface()
Default Constructor.
virtual std::string getColName(int colIndex, unsigned maxLen=static_cast< unsigned >(std::string::npos)) const
Return name of column if one exists or Cnnnnnnn maxLen is currently ignored and only there to match t...
int phase_
phase 0 initial 1 trying continuing with back in and maybe different perturb 2 trying continuing with...
void setOsiModel(OsiClpSolverInterface *model)
set model.
ClpSimplex * smallModel_
Alternate model (hot starts) - but also could be permanent and used for crunch.
unsigned int specialOptions() const
Get special options.
ClpSimplex * modelPtr_
Clp model represented by this class instance.
This is a very simple class to guide algorithms.
virtual void setRowSetTypes(const int *indexFirst, const int *indexLast, const char *senseList, const double *rhsList, const double *rangeList)
Set the type of a number of rows simultaneously The default implementation just invokes setRowType()...
virtual const double * getColSolution() const
Get pointer to array[getNumCols()] of primal solution vector.
friend void OsiClpSolverInterfaceUnitTest(const std::string &mpsDir, const std::string &netlibDir)
A function that tests the methods in the OsiClpSolverInterface class.
ClpSimplex * baseModel_
Copy of model when option 131072 set.
virtual int typeOfDisaster()
Type of disaster 0 can fix, 1 abort.
void setCleanupScaling(int value)
Set Scaling option When scaling is on it is possible that the scaled problem is feasible but the unsc...
virtual ApplyCutsReturnCode applyCuts(const OsiCuts &cs, double effectivenessLb=0.0)
Apply a collection of cuts.
void copyEnabledStuff(ClpSimplex &rhs)
Copy across enabled stuff from one solver to another.
void passInDisasterHandler(OsiClpDisasterHandler *handler)
Pass in disaster handler.
CoinWarmStartBasis getBasis(ClpSimplex *model) const
Warm start.
void releaseClp()
Releases so won't error.
double largestAway_
Largest amount continuous away from bound.
int numberSOS_
Number of SOS sets.
virtual bool basisIsAvailable() const
Returns true if a basis is available AND problem is optimal.
void setLanguage(CoinMessages::Language language)
virtual void replaceMatrixOptional(const CoinPackedMatrix &matrix)
I (JJF) am getting annoyed because I can't just replace a matrix.
double * rowLower() const
Row lower.
OsiRowCut * smallModelCut(const double *originalLower, const double *originalUpper, int numberRowsAtContinuous, const int *whichGenerator, int typeCut=0)
Return a conflict analysis cut from small model.
void setFakeObjective(ClpLinearObjective *fakeObjective)
Set fake objective (and take ownership)
virtual void loadProblem(const CoinPackedMatrix &matrix, const double *collb, const double *colub, const double *obj, const double *rowlb, const double *rowub)
Load in an problem by copying the arguments (the constraints on the rows are given by lower and upper...
virtual void getBasics(int *index) const
Get basic indices (order of indices corresponds to the order of elements in a vector retured by getBI...
static const double OsiClpInfinity
const CoinWarmStartBasis * getConstPointerToWarmStart() const
Get warmstarting information.
virtual void getReducedGradient(double *columnReducedCosts, double *duals, const double *c) const
Get the reduced gradient for the cost vector c.
virtual void getBasisStatus(int *cstat, int *rstat) const
The following two methods may be replaced by the methods of OsiSolverInterface using OsiWarmStartBasi...
virtual const double * getObjCoefficients() const
Get pointer to array[getNumCols()] of objective function coefficients.
const double * downRange() const
virtual const double * getRightHandSide() const
Get pointer to array[getNumRows()] of rows right-hand sides.
virtual void setContinuous(int index)
Set the index-th variable to be a continuous variable.
This is a tiny class where data can be saved round calls.
virtual void unmarkHotStart()
Delete the snapshot.
virtual void addCols(const int numcols, const CoinPackedVectorBase *const *cols, const double *collb, const double *colub, const double *obj)
void freeCachedResults1() const
Deletes all mutable stuff for matrix etc.
ClpSolve solveOptions_
Options for initialSolve.
void setWhereFrom(int value)
Set where from.
int cleanupScaling() const
Get scaling action option.
bool isHeuristicInteger(int colIndex) const
Return true only if integer and not optional.
CoinPackedMatrix * matrixByRowAtContinuous_
Pointer to row-wise copy of continuous problem matrix coefficients.
virtual void saveBaseModel()
If solver wants it can save a copy of "base" (continuous) model here.
virtual void setObjective(const double *array)
Set the objective coefficients for all columns array [getNumCols()] is an array of values for the obj...
virtual const char * getRowSense() const
Get pointer to array[getNumRows()] of row constraint senses.
const OsiClpDisasterHandler * disasterHandler() const
Get disaster handler.
void setLogLevel(int value)
Set log level (will also set underlying solver's log level)
virtual int readMps(const char *filename, const char *extension="mps")
virtual bool isAbandoned() const
Are there a numerical difficulties?
bool setStrParam(OsiStrParam key, const std::string &value)
virtual int tightenBounds(int lightweight=0)
Tighten bounds - lightweight or very lightweight 0 - normal, 1 lightweight but just integers,...
virtual bool isDualObjectiveLimitReached() const
Is the given dual objective limit reached?
double smallestChangeInCut() const
Get smallest change in cut.
void deleteScaleFactors()
Delete all scale factor stuff and reset option.
virtual std::vector< double * > getPrimalRays(int maxNumRays) const
Get as many primal rays as the solver can provide.
virtual bool isIterationLimitReached() const
Iteration limit reached?
bool notOwned_
To say if destructor should delete underlying model.
CoinBigIndex getNumElements() const
void setPhase(int value)
Set phase.
CoinPackedMatrix * matrix() const
Matrix (if not ClpPackedmatrix be careful about memory leak.
virtual void writeMps(const char *filename, const char *extension="mps", double objSense=0.0) const
Write the problem into an mps file of the given filename.
void setStuff(double tolerance, double increment)
Sets integer tolerance and increment.
void copyEnabledSuff(OsiClpSolverInterface &rhs)
Copy across enabled stuff from one solver to another.
ClpSimplex * getModelPtr() const
Get pointer to Clp model.
virtual void setRowType(int index, char sense, double rightHandSide, double range)
Set the type of a single row
virtual CoinBigIndex getSizeL() const
Return number of entries in L part of current factorization.
CoinWarmStartDiff * getBasisDiff(const unsigned char *statusArray) const
Warm start difference from basis_ to statusArray.
double * rowActivity_
also save row and column information for hot starts only used in hotstarts so can be casual
virtual void restoreBaseModel(int numberRows)
Strip off rows to get to this number of rows.
virtual const double * getColUpper() const
Get pointer to array[getNumCols()] of column upper bounds.
virtual void passInMessageHandler(CoinMessageHandler *handler)
Pass in a message handler.
OsiClpSolverInterface & operator=(const OsiClpSolverInterface &rhs)
Assignment operator.
virtual void setRowPrice(const double *rowprice)
Set dual solution vector.
virtual bool setWarmStart(const CoinWarmStart *warmstart)
Set warmstarting information.
void setupForRepeatedUse(int senseOfAdventure=0, int printOut=0)
Set up solver for repeated use by Osi interface.
virtual void setRowName(int rowIndex, std::string name)
Set name of row.
virtual void getBInvARow(int row, double *z, double *slack=NULL) const
Get a row of the tableau (slack part in slack if not NULL)
virtual bool isProvenDualInfeasible() const
Is dual infeasiblity proven?
void extractSenseRhsRange() const
A method that fills up the rowsense_, rhs_ and rowrange_ arrays.
virtual void enableFactorization() const
Enables simplex mode 1 (tableau access)
virtual void writeLp(const char *filename, const char *extension="lp", double epsilon=1e-5, int numberAcross=10, int decimals=5, double objSense=0.0, bool useRowNames=true) const
Write the problem into an Lp file of the given filename.
void modifyCoefficient(int row, int column, double newElement, bool keepZero=false)
int cleanupScaling_
Scaling option When scaling is on it is possible that the scaled problem is feasible but the unscaled...
virtual int pivot(int colIn, int colOut, int outStatus)
Perform a pivot by substituting a colIn for colOut in the basis.
virtual void getBInvACol(int col, double *vec) const
Get a column of the tableau.
virtual void setColLower(int elementIndex, double elementValue)
Set a single column lower bound Use -DBL_MAX for -infinity.
int lastAlgorithm() const
Last algorithm used , 1 = primal, 2 = dual other unknown.
virtual bool isProvenPrimalInfeasible() const
Is primal infeasiblity proven?
virtual bool check() const
Checks if disaster.
char * integerInformation_
Pointer to integer information.
void generateCpp(FILE *fp)
Create C++ lines to get to current state.
void OsiClpSolverInterfaceUnitTest(const std::string &mpsDir, const std::string &netlibDir)
A function that tests the methods in the OsiClpSolverInterface class.
unsigned int specialOptions_
Special options 0x80000000 off 0 simple stuff for branch and bound 1 try and keep work regions as muc...
virtual void setRowBounds(int elementIndex, double lower, double upper)
Set a single row lower and upper bound.
virtual const double * getRowRange() const
Get pointer to array[getNumRows()] of row ranges.
void freeCachedResults0() const
Deletes all mutable stuff for row ranges etc.
virtual OsiSolverInterface * clone(bool copyData=true) const
Clone.
OsiClpSolverInterface * osiModel_
Pointer to model.
OsiClpDisasterHandler * disasterHandler_
Possible disaster handler.
double * rowUpper() const
Row upper.
virtual bool isContinuous(int colNumber) const
Return true if column is continuous.
Base class for Clp disaster handling.
void freeCachedResults() const
Deletes all mutable stuff.
virtual bool isInteger(int colIndex) const
Return true if column is integer.
virtual void setObjSense(double s)
Set objective function sense (1 for min (default), -1 for max,)
double largestAway() const
Get largest amount continuous away from bound.
double * rhs_
Pointer to dense vector of row right-hand side values.
void setBasis()
Just puts current basis_ into ClpSimplex model.
void setSpecialOptionsMutable(unsigned int value) const
Set special options in underlying clp solver.
bool getIntParam(OsiIntParam key, int &value) const
CoinDoubleArrayWithLength columnScale_
Column scale factors (has inverse at end)
virtual int loadFromCoinModel(CoinModel &modelObject, bool keepSolution=false)
This loads a model from a coinModel object - returns number of errors.
void redoScaleFactors(int numberRows, const CoinBigIndex *starts, const int *indices, const double *elements)
Extend scale factors.
double optimizationDirection() const
Direction of optimization (1 - minimize, -1 - maximize, 0 - ignore.
CoinWarmStartBasis basis_
Warmstart information to be used in resolves.
void modifyCoefficient(int row, int column, double newElement, bool keepZero=false)
Modify one element of a matrix.
virtual void setColName(int colIndex, std::string name)
Set name of column.
virtual std::string getRowName(int rowIndex, unsigned maxLen=static_cast< unsigned >(std::string::npos)) const
Return name of row if one exists or Rnnnnnnn maxLen is currently ignored and only there to match the ...
virtual void resolveGub(int needed)
Resolve an LP relaxation after problem modification (try GUB)
Abstract base class for Clp Matrices.
virtual bool setHintParam(OsiHintParam key, bool yesNo=true, OsiHintStrength strength=OsiHintTry, void *otherInformation=NULL)
virtual void intoSimplex()
Into simplex.
void setSpecialOptions(unsigned int value)
virtual void solveFromHotStart()
Optimize starting from the hotstart.
void replaceSetInfo(int numberSOS, CoinSet *setInfo)
Replace setInfo (takes over ownership)
virtual const char * getColType(bool refresh=false) const
Return array of column length 0 - continuous 1 - binary (may get fixed later) 2 - general integer (ma...
void lexSolve()
Sort of lexicographic resolve.
virtual void addRow(const CoinPackedVectorBase &vec, const double rowlb, const double rowub)
bool inTrouble_
Are we in trouble.
bool isOptionalInteger(int colIndex) const
Return true if column is integer but does not have to be declared as such.
virtual const double * getRowPrice() const
Get pointer to array[getNumRows()] of dual prices.
virtual const CoinPackedMatrix * getMatrixByCol() const
Get pointer to column-wise copy of matrix.
virtual CoinWarmStart * getWarmStart() const
Get warmstarting information.
int phase() const
Get phase.
OsiClpSolverInterface * osiModel() const
Get model.
void setIntegerType(int colIndex, int value)
Set integer type (0,1,2=optional,3=sc,4=scint)
virtual void setObjCoeff(int elementIndex, double elementValue)
Set an objective function coefficient.
void setSmallestChangeInCut(double value)
Set smallest change in cut.
virtual int dualPivotResult(int &colIn, int &sign, int colOut, int outStatus, double &t, CoinPackedVector *dx)
Obtain a result of the dual pivot (similar to the previous method) Differences: entering variable and...
const double * upRange() const
If doing fast hot start then ranges are computed.
virtual void setColSolution(const double *colsol)
Set the primal solution column values.
OsiClpDisasterHandler(OsiClpSolverInterface *model=NULL)
Default constructor.
bool fakeMinInSimplex_
Faking min to get proper dual solution signs in simplex API.
virtual void setRowSetBounds(const int *indexFirst, const int *indexLast, const double *boundList)
Set the bounds on a number of rows simultaneously The default implementation just invokes setRowLowe...
int integerType(int colIndex) const
Return integer type (0,1,2=optional,3=sc,4=scint)
virtual const double * getRowLower() const
Get pointer to array[getNumRows()] of row lower bounds.
virtual void deleteCols(const int num, const int *colIndices)
virtual bool isProvenOptimal() const
Is optimality proven?
virtual int readMps(const char *filename, const char *extension="mps")
Read an mps file from the given filename (defaults to Osi reader) - returns number of errors (see Osi...
virtual const CoinPackedMatrix * getMatrixByRow() const
Get pointer to row-wise copy of matrix.
CoinDoubleArrayWithLength rowScale_
Row scale factors (has inverse at end)
int lastAlgorithm_
Last algorithm used.
void stopFastDual()
Stop fast dual.
virtual void deleteRows(const int num, const int *rowIndices)
virtual void resolve()
Resolve an LP relaxation after problem modification.
virtual int readLp(const char *filename, const double epsilon=1e-5)
Read file in LP format (with names)
void setSmallestElementInCut(double value)
Set smallest allowed element in cut.
void setColumnStatus(int iColumn, ClpSimplex::Status status)
Set column status in ClpSimplex and warmStart.
virtual void reset()
Resets as if default constructor.
void setOptimizationDirection(double value)
virtual int getIterationCount() const
Get how many iterations it took to solve the problem (whatever "iteration" mean to the solver.
virtual void saveInfo()
saves information for next attempt
void setSolveOptions(const ClpSolve &options)
Pass in initial solve options.
double * linearObjective_
Linear objective.
void setSOSData(int numberSOS, const char *type, const int *start, const int *indices, const double *weights=NULL)
Pass in sos stuff from AMPl.
int numberIterations() const
Number of iterations.
virtual void disableFactorization() const
Undo any setting changes made by enableFactorization.
virtual void setRowUpper(int elementIndex, double elementValue)
Set a single row upper bound Use DBL_MAX for infinity.
virtual bool isIntegerNonBinary(int colIndex) const
Return true if variable is general integer.
bool inTrouble() const
are we in trouble
double * objective() const
Objective.
void setLargestAway(double value)
Set largest amount continuous away from bound.
ClpSimplex * getContinuousModel() const
Get continuous model.
void newLanguage(CoinMessages::Language language)
Set language.
virtual void branchAndBound()
Invoke solver's built-in enumeration algorithm.
virtual void synchronizeModel()
Synchronize model (really if no cuts in tree)
virtual void disableSimplexInterface()
Undo setting changes made by enableSimplexInterface.
virtual std::vector< double * > getDualRays(int maxNumRays, bool fullRay=false) const
Get as many dual rays as the solver can provide.
virtual CoinPackedMatrix * getMutableMatrixByCol() const
Get pointer to mutable column-wise copy of matrix.
virtual bool isBinary(int colIndex) const
Return true if variable is binary.
virtual CoinBigIndex getSizeU() const
Return number of entries in U part of current factorization.
virtual bool isFreeBinary(int colIndex) const
Return true if variable is binary and not fixed at either bound.
OsiRowCut * modelCut(const double *originalLower, const double *originalUpper, int numberRowsAtContinuous, const int *whichGenerator, int typeCut=0)
Return a conflict analysis cut from model If type is 0 then genuine cut, if 1 then only partially pro...
virtual ~OsiClpDisasterHandler()
Destructor.
virtual void applyRowCut(const OsiRowCut &rc)
Apply a row cut (append to constraint matrix).
bool getStrParam(OsiStrParam key, std::string &value) const
double * columnUpper() const
Column Upper.
void passInRanges(int *array)
Pass in range array.
int whereFrom_
Where from 0 dual (resolve) 1 crunch 2 primal (resolve) 4 dual (initialSolve) 6 primal (initialSolve)
virtual void setColUpper(int elementIndex, double elementValue)
Set a single column upper bound Use DBL_MAX for infinity.
const CoinSet * setInfo() const
SOS set info.
virtual const double * getReducedCost() const
Get a pointer to array[getNumCols()] of reduced costs.
virtual int primalPivotResult(int colIn, int sign, int &colOut, int &outStatus, double &t, CoinPackedVector *dx)
Obtain a result of the primal pivot Outputs: colOut – leaving column, outStatus – its status,...
virtual void initialSolve()
Solve initial LP relaxation.
int numberColumns() const
ClpLinearObjective * fakeObjective() const
Get fake objective.
int startFastDual(int options)
Start faster dual - returns negative if problems 1 if infeasible, Options to pass to solver 1 - creat...
bool setIntParam(OsiIntParam key, int value)
virtual void setRowLower(int elementIndex, double elementValue)
Set a single row lower bound Use -DBL_MAX for -infinity.
void computeLargestAway()
Compute largest amount any at continuous away from bound.
ClpSimplex * swapModelPtr(ClpSimplex *newModel)
Set pointer to Clp model and return old.
ClpLinearObjective * fakeObjective_
Fake objective.
void setOptionalInteger(int index)
Set the index-th variable to be an optional integer variable.
virtual int getNumRows() const
Get number of rows.
double smallestElementInCut_
Smallest allowed element in cut.
virtual const double * getRowUpper() const
Get pointer to array[getNumRows()] of row upper bounds.
virtual void getBInvCol(int col, double *vec) const
Get a column of the basis inverse.
virtual void getBInvRow(int row, double *z) const
Get a row of the basis inverse.
bool getDblParam(OsiDblParam key, double &value) const
virtual bool isPrimalObjectiveLimitReached() const
Is the given primal objective limit reached?
ClpDataSave saveData_
To save data in OsiSimplex stuff.
ClpNodeStuff stuff_
Stuff for fast dual.
virtual void applyColCut(const OsiColCut &cc)
Apply a column cut (adjust one or more bounds).
virtual void setInteger(int index)
Set the index-th variable to be an integer variable.
int * whichRange_
Pointer to variables for which we want range information The number is in [0] memory is not owned by ...
OsiClpDisasterHandler & operator=(const OsiClpDisasterHandler &)
virtual double getInfinity() const
Get solver's value for infinity.
void setContinuousModel(ClpSimplex *model)
Set continuous model.
int numberSOS() const
Number of SOS sets.
int infeasibleOtherWay(char *whichWay)
See if any integer variables make infeasible other way.
int lastNumberRows_
Number of rows when last "scaled".
virtual ClpDisasterHandler * clone() const
Clone.
virtual ~OsiClpSolverInterface()
Destructor.
virtual const double * getColLower() const
Get pointer to array[getNumCols()] of column lower bounds.
ClpSimplex * continuousModel_
Continuous model.
virtual CoinWarmStart * getEmptyWarmStart() const
Get an empty warm start object.
virtual void enableSimplexInterface(bool doingPrimal)
Enables simplex mode 2 (individual pivot control)
void gutsOfDestructor()
The real work of a copy constructor (used by copy and assignment)
char * rowsense_
Pointer to dense vector of row sense indicators.
virtual int getNumCols() const
Get number of columns.
virtual int setBasisStatus(const int *cstat, const int *rstat)
Set the status of structural/artificial variables and factorize, update solution etc.
virtual double getObjValue() const
Get objective function value.
int numberRows() const
Number of rows.
void setLastAlgorithm(int value)
Set last algorithm used , 1 = primal, 2 = dual other unknown.
virtual int writeMpsNative(const char *filename, const char **rowNames, const char **columnNames, int formatType=0, int numberAcross=2, double objSense=0.0) const
Write the problem into an mps file of the given filename, names may be null.
virtual void addRows(const int numrows, const CoinPackedVectorBase *const *rows, const double *rowlb, const double *rowub)
void crunch()
Crunch down problem a bit.
double smallestElementInCut() const
Get smallest allowed element in cut.
virtual int canDoSimplexInterface() const
Simplex API capability.
virtual CoinBigIndex getNumElements() const
Get number of nonzero elements.
void crossover(int options, int basis)
Solve when primal column and dual row solutions are near-optimal options - 0 no presolve (use primal ...
virtual double getObjSense() const
Get objective function sense (1 for min (default), -1 for max)
double smallestChangeInCut_
Smallest change in cut.
virtual void markHotStart()
Create a hotstart point of the optimization process.
char * spareArrays_
Arrays for hot starts.
ClpFactorization * factorization_
factorization for hot starts
Status
enums for status of various sorts.
double * rowrange_
Pointer to dense vector of slack upper bounds for range constraints (undefined for non-range rows)
virtual void setColBounds(int elementIndex, double lower, double upper)
Set a single column lower and upper bound.
CoinWarmStartBasis * getPointerToWarmStart()
Get warmstarting information.
virtual void replaceMatrix(const CoinPackedMatrix &matrix)
And if it does matter (not used at present)