18 #include "CoinMessageHandler.hpp"
19 #include "CoinHelperFunctions.hpp"
20 #include "CoinFinite.hpp"
44 ClpModel (
bool emptyMessages =
false );
61 bool dropNames =
true,
bool dropIntegers =
true);
80 const double* collb,
const double* colub,
82 const double* rowlb,
const double* rowub,
85 const double* collb,
const double* colub,
87 const double* rowlb,
const double* rowub,
92 void loadProblem (
const int numcols,
const int numrows,
93 const CoinBigIndex* start,
const int* index,
95 const double* collb,
const double* colub,
97 const double* rowlb,
const double* rowub,
104 int loadProblem ( CoinModel & modelObject,
bool tryPlusMinusOne =
false);
106 void loadProblem (
const int numcols,
const int numrows,
107 const CoinBigIndex* start,
const int* index,
108 const double* value,
const int * length,
109 const double* collb,
const double* colub,
111 const double* rowlb,
const double* rowub,
115 const CoinBigIndex * start,
116 const int * column,
const double * element);
123 int readMps(
const char *filename,
124 bool keepNames =
false,
125 bool ignoreErrors =
false);
127 int readGMPL(
const char *filename,
const char * dataName,
128 bool keepNames =
false);
140 void resize (
int newNumberRows,
int newNumberColumns);
142 void deleteRows(
int number,
const int * which);
144 void addRow(
int numberInRow,
const int * columns,
145 const double * elements,
double rowLower = -COIN_DBL_MAX,
150 const CoinBigIndex * rowStarts,
const int * columns,
151 const double * elements);
153 void addRows(
int number,
const double * rowLower,
154 const double * rowUpper,
155 const CoinBigIndex * rowStarts,
const int * rowLengths,
157 const double * elements);
158 #ifndef CLP_NO_VECTOR
159 void addRows(
int number,
const double * rowLower,
160 const double * rowUpper,
161 const CoinPackedVectorBase *
const * rows);
168 int addRows(
const CoinBuild & buildObject,
bool tryPlusMinusOne =
false,
169 bool checkDuplicates =
true);
178 int addRows(CoinModel & modelObject,
bool tryPlusMinusOne =
false,
179 bool checkDuplicates =
true);
186 const double * elements,
194 const CoinBigIndex * columnStarts,
const int * rows,
195 const double * elements);
196 void addColumns(
int number,
const double * columnLower,
197 const double * columnUpper,
198 const double * objective,
199 const CoinBigIndex * columnStarts,
const int * columnLengths,
201 const double * elements);
202 #ifndef CLP_NO_VECTOR
203 void addColumns(
int number,
const double * columnLower,
204 const double * columnUpper,
205 const double * objective,
206 const CoinPackedVectorBase *
const * columns);
213 int addColumns(
const CoinBuild & buildObject,
bool tryPlusMinusOne =
false,
214 bool checkDuplicates =
true);
222 int addColumns(CoinModel & modelObject,
bool tryPlusMinusOne =
false,
223 bool checkDuplicates =
true);
226 bool keepZero =
false) {
274 void setRowName(
int rowIndex, std::string & name) ;
285 int findNetwork(
char * rotate,
double fractionNeeded = 0.75);
303 int formatType = 0,
int numberAcross = 2,
304 double objSense = 0.0)
const ;
507 inline void setObjCoeff(
int elementIndex,
double elementValue ) {
521 double lower,
double upper );
532 const int* indexLast,
533 const double* boundList);
537 inline void setColLower(
int elementIndex,
double elementValue ) {
542 inline void setColUpper(
int elementIndex,
double elementValue ) {
548 double lower,
double upper ) {
559 const int* indexLast,
560 const double* boundList) {
566 void setRowLower(
int elementIndex,
double elementValue );
570 void setRowUpper(
int elementIndex,
double elementValue ) ;
574 double lower,
double upper ) ;
583 const int* indexLast,
584 const double* boundList);
587 inline const double *
rowScale()
const {
646 inline double *
objective(
const double * solution,
double & offset,
bool refresh =
true)
const {
684 inline CoinPackedMatrix *
matrix()
const {
685 if (
matrix_ == NULL )
return NULL;
731 bool deleteCurrent =
false) {
875 inline const std::vector<std::string> *
rowNames()
const {
878 inline const std::string&
rowName(
int iRow)
const {
903 int emptyProblem(
int * infeasNumber = NULL,
double * infeasSum = NULL,
bool printMessage =
true);
915 void times(
double scalar,
916 const double * x,
double * y)
const;
921 const double * x,
double * y)
const ;
1018 #define COIN_CBC_USING_CLP 0x01000000
1034 void getRowBound(
int iRow,
double& lower,
double& upper)
const;
1037 const double* collb,
const double* colub,
1039 const double* rowlb,
const double* rowub,
1040 const double * rowObjective = NULL);
const char *const * rowNamesAsChar() const
Create row names as char **.
double * mutableInverseRowScale() const
int maximumIterations() const
Maximum number of iterations.
void copyColumnNames(const std::vector< std::string > &columnNames, int first, int last)
Copies in Column names - modifies names first .. last-1.
int getNumCols() const
Number of columns.
ClpTrustedData * trustedUserPointer_
Trusted user pointer e.g. for heuristics.
bool isAbandoned() const
Are there a numerical difficulties?
void setColumnSetBounds(const int *indexFirst, const int *indexLast, const double *boundList)
Set the bounds on a number of columns simultaneously The default implementation just invokes setColL...
void * getUserPointer() const
const double * getColLower() const
char * integerInformation() const
Integer information.
void setSmallElementValue(double value)
double * ray_
Infeasible/unbounded ray.
ClpDataSave & operator=(const ClpDataSave &rhs)
Assignment operator. This copies the data.
int numberIterations() const
Number of iterations.
void setUserPointer(void *pointer)
User pointer for whatever reason.
void setObjectiveCoefficient(int elementIndex, double elementValue)
Set an objective function coefficient.
CoinPackedMatrix baseMatrix_
Base packed matrix.
This is a tiny class where data can be saved round calls.
int numberThreads_
Number of threads (not very operational)
double * dualRowSolution() const
Dual row solution.
int numberColumns_
Number of columns.
double infeasibilityCost_
double * rowUpper_
Row upper.
double * primalRowSolution() const
Primal row solution.
ClpObjective * objectiveAsObject() const
Objective methods.
ClpEventHandler * eventHandler_
Event handler.
void gutsOfDelete(int type)
Does most of deletion (0 = all, 1 = most)
bool defaultHandler_
Flag to say if default handler (so delete)
void chgRowLower(const double *rowLower)
Change row lower bounds.
void copyNames(std::vector< std::string > &rowNames, std::vector< std::string > &columnNames)
Copies in names.
void setColBounds(int elementIndex, double lower, double upper)
Set a single column lower and upper bound.
double * rowUpper() const
Row upper.
void setColumnUpper(int elementIndex, double elementValue)
Set a single column upper bound Use DBL_MAX for infinity.
int writeMps(const char *filename, int formatType=0, int numberAcross=2, double objSense=0.0) const
Write the problem in MPS format to the specified file.
int solveType() const
Solve type - 1 simplex, 2 simplex interface, 3 Interior.
For a structure to be used by trusted code.
Objective Abstract Base Class.
double * savedColumnScale_
Saved column scale factors.
void setNumberThreads(int value)
void setRowSetBounds(const int *indexFirst, const int *indexLast, const double *boundList)
Set the bounds on a number of rows simultaneously
double * reducedCost_
Reduced costs.
char * integerType_
Integer information.
void copyinStatus(const unsigned char *statusArray)
Copy in status (basis) vector.
bool isInteger(int index) const
Return true if the index-th variable is an integer variable.
void setDualTolerance(double value)
Number of rows.
The maximum amount the primal constraints can be violated and still be considered feasible...
int scalingFlag() const
Gets scalingFlag.
unsigned int specialOptions_
For advanced options See get and set for meaning.
CoinPackedMatrix * matrix() const
Matrix (if not ClpPackedmatrix be careful about memory leak.
Just a marker, so that we can allocate a static sized array to store parameters.
bool isPrimalObjectiveLimitReached() const
Is the given primal objective limit reached?
CoinMessageHandler * messageHandler() const
Return handler.
ClpTrustedData * getTrustedUserPointer() const
unsigned int specialOptions_
double objectiveScale() const
Scaling of objective.
ClpObjective * objective_
Objective.
int problemStatus_
Status of problem.
double objectiveOffset() const
Objective offset.
unsigned char * status_
Status (i.e.
void onStopped()
On stopped - sets secondary status.
ClpPackedMatrix * clpScaledMatrix() const
Scaled ClpPackedMatrix.
void loadProblem(const ClpMatrixBase &matrix, const double *collb, const double *colub, const double *obj, const double *rowlb, const double *rowub, const double *rowObjective=NULL)
Loads a problem (the constraints on the rows are given by lower and upper bounds).
int findNetwork(char *rotate, double fractionNeeded=0.75)
Find a network subset.
bool getIntParam(ClpIntParam key, int &value) const
Set an integer parameter.
double optimizationDirection() const
Direction of optimization (1 - minimize, -1 - maximize, 0 - ignore.
void setColUpper(int elementIndex, double elementValue)
Set a single column upper bound Use DBL_MAX for infinity.
double * rowObjective_
Row Objective (? sign) - may be NULL.
int maximumInternalColumns_
Maximum number of columns (internal arrays) in model.
void setColLower(int elementIndex, double elementValue)
Set a single column lower bound Use -DBL_MAX for -infinity.
CoinMessages * messagesPointer()
Return pointer to messages.
double * primalColumnSolution() const
Primal column solution.
CoinThreadRandom & mutableRandomNumberGenerator()
Thread specific random number generator.
ClpDataSave()
Default constructor.
void setRowName(int rowIndex, std::string &name)
Set name of row.
int numberRows() const
Number of rows.
void loadQuadraticObjective(const int numberColumns, const CoinBigIndex *start, const int *column, const double *element)
Load up quadratic objective.
unsigned char * statusCopy() const
Return copy of status (i.e.
std::string strParam_[ClpLastStrParam]
Array of string parameters.
double optimizationDirection_
Direction of optimization (1 - minimize, -1 - maximize, 0 - ignore.
void setObjCoeff(int elementIndex, double elementValue)
Set an objective function coefficient.
void setTrustedUserPointer(ClpTrustedData *pointer)
Trusted user pointer.
void copy(const ClpMatrixBase *from, ClpMatrixBase *&to)
Copy contents - resizing if necessary - otherwise re-use memory.
void returnModel(ClpModel &otherModel)
Return model - nulls all arrays so can be deleted safely also updates any scalars.
int status() const
Status of problem: -1 - unknown e.g.
virtual void modifyCoefficient(int row, int column, double newElement, bool keepZero=false)
Modify one element of packed matrix.
Just a marker, so that we can allocate a static sized array to store parameters.
bool isDualObjectiveLimitReached() const
Is the given dual objective limit reached?
void setPrimalObjectiveLimit(double value)
Number of rows.
const double * getColSolution() const
Number of rows.
void replaceMatrix(CoinPackedMatrix *newmatrix, bool deleteCurrent=false)
Replace Clp Matrix (current is not deleted unless told to and new is used) So up to user to delete cu...
int whatsChanged() const
What has changed in model (only for masochistic users)
double dualTolerance() const
Dual tolerance to use.
ClpEventHandler * eventHandler() const
Event handler.
virtual double * gradient(const ClpSimplex *model, const double *solution, double &offset, bool refresh, int includeLinear=2)=0
Returns gradient.
double presolveTolerance() const
Presolve tolerance to use.
double * mutableRowScale() const
double * columnActivity_
Column activities.
void scaling(int mode=1)
Sets or unsets scaling, 0 -off, 1 equilibrium, 2 geometric, 3 auto, 4 auto-but-as-initialSolve-in-bab...
const double * columnScale() const
int secondaryStatus() const
Secondary status of problem - may get extended 0 - none 1 - primal infeasible because dual limit reac...
bool isProvenOptimal() const
Is optimality proven?
double * columnUpper_
Column Upper.
void setRowObjective(const double *rowObjective)
This just loads up a row objective.
const double * inverseColumnScale() const
double objectiveScale_
Scaling of objective.
int numberThreads() const
Number of threads (not really being used)
void deleteRows(int number, const int *which)
Deletes rows.
double * inverseRowScale_
Inverse row scale factors for matrix (end of rowScale_)
const double * getRowUpper() const
Number of rows.
void stopPermanentArrays()
Stop using maximumRows_ and Columns_.
double * savedRowScale_
Saved row scale factors for matrix.
const double * rowScale() const
Scaling.
void setNewRowCopy(ClpMatrixBase *newCopy)
Set new row matrix.
double * rowObjective() const
Row Objective.
bool statusExists() const
See if status (i.e. basis) array exists (partly for OsiClp)
void setColSetBounds(const int *indexFirst, const int *indexLast, const double *boundList)
Set the bounds on a number of columns simultaneously
double * dualColumnSolution() const
Reduced costs.
void setColumnBounds(int elementIndex, double lower, double upper)
Set a single column lower and upper bound.
int cleanMatrix(double threshold=1.0e-20)
Really clean up matrix (if ClpPackedMatrix).
unsigned int whatsChanged_
Whats changed since last solve.
const double * getRowLower() const
Number of rows.
void setRowScale(double *scale)
double * mutableInverseColumnScale() const
double dualObjectiveLimit() const
Dual objective limit.
const double * getReducedCost() const
Number of rows.
void addRow(int numberInRow, const int *columns, const double *elements, double rowLower=-COIN_DBL_MAX, double rowUpper=COIN_DBL_MAX)
Add one row.
CoinModel * createCoinModel() const
This creates a coinModel object.
double * columnLower_
Column Lower.
int scalingFlag_
Scale flag, 0 none, 1 equilibrium, 2 geometric, 3, auto, 4 dynamic, 5 geometric on rows...
void chgObjCoefficients(const double *objIn)
Change objective coefficients.
bool setStrParam(ClpStrParam key, const std::string &value)
Set an string parameter.
void passInMessageHandler(CoinMessageHandler *handler)
Pass in Message handler (not deleted at end)
void setRhsScale(double value)
int maximumColumns_
Maximum number of columns in model.
const double * inverseRowScale() const
double * objective(const double *solution, double &offset, bool refresh=true) const
void copyRowNames(const std::vector< std::string > &rowNames, int first, int last)
Copies in Row names - modifies names first .. last-1.
bool setDblParam(ClpDblParam key, double value)
Set an double parameter.
ClpIntParam
This is where to put any useful stuff.
#define COIN_CBC_USING_CLP
void deleteIntegerInformation()
Drop integer informations.
bool isProvenPrimalInfeasible() const
Is primal infeasiblity proven?
bool getStrParam(ClpStrParam key, std::string &value) const
Set an integer parameter.
void setWhatsChanged(int value)
double rawObjectiveValue() const
Objective value - always minimize.
void setObjectiveValue(double value)
CoinPackedMatrix baseRowCopy_
Base row copy.
void deleteNamesAsChar(const char *const *names, int number) const
Delete char * version of names.
double getObjSense() const
Number of rows.
double * rowLower() const
Row lower.
double maximumSeconds() const
Maximum time in seconds (from when set called)
int intParam_[ClpLastIntParam]
Array of integer parameters.
void setSolveType(int type)
Number of rows.
void gutsOfCopy(const ClpModel &rhs, int trueCopy=1)
Does most of copying If trueCopy 0 then just points to arrays If -1 leaves as much as possible...
int numberColumns() const
Number of rows.
bool defaultHandler() const
Return true if default handler.
double zeroFactorizationTolerance_
double zeroSimplexTolerance_
Just a marker, so that we can allocate a static sized array to store parameters.
virtual CoinBigIndex getNumElements() const =0
Number of entries in the packed matrix.
int numberRows_
Number of rows.
void startPermanentArrays()
Start using maximumRows_ and Columns_.
void setColumnName(int colIndex, std::string &name)
Set name of col.
CoinMessages * coinMessagesPointer()
Return pointer to Coin messages.
double objectiveValue() const
Objective value.
void getRowBound(int iRow, double &lower, double &upper) const
gets lower and upper bounds on rows
int getNumElements() const
Number of elements in matrix.
ClpMatrixBase * rowCopy() const
Row Matrix.
std::vector< std::string > columnNames_
Column names.
double objectiveValue_
Objective value.
int solveType_
Solve type - 1 simplex, 2 simplex interface, 3 Interior.
bool isIterationLimitReached() const
Iteration limit reached?
ClpModel(bool emptyMessages=false)
Default constructor.
void generateCpp(FILE *fp)
Create C++ lines to get to current state.
const std::string & rowName(int iRow) const
Pass in Message handler (not deleted at end)
int readMps(const char *filename, bool keepNames=false, bool ignoreErrors=false)
Read an mps file from the given filename.
void addColumns(int number, const double *columnLower, const double *columnUpper, const double *objective, const CoinBigIndex *columnStarts, const int *rows, const double *elements)
Add columns.
void setObjectivePointer(ClpObjective *newobjective)
Pass in Message handler (not deleted at end)
void addRows(int number, const double *rowLower, const double *rowUpper, const CoinBigIndex *rowStarts, const int *columns, const double *elements)
Add rows.
Set Dual objective limit.
unsigned char * statusArray() const
Return address of status (i.e. basis) array (char[numberRows+numberColumns])
double getObjValue() const
const std::vector< std::string > * columnNames() const
Column names.
CoinMessages messages() const
Return messages.
The maximum amount the dual constraints can be violated and still be considered feasible.
double rhsScale_
Scaling of rhs and bounds.
void borrowModel(ClpModel &otherModel)
Borrow model.
void gutsOfScaling()
Does much of scaling.
void setColSolution(const double *input)
Number of rows.
Base class for Clp event handling.
const double * getObjCoefficients() const
void chgColumnLower(const double *columnLower)
Change column lower bounds.
void setDualObjectiveLimit(double value)
Number of rows.
Abstract base class for Clp Matrices.
void setInteger(int index)
Set the index-th variable to be an integer variable.
const double * getRowPrice() const
Number of rows.
ClpMatrixBase * clpMatrix() const
Clp Matrix.
void newLanguage(CoinMessages::Language language)
Set language.
void setObjective(ClpObjective *objective)
Pass in Message handler (not deleted at end)
int secondaryStatus_
Secondary status of problem.
int numberIterations_
Number of iterations.
void setOptimizationDirection(double value)
Number of rows.
double * columnUpper() const
Column Upper.
~ClpDataSave()
Destructor.
void unscale()
If we constructed a "really" scaled model then this reverses the operation.
void setRowUpper(int elementIndex, double elementValue)
Set a single row upper bound Use DBL_MAX for infinity.
bool getDblParam(ClpDblParam key, double &value) const
Set an integer parameter.
void setColumnScale(double *scale)
void setNumberIterations(int numberIterationsNew)
Number of rows.
int lengthNames_
length of names (0 means no names)
const char *const * columnNamesAsChar() const
Create column names as char **.
void resize(int newNumberRows, int newNumberColumns)
Resizes rim part of model.
virtual CoinPackedMatrix * getPackedMatrix() const =0
Return a complete CoinPackedMatrix.
void setMaximumIterations(int value)
Number of rows.
CoinMessageHandler * handler_
Message handler.
CoinMessages coinMessages_
Coin messages.
void setProblemStatus(int problemStatusNew)
Set problem status.
double * mutableColumnScale() const
double primalObjectiveLimit() const
Primal objective limit.
double * rowScale_
Row scale factors for matrix.
void setLogLevel(int value)
Amount of print out: 0 - none 1 - just final 2 - just factorizations 3 - as 2 plus a bit more 4 - ver...
void transposeTimes(double scalar, const double *x, double *y) const
Return y + x * scalar * A in y.
std::vector< std::string > rowNames_
Row names.
void chgColumnUpper(const double *columnUpper)
Change column upper bounds.
void setObjectiveScale(double value)
bool isProvenDualInfeasible() const
Is dual infeasiblity proven?
void setClpScaledMatrix(ClpPackedMatrix *scaledMatrix)
Sets pointer to scaled ClpPackedMatrix.
int getNumRows() const
Number of rows.
void setLengthNames(int value)
length of names (0 means no names0
int readGMPL(const char *filename, const char *dataName, bool keepNames=false)
Read GMPL files from the given filenames.
void dropNames()
Drops names - makes lengthnames 0 and names empty.
double * rowLower_
Row lower.
void setContinuous(int index)
Set the index-th variable to be a continuous variable.
int maximumInternalRows_
Maximum number of rows (internal arrays) in model.
double rhsScale() const
Scaling of rhs and bounds.
double * unboundedRay() const
void deleteColumns(int number, const int *which)
Deletes columns.
void gutsOfLoadModel(int numberRows, int numberColumns, const double *collb, const double *colub, const double *obj, const double *rowlb, const double *rowub, const double *rowObjective=NULL)
puts in format I like - 4 array matrix - may make row copy
double getSmallElementValue() const
Small element value - elements less than this set to zero, default is 1.0e-20.
void modifyCoefficient(int row, int column, double newElement, bool keepZero=false)
Modify one element of a matrix.
void setColumnLower(int elementIndex, double elementValue)
Set a single column lower bound Use -DBL_MAX for -infinity.
void times(double scalar, const double *x, double *y) const
Return y + A * x * scalar in y.
void deleteQuadraticObjective()
Get rid of quadratic objective.
void setRowLower(int elementIndex, double elementValue)
Set a single row lower bound Use -DBL_MAX for -infinity.
void setMaximumSeconds(double value)
Number of rows.
double smallElement_
Small element value.
void setObjectiveOffset(double value)
Number of rows.
Maximum time in seconds - after this action is as max iterations.
double * rowActivity_
Row activities.
void setPrimalTolerance(double value)
Number of rows.
double * objective() const
Objective.
const std::string & columnName(int iColumn) const
Pass in Message handler (not deleted at end)
void * userPointer_
User pointer for whatever reason.
void setRandomSeed(int value)
Set seed for thread specific random number generator.
void replaceMatrix(ClpMatrixBase *matrix, bool deleteCurrent=false)
Replace Clp Matrix (current is not deleted unless told to and new is used) So up to user to delete cu...
double * columnScale_
Column scale factors.
CoinMessages messages_
Messages.
Objective function constant.
int maximumRows_
Maximum number of rows in model.
int logLevel() const
Pass in Message handler (not deleted at end)
const std::vector< std::string > * rowNames() const
Row names.
std::string getRowName(int iRow) const
Return name or Rnnnnnnn.
void createEmptyMatrix()
Create empty ClpPackedMatrix.
CoinMessageHandler * pushMessageHandler(CoinMessageHandler *handler, bool &oldDefault)
Pass in Message handler (not deleted at end) and return current.
void addColumn(int numberInColumn, const int *rows, const double *elements, double columnLower=0.0, double columnUpper=COIN_DBL_MAX, double objective=0.0)
Add one column.
CoinThreadRandom * randomNumberGenerator()
Thread specific random number generator.
double dblParam_[ClpLastDblParam]
Array of double parameters.
double primalTolerance() const
Primal tolerance to use.
void setSecondaryStatus(int newstatus)
Number of rows.
CoinThreadRandom randomNumberGenerator_
Thread specific random number generator.
std::string getColumnName(int iColumn) const
Return name or Cnnnnnnn.
double * infeasibilityRay() const
Infeasibility/unbounded ray (NULL returned if none/wrong) Up to user to use delete [] on these arrays...
double * inverseColumnScale_
Inverse column scale factors for matrix (end of columnScale_)
bool inCbcBranchAndBound() const
Set an integer parameter.
bool hitMaximumIterations() const
Returns true if hit maximum iterations (or time)
void popMessageHandler(CoinMessageHandler *oldHandler, bool oldDefault)
back to previous message handler
int lengthNames() const
length of names (0 means no names0
ClpModel & operator=(const ClpModel &rhs)
Assignment operator. This copies the data.
void copyInIntegerInformation(const char *information)
Copy in integer informations.
int problemStatus() const
Number of rows.
ClpPackedMatrix * scaledMatrix_
Scaled packed matrix.
bool setIntParam(ClpIntParam key, int value)
Set an integer parameter.
const double * getRowObjCoefficients() const
ClpMatrixBase * rowCopy_
Row copy if wanted.
ClpMatrixBase * matrix_
Packed matrix.
void chgRowUpper(const double *rowUpper)
Change row upper bounds.
CoinMessages coinMessages() const
Return Coin messages.
void setRowBounds(int elementIndex, double lower, double upper)
Set a single row lower and upper bound.
The maximum number of iterations Clp can execute in the simplex methods.
unsigned int specialOptions() const
For advanced options 1 - Don't keep changing infeasibility weight 2 - Keep nonLinearCost round solves...
void setSpecialOptions(unsigned int value)
Set an integer parameter.
const double * getColUpper() const
const double * getRowActivity() const
Number of rows.
int getIterationCount() const
Number of rows.
std::string problemName() const
Number of rows.
double * columnLower() const
Column Lower.
Tolerance to use in presolve.
bool permanentArrays() const
If we are using maximumRows_ and Columns_.
void setLanguage(CoinMessages::Language language)
Pass in Message handler (not deleted at end)
void passInEventHandler(const ClpEventHandler *eventHandler)
Pass in Event handler (cloned and deleted at end)
int emptyProblem(int *infeasNumber=NULL, double *infeasSum=NULL, bool printMessage=true)
Solve a problem with no elements - return status and dual and primal infeasibilites.