5 #ifndef OsiSolverInterface_H 6 #define OsiSolverInterface_H 12 #include "CoinTypes.hpp" 13 #include "CoinMessageHandler.hpp" 14 #include "CoinPackedVectorBase.hpp" 15 #include "CoinPackedMatrix.hpp" 16 #include "CoinWarmStart.hpp" 17 #include "CoinFinite.hpp" 18 #include "CoinError.hpp" 65 const std::string & mpsDir,
66 const std::string & netlibDir);
68 const std::vector<OsiSolverInterface*> & vecSiP,
69 const std::string & mpsDir);
178 #ifdef CBC_NEXT_VERSION 202 int & numberSolves,
int & numberIterations,
203 bool forceBranch=
false);
302 throw CoinError(
"OsiForceDo illegal",
303 "setHintParam",
"OsiSolverInterface");
335 void *& otherInformation)
const {
340 otherInformation=NULL;
454 virtual bool setWarmStart(
const CoinWarmStart* warmstart) = 0;
575 virtual bool isBinary(
int colIndex)
const;
581 virtual bool isInteger(
int colIndex)
const;
607 virtual const char *
getColType(
bool refresh=
false)
const;
686 virtual std::vector<double*>
getDualRays(
int maxNumRays,
687 bool fullRay =
false)
const = 0;
704 virtual std::vector<double*>
getPrimalRays(
int maxNumRays)
const = 0;
725 virtual void setObjCoeff(
int elementIndex,
double elementValue ) = 0;
729 const int* indexLast,
730 const double* coeffList);
754 virtual void setColLower(
int elementIndex,
double elementValue ) = 0;
765 virtual void setColUpper(
int elementIndex,
double elementValue ) = 0;
779 double lower,
double upper ) {
791 const int* indexLast,
792 const double* boundList);
796 virtual void setRowLower(
int elementIndex,
double elementValue ) = 0;
800 virtual void setRowUpper(
int elementIndex,
double elementValue ) = 0;
806 double lower,
double upper ) {
818 const int* indexLast,
819 const double* boundList);
823 virtual void setRowType(
int index,
char sense,
double rightHandSide,
831 const int* indexLast,
832 const char* senseList,
833 const double* rhsList,
834 const double* rangeList);
856 virtual void setRowPrice(
const double * rowprice) = 0;
881 virtual void setInteger(
const int* indices,
int len);
921 int ndx,
unsigned digits = 7)
const ;
925 virtual std::string
getObjName (
unsigned maxLen = static_cast<unsigned>(std::string::npos))
const ;
939 unsigned maxLen = static_cast<unsigned>(std::string::npos))
const ;
959 virtual void setRowName(
int ndx, std::string name) ;
968 int srcStart,
int len,
int tgtStart) ;
984 unsigned maxLen = static_cast<unsigned>(std::string::npos))
const ;
1002 virtual void setColName(
int ndx, std::string name) ;
1011 int srcStart,
int len,
int tgtStart) ;
1055 virtual void addCol(
const CoinPackedVectorBase& vec,
1056 const double collb,
const double colub,
1057 const double obj) = 0;
1064 virtual void addCol(
const CoinPackedVectorBase& vec,
1065 const double collb,
const double colub,
1066 const double obj, std::string name) ;
1069 virtual void addCol(
int numberElements,
1070 const int* rows,
const double* elements,
1071 const double collb,
const double colub,
1079 virtual void addCol(
int numberElements,
1080 const int* rows,
const double* elements,
1081 const double collb,
const double colub,
1082 const double obj, std::string name) ;
1089 virtual void addCols(
const int numcols,
1090 const CoinPackedVectorBase *
const * cols,
1091 const double* collb,
const double* colub,
1099 virtual void addCols(
const int numcols,
const int* columnStarts,
1100 const int* rows,
const double* elements,
1101 const double* collb,
const double* colub,
1105 void addCols(
const CoinBuild & buildObject);
1112 int addCols(CoinModel & modelObject);
1116 virtual void addCols(
const CoinPackedMatrix& matrix,
1117 const double* collb,
const double* colub,
1127 virtual void deleteCols(
const int num,
const int * colIndices) = 0;
1130 virtual void addRow(
const CoinPackedVectorBase& vec,
1131 const double rowlb,
const double rowub) = 0;
1138 virtual void addRow(
const CoinPackedVectorBase& vec,
1139 const double rowlb,
const double rowub,
1143 virtual void addRow(
const CoinPackedVectorBase& vec,
1144 const char rowsen,
const double rowrhs,
1145 const double rowrng) = 0;
1152 virtual void addRow(
const CoinPackedVectorBase& vec,
1153 const char rowsen,
const double rowrhs,
1154 const double rowrng, std::string name) ;
1160 virtual void addRow(
int numberElements,
1161 const int *columns,
const double *element,
1162 const double rowlb,
const double rowub) ;
1169 virtual void addRows(
const int numrows,
1170 const CoinPackedVectorBase *
const * rows,
1171 const double* rowlb,
const double* rowub);
1178 virtual void addRows(
const int numrows,
1179 const CoinPackedVectorBase *
const * rows,
1180 const char* rowsen,
const double* rowrhs,
1181 const double* rowrng);
1188 virtual void addRows(
const int numrows,
const int *rowStarts,
1189 const int *columns,
const double *element,
1190 const double *rowlb,
const double *rowub);
1193 void addRows(
const CoinBuild &buildObject);
1203 int addRows(CoinModel &modelObject);
1207 virtual void addRows(
const CoinPackedMatrix& matrix,
1208 const double* rowlb,
const double* rowub);
1210 virtual void addRows(
const CoinPackedMatrix& matrix,
1211 const char* rowsen,
const double* rowrhs,
1212 const double* rowrng);
1220 virtual void deleteRows(
const int num,
const int * rowIndices) = 0;
1280 double effectivenessLb = 0.0);
1317 virtual void loadProblem (
const CoinPackedMatrix& matrix,
1318 const double* collb,
const double* colub,
1320 const double* rowlb,
const double* rowub) = 0;
1332 double*& collb,
double*& colub,
double*& obj,
1333 double*& rowlb,
double*& rowub) = 0;
1351 virtual void loadProblem (
const CoinPackedMatrix& matrix,
1352 const double* collb,
const double* colub,
1354 const char* rowsen,
const double* rowrhs,
1355 const double* rowrng) = 0;
1367 double*& collb,
double*& colub,
double*& obj,
1368 char*& rowsen,
double*& rowrhs,
1369 double*& rowrng) = 0;
1383 virtual void loadProblem (
const int numcols,
const int numrows,
1384 const CoinBigIndex * start,
const int* index,
1385 const double* value,
1386 const double* collb,
const double* colub,
1388 const double* rowlb,
const double* rowub) = 0;
1402 virtual void loadProblem (
const int numcols,
const int numrows,
1403 const CoinBigIndex * start,
const int* index,
1404 const double* value,
1405 const double* collb,
const double* colub,
1407 const char* rowsen,
const double* rowrhs,
1408 const double* rowrng) = 0;
1417 bool keepSolution=
false);
1424 virtual int readMps (
const char *filename,
1425 const char *extension =
"mps") ;
1433 virtual int readMps (
const char *filename,
const char*extension,
1434 int & numberSets, CoinSet ** & sets);
1441 virtual int readGMPL (
const char *filename,
const char *dataname=NULL);
1449 virtual void writeMps (
const char *filename,
1450 const char *extension =
"mps",
1451 double objSense=0.0)
const = 0;
1467 const char ** rowNames,
const char ** columnNames,
1468 int formatType=0,
int numberAcross=2,
1469 double objSense=0.0,
int numberSOS=0,
1470 const CoinSet * setInfo=NULL)
const ;
1494 virtual void writeLp(
const char *filename,
1495 const char *extension =
"lp",
1496 double epsilon = 1e-5,
1497 int numberAcross = 10,
1499 double objSense = 0.0,
1500 bool useRowNames =
true)
const;
1506 virtual void writeLp(FILE *fp,
1507 double epsilon = 1e-5,
1508 int numberAcross = 10,
1510 double objSense = 0.0,
1511 bool useRowNames =
true)
const;
1532 char const *
const *
const rowNames,
1533 char const *
const *
const columnNames,
1534 const double epsilon = 1.0e-5,
1535 const int numberAcross = 10,
1536 const int decimals = 5,
1537 const double objSense = 0.0,
1538 const bool useRowNames =
true)
const;
1545 char const *
const *
const rowNames,
1546 char const *
const *
const columnNames,
1547 const double epsilon = 1.0e-5,
1548 const int numberAcross = 10,
1549 const int decimals = 5,
1550 const double objSense = 0.0,
1551 const bool useRowNames =
true)
const;
1555 virtual int readLp(
const char *filename,
const double epsilon = 1e-5);
1559 int readLp(FILE *fp,
const double epsilon = 1e-5);
1573 bool ignoreNames=
true);
1574 #ifdef COIN_SNAPSHOT 1575 virtual CoinSnapshot * snapshot(
bool createArrays=
true)
const;
1578 #ifdef COIN_FACTORIZATION_INFO 1579 virtual CoinBigIndex getSizeL()
const;
1582 virtual CoinBigIndex getSizeU()
const;
1628 void newLanguage(CoinMessages::Language language);
1728 bool enforceOptimality =
true);
1858 double* duals,
const double* c)
const ;
1865 virtual void getBInvARow(
int row,
double* z,
double* slack = NULL)
const ;
1868 virtual void getBInvRow(
int row,
double* z)
const ;
1871 virtual void getBInvACol(
int col,
double* vec)
const ;
1874 virtual void getBInvCol(
int col,
double* vec)
const ;
1883 virtual void getBasics(
int* index)
const ;
1912 virtual int pivot(
int colIn,
int colOut,
int outStatus) ;
1926 int& colOut,
int& outStatus,
1927 double& t, CoinPackedVector* dx);
1936 int colOut,
int outStatus,
1937 double& t, CoinPackedVector* dx) ;
1969 virtual void reset();
1987 char& sense,
double& right,
double& range)
const;
1993 double& lower,
double& upper)
const;
1996 template <
class T>
inline T
1998 return value < lower ? lower : (value > upper ? upper : value);
2082 char& sense,
double& right,
2083 double& range)
const 2094 range = upper - lower;
2117 double& lower,
double& upper)
const 2122 lower = upper = right;
2133 lower = right - range;
virtual void applyColCut(const OsiColCut &cc)=0
Apply a column cut (adjust the bounds of one or more variables).
virtual void setColSolution(const double *colsol)=0
Set the primal solution variable values.
virtual void setRowSetTypes(const int *indexFirst, const int *indexLast, const char *senseList, const double *rhsList, const double *rangeList)
Set the type of a set of rows.
virtual bool isProvenDualInfeasible() const =0
Is dual infeasibility proven?
virtual bool isIterationLimitReached() const =0
Iteration limit reached?
virtual const double * getRowActivity() const =0
Get a pointer to array[getNumRows()] of row activity levels.
virtual int readMps(const char *filename, const char *extension="mps")
Read a problem in MPS format from the given filename.
void convertBoundToSense(const double lower, const double upper, char &sense, double &right, double &range) const
A quick inlined function to convert from the lb/ub style of constraint definition to the sense/rhs/ra...
virtual std::string getColName(int colIndex, unsigned maxLen=static_cast< unsigned >(std::string::npos)) const
Return the name of the column.
Just a marker, so that OsiSolverInterface can allocate a static sized array to store parameters...
virtual void replaceMatrixOptional(const CoinPackedMatrix &)
Replace the constraint matrix.
virtual OsiSolverInterface * clone(bool copyData=true) const =0
Clone.
bool optimalBasisIsAvailable() const
Synonym for basisIsAvailable.
virtual void setRowLower(int elementIndex, double elementValue)=0
Set a single row lower bound.
OsiSolverInterface & operator=(const OsiSolverInterface &rhs)
Assignment operator.
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 activateRowCutDebugger(const char *modelName)
Activate the row cut debugger.
ApplyCutsReturnCode(const ApplyCutsReturnCode &rhs)
Copy constructor.
virtual int getIterationCount() const =0
Get the number of iterations it took to solve the problem (whatever ‘iteration’ means to the solver...
virtual bool getDblParam(OsiDblParam key, double &value) const
Get a double parameter.
virtual void deleteRowNames(int tgtStart, int len)
Delete len row names starting at index tgtStart.
virtual void replaceMatrix(const CoinPackedMatrix &)
Replace the constraint matrix.
void convertSenseToBound(const char sense, const double right, const double range, double &lower, double &upper) const
A quick inlined function to convert from the sense/rhs/range style of constraint definition to the lb...
void deleteObjects()
Delete all object information.
virtual CoinPackedMatrix * getMutableMatrixByRow() const
Get a pointer to a mutable row-wise copy of the matrix.
virtual const char * getRowSense() const =0
Get a pointer to an array[getNumRows()] of row constraint senses.
virtual void setColLower(int elementIndex, double elementValue)=0
Set a single column lower bound.
int infeasible_
Counter for infeasible cuts.
std::vector< std::string > OsiNameVec
Data type for name vectors.
void setNumberObjects(int number)
Set the number of objects.
This class allows for a more structured use of algorithmic tweaking to an OsiSolverInterface.
const char * columnType(bool refresh=false) const
Return an array[getNumCols()] of column types.
virtual bool getHintParam(OsiHintParam key, bool &yesNo, OsiHintStrength &strength, void *&otherInformation) const
Get a hint parameter (all information)
OsiNameVec rowNames_
Row names.
virtual bool isFreeBinary(int colIndex) const
Return true if the variable is binary and not fixed.
virtual void setObjCoeff(int elementIndex, double elementValue)=0
Set an objective function coefficient.
virtual bool isIntegerNonBinary(int colIndex) const
Return true if the variable is general integer.
virtual void setColSetBounds(const int *indexFirst, const int *indexLast, const double *boundList)
Set the upper and lower bounds of a set of columns.
virtual const double * getRowPrice() const =0
Get pointer to array[getNumRows()] of dual variable values.
virtual const OsiNameVec & getColNames()
Return a pointer to a vector of column names.
virtual const CoinPackedMatrix * getMatrixByCol() const =0
Get a pointer to a column-wise copy of the matrix.
int getNumInconsistent() const
Number of logically inconsistent cuts.
void addObjects(int numberObjects, OsiObject **objects)
Add in object information.
virtual bool getIntParam(OsiIntParam key, int &value) const
Get an integer parameter.
virtual void setRowPrice(const double *rowprice)=0
Set dual solution variable values.
virtual void resolve()=0
Resolve an LP relaxation after problem modification.
Collections of row cuts and column cuts.
friend class OsiClpSolverInterface
bool hintParam_[OsiLastHintParam]
Array of hint parameters.
virtual void assignProblem(CoinPackedMatrix *&matrix, double *&collb, double *&colub, double *&obj, double *&rowlb, double *&rowub)=0
Load in a problem by assuming ownership of the arguments.
virtual bool isProvenPrimalInfeasible() const =0
Is primal infeasibility proven?
void findIntegers(bool justCount)
Identify integer variables and create corresponding objects.
void setLanguage(CoinMessages::Language language)
CoinMessages messages()
Return the current set of messages.
virtual const OsiNameVec & getRowNames()
Return a pointer to a vector of row names.
virtual bool getHintParam(OsiHintParam key, bool &yesNo, OsiHintStrength &strength) const
Get a hint parameter (sense and strength only)
virtual void unmarkHotStart()
Delete the hot start snapshot.
virtual int findIntegersAndSOS(bool justCount)
Identify integer variables and SOS and create corresponding objects.
virtual void solveFromHotStart()
Optimize starting from the hot start snapshot.
virtual void setRowUpper(int elementIndex, double elementValue)=0
Set a single row upper bound.
int applied_
Counter for applied cuts.
int numberObjects_
Total number of objects.
int getNumIneffective() const
Number of redundant or ineffective cuts.
virtual void setRowNames(OsiNameVec &srcNames, int srcStart, int len, int tgtStart)
Set multiple row names.
virtual void setColUpper(int elementIndex, double elementValue)=0
Set a single column upper bound.
virtual void enableSimplexInterface(bool doingPrimal)
Enables normal operation of subsequent functions.
virtual void branchAndBound()=0
Invoke solver's built-in enumeration algorithm.
virtual std::vector< double * > getPrimalRays(int maxNumRays) const =0
Get as many primal rays as the solver can provide.
virtual void setRowName(int ndx, std::string name)
Set a row name.
virtual std::string getRowName(int rowIndex, unsigned maxLen=static_cast< unsigned >(std::string::npos)) const
Return the name of the row.
void setApplicationData(void *appData)
Set application data.
virtual bool setIntParam(OsiIntParam key, int value)
Set an integer parameter.
virtual void applyRowCuts(int numberCuts, const OsiRowCut *cuts)
Apply a collection of row cuts which are all effective.
virtual void restoreBaseModel(int numberRows)
Reduce the constraint system to the specified number of constraints.
virtual int getNumCols() const =0
Get the number of columns.
const OsiRowCutDebugger * getRowCutDebugger() const
Get the row cut debugger provided the solution known to the debugger is within the feasible region he...
void setAuxiliaryInfo(OsiAuxInfo *auxiliaryInfo)
Create a clone of an Auxiliary Information object.
virtual void addCol(const CoinPackedVectorBase &vec, const double collb, const double colub, const double obj)=0
Add a column (primal variable) to the problem.
virtual void getBasisStatus(int *cstat, int *rstat) const
Retrieve status information for column and row variables.
virtual bool getStrParam(OsiStrParam key, std::string &value) const
Get a string parameter.
virtual bool setStrParam(OsiStrParam key, const std::string &value)
Set a string parameter.
Abstract Base Class for describing an interface to a solver.
virtual void getBInvCol(int col, double *vec) const
Get a column of the basis inverse.
virtual OsiVectorInt getFractionalIndices(const double etol=1.e-05) const
Get vector of indices of primal variables which are integer variables but have fractional values in t...
virtual bool getHintParam(OsiHintParam key, bool &yesNo) const
Get a hint parameter (sense only)
virtual void setRowBounds(int elementIndex, double lower, double upper)
Set a single row lower and upper bound.
virtual void setRowType(int index, char sense, double rightHandSide, double range)=0
Set the type of a single row.
virtual int getNumIntegers() const
Get the number of integer variables.
virtual bool setDblParam(OsiDblParam key, double value)
Set a double parameter.
virtual void getBInvACol(int col, double *vec) const
Get a column of the tableau.
virtual bool isInteger(int colIndex) const
Return true if the variable is integer.
ApplyCutsReturnCode()
Default constructor.
int extInconsistent_
Counter for model-inconsistent cuts.
OsiObject * modifiableObject(int which) const
Get the specified object.
virtual void deleteCols(const int num, const int *colIndices)=0
Remove a set of columns (primal variables) from the problem.
int ineffective_
Counter for ineffective cuts.
virtual bool isContinuous(int colIndex) const =0
Return true if the variable is continuous.
std::vector< int > OsiVectorInt
Vector of int.
virtual void loadProblem(const CoinPackedMatrix &matrix, const double *collb, const double *colub, const double *obj, const double *rowlb, const double *rowub)=0
Load in a problem by copying the arguments.
virtual void addRows(const int numrows, const CoinPackedVectorBase *const *rows, const double *rowlb, const double *rowub)
Add a set of rows (constraints) to the problem.
virtual int pivot(int colIn, int colOut, int outStatus)
Perform a pivot by substituting a colIn for colOut in the basis.
friend void OsiSolverInterfaceCommonUnitTest(const OsiSolverInterface *emptySi, const std::string &mpsDir, const std::string &netlibDir)
A function that tests the methods in the OsiSolverInterface class.
T forceIntoRange(const T value, const T lower, const T upper) const
A quick inlined function to force a value to be between a minimum and a maximum value.
double dblParam_[OsiLastDblParam]
Array of double parameters.
virtual void setObjName(std::string name)
Set the name of the objective function.
virtual CoinWarmStart * getWarmStart() const =0
Get warm start information.
virtual const double * getRightHandSide() const =0
Get a pointer to an array[getNumRows()] of row right-hand sides.
CoinMessageHandler * messageHandler() const
Return a pointer to the current message handler.
CoinMessageHandler * handler_
Message handler.
int getNumInconsistentWrtIntegerModel() const
Number of cuts inconsistent with the current model.
virtual const double * getColLower() const =0
Get a pointer to an array[getNumCols()] of column lower bounds.
virtual void setColBounds(int elementIndex, double lower, double upper)
Set a single column lower and upper bound.
virtual bool isPrimalObjectiveLimitReached() const
Is the given primal objective limit reached?
virtual std::string dfltRowColName(char rc, int ndx, unsigned digits=7) const
Generate a standard name of the form Rnnnnnnn or Cnnnnnnn.
virtual void getBInvARow(int row, double *z, double *slack=NULL) const
Get a row of the tableau.
virtual std::vector< double * > getDualRays(int maxNumRays, bool fullRay=false) const =0
Get as many dual rays as the solver can provide.
virtual int getNumRows() const =0
Get the number of rows.
virtual int readGMPL(const char *filename, const char *dataname=NULL)
Read a problem in GMPL format from the given filenames.
virtual const double * getStrictColSolution()
Get a pointer to an array[getNumCols()] of primal variable values guaranteed to be between the column...
OsiSolverInterface()
Default Constructor.
virtual void addCols(const int numcols, const CoinPackedVectorBase *const *cols, const double *collb, const double *colub, const double *obj)
Add a set of columns (primal variables) to the problem.
virtual double getInfinity() const =0
Get the solver's value for infinity.
virtual void setColName(int ndx, std::string name)
Set a column name.
const OsiObject * object(int which) const
Get the specified object.
OsiAuxInfo * appDataEtc_
Pointer to user-defined data structure - and more if user wants.
std::vector< double > strictColSolution_
Column solution satisfying lower and upper column bounds.
And this means throw an exception if not possible.
CoinMessages messages_
Messages.
virtual bool setHintParam(OsiHintParam key, bool yesNo=true, OsiHintStrength strength=OsiHintTry, void *=NULL)
Set a hint parameter.
void incrementInfeasible()
Increment infeasible cut counter.
virtual double getObjValue() const =0
Get the objective function value.
virtual const char * getColType(bool refresh=false) const
Return an array[getNumCols()] of column types.
virtual void disableFactorization() const
Undo the effects of enableFactorization.
virtual void saveBaseModel()
Save a copy of the base model.
virtual bool isProvenOptimal() const =0
Is optimality proven?
Primal feasibility tolerance.
virtual bool isAbandoned() const =0
Are there numerical difficulties?
void deleteBranchingInfo(int numberDeleted, const int *which)
Deletes branching information before columns deleted.
CoinMessages * messagesPointer()
Return a pointer to the current set of messages.
int intParam_[OsiLastIntParam]
Array of integer parameters.
virtual void initialSolve()=0
Solve initial LP relaxation.
virtual void enableFactorization() const
Prepare the solver for the use of tableau access methods.
int writeMpsNative(const char *filename, const char **rowNames, const char **columnNames, int formatType=0, int numberAcross=2, double objSense=0.0, int numberSOS=0, const CoinSet *setInfo=NULL) const
Write the problem in MPS format to the specified file with more control over the output.
virtual ApplyCutsReturnCode applyCuts(const OsiCuts &cs, double effectivenessLb=0.0)
Apply a collection of cuts.
std::string strParam_[OsiLastStrParam]
Array of string parameters.
virtual int getNumElements() const =0
Get the number of nonzero elements.
void * getApplicationData() const
Get application data.
OsiObject ** objects() const
Get the array of objects.
void copyParameters(OsiSolverInterface &rhs)
Copy all parameters in this section from one solver to another.
double forceFeasible()
Use current solution to set bounds so current integer feasible solution will stay feasible...
virtual void setObjCoeffSet(const int *indexFirst, const int *indexLast, const double *coeffList)
Set a set of objective function coefficients.
ApplyCutsReturnCode & operator=(const ApplyCutsReturnCode &rhs)
Assignment operator.
virtual void setRowSetBounds(const int *indexFirst, const int *indexLast, const double *boundList)
Set the bounds on a set of rows.
OsiRowCutDebugger * getRowCutDebuggerAlways() const
Get the row cut debugger object.
virtual int readLp(const char *filename, const double epsilon=1e-5)
Read file in LP format from file with name filename.
virtual void disableSimplexInterface()
Undo whatever setting changes the above method had to make.
virtual const double * getColSolution() const =0
Get a pointer to an array[getNumCols()] of primal variable values.
This means it is only a hint.
CoinWarmStart * ws_
Warm start information used for hot starts when the default hot start implementation is used...
virtual ~OsiSolverInterface()
Destructor.
double getIntegerTolerance() const
Return the integrality tolerance of the underlying solver.
virtual double getObjSense() const =0
Get the objective function sense.
virtual int canDoSimplexInterface() const
Return the simplex implementation level.
virtual CoinWarmStart * getPointerToWarmStart(bool &mustDelete)
Get warm start information.
virtual void writeMps(const char *filename, const char *extension="mps", double objSense=0.0) const =0
Write the problem in MPS format to the specified file.
bool defaultHandler_
Flag to say if the currrent handler is the default handler.
virtual int loadFromCoinModel(CoinModel &modelObject, bool keepSolution=false)
Load a model from a CoinModel object.
virtual void setInteger(int index)=0
Set the index-th variable to be an integer variable.
bool defaultHandler() const
Return true if default handler.
virtual void setColNames(OsiNameVec &srcNames, int srcStart, int len, int tgtStart)
Set multiple column names.
friend void OsiSolverInterfaceMpsUnitTest(const std::vector< OsiSolverInterface *> &vecSiP, const std::string &mpsDir)
A function that tests that a lot of problems given in MPS files (mostly the NETLIB problems) solve pr...
std::string objName_
Objective name.
void incrementInternallyInconsistent()
Increment logically inconsistent cut counter.
virtual void deleteColNames(int tgtStart, int len)
Delete len column names starting at index tgtStart.
virtual void setContinuous(int index)=0
Set the index-th variable to be a continuous variable.
void incrementExternallyInconsistent()
Increment model-inconsistent counter.
virtual void setObjective(const double *array)
Set the objective coefficients for all columns.
virtual void passInMessageHandler(CoinMessageHandler *handler)
Pass in a message handler.
virtual int setBasisStatus(const int *cstat, const int *rstat)
Set the status of column and row variables and update the basis factorization and solution...
virtual void deleteRows(const int num, const int *rowIndices)=0
Delete a set of rows (constraints) from the problem.
virtual void markHotStart()
Create a hot start snapshot of the optimization process.
Validate cuts against a known solution.
void incrementApplied()
Increment applied cut counter.
int getNumInfeasible() const
Number of cuts that cause obvious infeasibility.
virtual void addRow(const CoinPackedVectorBase &vec, const double rowlb, const double rowub)=0
Add a row (constraint) to the problem.
~ApplyCutsReturnCode()
Destructor.
char * columnType_
Column type 0 - continuous 1 - binary (may get fixed later) 2 - general integer (may get fixed later)...
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...
int differentModel(OsiSolverInterface &other, bool ignoreNames=true)
Check two models against each other.
virtual bool isBinary(int colIndex) const
Return true if the variable is binary.
OsiAuxInfo * getAuxiliaryInfo() const
Get pointer to auxiliary info object.
Internal class for obtaining status from the applyCuts method.
virtual void reset()
Reset the solver interface.
void newLanguage(CoinMessages::Language language)
Set language.
virtual const double * getObjCoefficients() const =0
Get a pointer to an array[getNumCols()] of objective function coefficients.
virtual const CoinPackedMatrix * getMatrixByRow() const =0
Get a pointer to a row-wise copy of the matrix.
virtual void getReducedGradient(double *columnReducedCosts, double *duals, const double *c) const
Calculate duals and reduced costs for the given objective coefficients.
int numberObjects() const
Get the number of objects.
virtual bool setWarmStart(const CoinWarmStart *warmstart)=0
Set warm start information.
int writeLpNative(const char *filename, char const *const *const rowNames, char const *const *const columnNames, const double epsilon=1.0e-5, const int numberAcross=10, const int decimals=5, const double objSense=0.0, const bool useRowNames=true) const
Write the problem into an Lp file.
int intInconsistent_
Counter for logically inconsistent cuts.
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 with the specified extension.
virtual const double * getRowUpper() const =0
Get a pointer to an array[getNumRows()] of row upper bounds.
virtual const double * getReducedCost() const =0
Get a pointer to an array[getNumCols()] of reduced costs.
virtual const double * getRowLower() const =0
Get a pointer to an array[getNumRows()] of row lower bounds.
virtual int reducedCostFix(double gap, bool justInteger=true)
Fix variables at bound based on reduced cost.
Abstract base class for ‘objects’.
virtual const double * getRowRange() const =0
Get a pointer to an array[getNumRows()] of row ranges.
OsiObject ** object_
Integer and ... information (integer info normally at beginning)
virtual void applyRowCut(const OsiRowCut &rc)=0
Apply a row cut (append to the constraint matrix).
OsiHintStrength hintStrength_[OsiLastHintParam]
Array of hint strengths.
virtual CoinWarmStart * getEmptyWarmStart() const =0
Get an empty warm start object.
OsiNameVec colNames_
Column names.
int numberIntegers_
Number of integers.
virtual CoinPackedMatrix * getMutableMatrixByCol() const
Get a pointer to a mutable column-wise copy of the matrix.
virtual void getBasics(int *index) const
Get indices of basic variables.
void setInitialData()
Set OsiSolverInterface object state for default constructor.
void incrementIneffective()
Increment ineffective cut counter.
virtual bool isDualObjectiveLimitReached() const
Is the given dual objective limit reached?
void setRowColNames(const CoinMpsIO &mps)
Set row and column names from a CoinMpsIO object.
virtual std::string getObjName(unsigned maxLen=static_cast< unsigned >(std::string::npos)) const
Return the name of the objective function.
virtual bool basisIsAvailable() const
Check if an optimal basis is available.
OsiRowCutDebugger * rowCutDebugger_
Pointer to row cut debugger object.
int getNumApplied() const
Number of cuts applied.
virtual void setObjSense(double s)=0
Set the objective function sense.
virtual void getBInvRow(int row, double *z) const
Get a row of the basis inverse.
virtual const double * getColUpper() const =0
Get a pointer to an array[getNumCols()] of column upper bounds.