46 ClpModel(
bool emptyMessages =
false);
63 bool dropNames =
true,
bool dropIntegers =
true);
82 const double *collb,
const double *colub,
84 const double *rowlb,
const double *rowub,
87 const double *collb,
const double *colub,
89 const double *rowlb,
const double *rowub,
94 void loadProblem(
const int numcols,
const int numrows,
97 const double *collb,
const double *colub,
99 const double *rowlb,
const double *rowub,
108 void loadProblem(
const int numcols,
const int numrows,
110 const double *value,
const int *length,
111 const double *collb,
const double *colub,
113 const double *rowlb,
const double *rowub,
118 const int *column,
const double *element);
125 int readMps(
const char *filename,
126 bool keepNames =
false,
127 bool ignoreErrors =
false);
129 int readGMPL(
const char *filename,
const char *dataName,
130 bool keepNames =
false);
142 void resize(
int newNumberRows,
int newNumberColumns);
148 void deleteRows(
int number,
const int *which);
150 void addRow(
int numberInRow,
const int *columns,
157 const double *elements);
159 void addRows(
int number,
const double *rowLower,
160 const double *rowUpper,
163 const double *elements);
164 #ifndef CLP_NO_VECTOR
165 void addRows(
int number,
const double *rowLower,
166 const double *rowUpper,
175 bool checkDuplicates =
true);
185 bool checkDuplicates =
true);
191 int numberColumns,
const int *whichColumns);
195 const double *elements,
204 const double *elements);
205 void addColumns(
int number,
const double *columnLower,
206 const double *columnUpper,
207 const double *objective,
208 const CoinBigIndex *columnStarts,
const int *columnLengths,
210 const double *elements);
211 #ifndef CLP_NO_VECTOR
212 void addColumns(
int number,
const double *columnLower,
213 const double *columnUpper,
214 const double *objective,
223 bool checkDuplicates =
true);
232 bool checkDuplicates =
true);
235 bool keepZero =
false)
284 void setRowName(
int rowIndex, std::string &name);
295 int findNetwork(
char *rotate,
double fractionNeeded = 0.75);
313 int formatType = 0,
int numberAcross = 2,
314 double objSense = 0.0)
const;
577 double lower,
double upper);
588 const int *indexLast,
589 const double *boundList);
606 double lower,
double upper)
618 const int *indexLast,
619 const double *boundList)
626 void setRowLower(
int elementIndex,
double elementValue);
630 void setRowUpper(
int elementIndex,
double elementValue);
634 double lower,
double upper);
643 const int *indexLast,
644 const double *boundList);
647 inline const double *
rowScale()
const
726 inline double *
objective(
const double *solution,
double &offset,
bool refresh =
true)
const
836 bool deleteCurrent =
false)
863 inline double *
ray()
const
870 return (
ray_ != NULL);
1033 inline const std::vector< std::string > *
rowNames()
const
1067 int emptyProblem(
int *infeasNumber = NULL,
double *infeasSum = NULL,
bool printMessage =
true);
1079 void times(
double scalar,
1080 const double *x,
double *y)
const;
1085 const double *x,
double *y)
const;
1189 #define COIN_CBC_USING_CLP 0x01000000
1206 void getRowBound(
int iRow,
double &lower,
double &upper)
const;
1209 const double *collb,
const double *colub,
1211 const double *rowlb,
const double *rowub,
1212 const double *rowObjective = NULL);
1334 #define ROW_COLUMN_COUNTS_SAME 1
1335 #define MATRIX_SAME 2
1336 #define MATRIX_JUST_ROWS_ADDED 4
1337 #define MATRIX_JUST_COLUMNS_ADDED 8
1338 #define ROW_LOWER_SAME 16
1339 #define ROW_UPPER_SAME 32
1340 #define OBJECTIVE_SAME 64
1341 #define COLUMN_LOWER_SAME 128
1342 #define COLUMN_UPPER_SAME 256
1343 #define BASIS_SAME 512
1344 #define ALL_SAME 65339
1345 #define ALL_SAME_EXCEPT_COLUMN_BOUNDS 65337
bool isPrimalObjectiveLimitReached() const
Is the given primal objective limit reached?
double * ray() const
For advanced users - no need to delete - sign not changed.
CoinThreadRandom * randomNumberGenerator()
Thread specific random number generator.
ClpDataSave & operator=(const ClpDataSave &rhs)
Assignment operator. This copies the data.
~ClpDataSave()
Destructor.
double optimizationDirection_
Direction of optimization (1 - minimize, -1 - maximize, 0 - ignore.
double primalTolerance() const
Primal tolerance to use.
int lengthNames() const
length of names (0 means no names0
double * savedColumnScale_
Saved column scale factors.
void setClpScaledMatrix(ClpPackedMatrix *scaledMatrix)
Sets pointer to scaled ClpPackedMatrix.
double objectiveScale_
Scaling of objective.
The maximum amount the primal constraints can be violated and still be considered feasible...
double * mutableInverseRowScale() const
const double * getColSolution() const
void startPermanentArrays()
Start using maximumRows_ and Columns_.
The maximum number of iterations Clp can execute in the simplex methods.
double * inverseColumnScale_
Inverse column scale factors for matrix (end of columnScale_)
void copy(const ClpMatrixBase *from, ClpMatrixBase *&to)
Copy contents - resizing if necessary - otherwise re-use memory.
bool setIntParam(ClpIntParam key, int value)
Set an integer parameter.
void gutsOfDelete(int type)
Does most of deletion (0 = all, 1 = most)
ClpMatrixBase * rowCopy() const
Row Matrix.
double * rowUpper_
Row upper.
double * mutableRowScale() const
double dblParam_[ClpLastDblParam]
Array of double parameters.
int secondaryStatus_
Secondary status of problem.
void copyColumnNames(const std::vector< std::string > &columnNames, int first, int last)
Copies in Column names - modifies names first .. last-1.
int secondaryStatus() const
Secondary status of problem - may get extended 0 - none 1 - primal infeasible because dual limit reac...
char * integerInformation() const
Integer information.
double * columnScale_
Column scale factors.
void setColumnName(int colIndex, std::string &name)
Set name of col.
const double * getColLower() const
void setObjectivePointer(ClpObjective *newobjective)
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.
void setContinuous(int index)
Set the index-th variable to be a continuous variable.
ClpMatrixBase * rowCopy_
Row copy if wanted.
double * objective() const
Objective.
const double * columnScale() const
void setRowUpper(int elementIndex, double elementValue)
Set a single row upper bound Use DBL_MAX for infinity.
void setColUpper(int elementIndex, double elementValue)
Set a single column upper bound Use DBL_MAX for infinity.
std::string strParam_[ClpLastStrParam]
Array of string parameters.
ClpIntParam
This is where to put any useful stuff.
bool statusExists() const
See if status (i.e. basis) array exists (partly for OsiClp)
void copyInIntegerInformation(const char *information)
Copy in integer informations.
void setMaximumWallSeconds(double value)
void setObjectiveOffset(double value)
void copyRowNames(const std::vector< std::string > &rowNames, int first, int last)
Copies in Row names - modifies names first .. last-1.
void deleteIntegerInformation()
Drop integer informations.
Abstract base class for Clp Matrices.
double dualTolerance() const
Dual tolerance to use.
double dualObjectiveLimit() const
Dual objective limit.
int maximumRows_
Maximum number of rows in model.
void setMaximumSeconds(double value)
double * columnLower() const
Column Lower.
CoinMessages messages_
Messages.
void setObjectiveCoefficient(int elementIndex, double elementValue)
Set an objective function coefficient.
bool setStrParam(ClpStrParam key, const std::string &value)
Set an string parameter.
void addColumns(int number, const double *columnLower, const double *columnUpper, const double *objective, const CoinBigIndex *columnStarts, const int *rows, const double *elements)
Add columns.
const double * rowScale() const
Scaling.
double * reducedCost_
Reduced costs.
int findNetwork(char *rotate, double fractionNeeded=0.75)
Find a network subset.
double * rowUpper() const
Row upper.
double optimizationDirection() const
Direction of optimization (1 - minimize, -1 - maximize, 0 - ignore.
For a structure to be used by trusted code.
double * mutableColumnScale() const
ClpMatrixBase * matrix_
Packed matrix.
CoinMessages coinMessages_
Coin messages.
ClpObjective * objectiveAsObject() const
Objective methods.
CoinMessages * coinMessagesPointer()
Return pointer to Coin messages.
int numberThreads() const
Number of threads (not really being used)
void setObjectiveScale(double value)
double objectiveValue() const
Objective value.
double primalObjectiveLimit() const
Primal objective limit.
const double * getReducedCost() const
double * dualColumnSolution() const
Reduced costs.
This is a simple minded model which is stored in a format which makes it easier to construct and modi...
int numberRows_
Number of rows.
const std::vector< std::string > * rowNames() const
Row names.
int solveType_
Solve type - 1 simplex, 2 simplex interface, 3 Interior.
std::string getColumnName(int iColumn) const
Return name or Cnnnnnnn.
ClpTrustedData * getTrustedUserPointer() const
CoinMessageHandler * pushMessageHandler(CoinMessageHandler *handler, bool &oldDefault)
Pass in Message handler (not deleted at end) and return current.
void setDefaultMessageHandler()
Overrides message handler with a default one.
void setPrimalObjectiveLimit(double value)
Maximum time in seconds - after, this action is as max iterations.
int numberIterations_
Number of iterations.
void synchronizeMatrix()
Makes sure matrix dimensions are at least model dimensions.
ClpEventHandler * eventHandler() const
Event handler.
void setRowSetBounds(const int *indexFirst, const int *indexLast, const double *boundList)
Set the bounds on a number of rows simultaneously
bool isIterationLimitReached() const
Iteration limit reached?
void addRow(int numberInRow, const int *columns, const double *elements, double rowLower=-COIN_DBL_MAX, double rowUpper=COIN_DBL_MAX)
Add one row.
double * rowObjective_
Row Objective (? sign) - may be NULL.
const double * getRowActivity() const
Base class for message handling.
const std::string & problemName() const
double objectiveOffset() const
Objective offset.
void setColSolution(const double *input)
Objective Abstract Base Class.
int whatsChanged() const
What has changed in model (only for masochistic users)
void gutsOfScaling()
Does much of scaling.
int maximumInternalRows_
Maximum number of rows (internal arrays) in model.
ClpPackedMatrix * clpScaledMatrix() const
Scaled ClpPackedMatrix.
int maximumInternalColumns_
Maximum number of columns (internal arrays) in model.
void setInteger(int index)
Set the index-th variable to be an integer variable.
void setWhatsChanged(int value)
virtual CoinPackedMatrix * getPackedMatrix() const =0
Return a complete CoinPackedMatrix.
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...
void stopPermanentArrays()
Stop using maximumRows_ and Columns_.
int numberColumns() const
double * swapRowScale(double *newScale)
double * infeasibilityRay(bool fullRay=false) const
Infeasibility/unbounded ray (NULL returned if none/wrong) Up to user to use delete [] on these arrays...
CoinMessages * messagesPointer()
Return pointer to messages.
bool isDualObjectiveLimitReached() const
Is the given dual objective limit reached?
CoinThreadRandom randomNumberGenerator_
Thread specific random number generator.
Set Dual objective limit.
void setRowName(int rowIndex, std::string &name)
Set name of row.
void setColSetBounds(const int *indexFirst, const int *indexLast, const double *boundList)
Set the bounds on a number of columns simultaneously
void newLanguage(CoinMessages::Language language)
Set language.
unsigned int whatsChanged_
Abstract base class for various sparse vectors.
void onStopped()
On stopped - sets secondary status.
void setRhsScale(double value)
const double * getObjCoefficients() const
const std::string & columnName(int iColumn) const
double getObjValue() const
int readMps(const char *filename, bool keepNames=false, bool ignoreErrors=false)
Read an mps file from the given filename.
void createEmptyMatrix()
Create empty ClpPackedMatrix.
#define COIN_CBC_USING_CLP
double maximumSeconds() const
Maximum time in seconds (from when set called)
void setColumnBounds(int elementIndex, double lower, double upper)
Set a single column lower and upper bound.
const char *const * rowNamesAsChar() const
Create row names as char **.
double * inverseRowScale_
Inverse row scale factors for matrix (end of rowScale_)
char * integerType_
Integer information.
The maximum amount the dual constraints can be violated and still be considered feasible.
void setDualObjectiveLimit(double value)
int getNumCols() const
Number of columns.
int logLevel() const
Get current log (detail) level.
void setNumberIterations(int numberIterationsNew)
std::vector< std::string > rowNames_
Row names.
void setObjective(ClpObjective *objective)
void setRowBounds(int elementIndex, double lower, double upper)
Set a single row lower and upper bound.
void popMessageHandler(CoinMessageHandler *oldHandler, bool oldDefault)
back to previous message handler
Just a marker, so that we can allocate a static sized array to store parameters.
const double * getRowUpper() const
void generateCpp(FILE *fp)
Create C++ lines to get to current state.
double * columnUpper() const
Column Upper.
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.
void getRowBound(int iRow, double &lower, double &upper) const
gets lower and upper bounds on rows
ClpPackedMatrix * scaledMatrix_
Scaled packed matrix.
double * dualRowSolution() const
Dual row solution.
void scaling(int mode=1)
Sets or unsets scaling, 0 -off, 1 equilibrium, 2 geometric, 3 auto, 4 auto-but-as-initialSolve-in-bab...
This is a first attempt at a message handler.
bool isInteger(int index) const
Return true if the index-th variable is an integer variable.
void setOptimizationDirection(double value)
int lengthNames_
length of names (0 means no names)
int problemStatus() const
unsigned int specialOptions() const
For advanced options 1 - Don't keep changing infeasibility weight 2 - Keep nonLinearCost round solves...
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...
const char *const * columnNamesAsChar() const
Create column names as char **.
void loadQuadraticObjective(const int numberColumns, const CoinBigIndex *start, const int *column, const double *element)
Load up quadratic objective.
void chgObjCoefficients(const double *objIn)
Change objective coefficients.
double * columnUpper_
Column Upper.
unsigned char * statusArray() const
Return address of status (i.e. basis) array (char[numberRows+numberColumns])
double * primalColumnSolution() const
Primal column solution.
CoinPackedMatrix baseMatrix_
Base packed matrix.
int scalingFlag() const
Gets scalingFlag.
void deleteQuadraticObjective()
Get rid of quadratic objective.
void setSolveType(int type)
bool defaultHandler() const
Return true if default handler.
void setRowLower(int elementIndex, double elementValue)
Set a single row lower bound Use -DBL_MAX for -infinity.
double * rowLower() const
Row lower.
void setSpecialOptions(unsigned int value)
void setMaximumIterations(int value)
double getSmallElementValue() const
Small element value - elements less than this set to zero, default is 1.0e-20.
double * ray_
Infeasible/unbounded ray.
double zeroSimplexTolerance_
CoinModel * createCoinModel() const
This creates a coinModel object.
const double * getRowPrice() const
double presolveTolerance() const
Presolve tolerance to use.
bool isAbandoned() const
Are there a numerical difficulties?
int numberColumns_
Number of columns.
Objective function constant.
int scalingFlag_
Scale flag, 0 none, 1 equilibrium, 2 geometric, 3, auto, 4 dynamic, 5 geometric on rows...
This is a tiny class where data can be saved round calls.
void setObjCoeff(int elementIndex, double elementValue)
Set an objective function coefficient.
CoinMessages messages() const
Return messages.
void times(double scalar, const double *x, double *y) const
Return y + A * x * scalar in y.
bool defaultHandler_
Flag to say if default handler (so delete)
double rhsScale() const
Scaling of rhs and bounds.
double * rowObjective() const
Row Objective.
void setNumberThreads(int value)
bool hitMaximumIterations() const
Returns true if hit maximum iterations (or time)
void setLengthNames(int value)
length of names (0 means no names0
double * rowScale_
Row scale factors for matrix.
void deleteRows(int number, const int *which)
Deletes rows.
void * getUserPointer() const
void chgRowLower(const double *rowLower)
Change row lower bounds.
void setNewRowCopy(ClpMatrixBase *newCopy)
Set new row matrix.
bool getStrParam(ClpStrParam key, std::string &value) const
int emptyProblem(int *infeasNumber=NULL, double *infeasSum=NULL, bool printMessage=true)
Solve a problem with no elements - return status and dual and primal infeasibilites.
int solveType() const
Solve type - 1 simplex, 2 simplex interface, 3 Interior.
virtual CoinBigIndex getNumElements() const =0
Number of entries in the packed matrix.
void setDualTolerance(double value)
void setSmallElementValue(double value)
void chgRowUpper(const double *rowUpper)
Change row upper bounds.
bool isProvenDualInfeasible() const
Is dual infeasiblity proven?
CoinMessages coinMessages() const
Return Coin messages.
ClpDataSave()
Default constructor.
void setObjectiveValue(double value)
unsigned int specialOptions_
void transposeTimes(double scalar, const double *x, double *y) const
Return y + x * scalar * A in y.
ClpModel & operator=(const ClpModel &rhs)
Assignment operator. This copies the data.
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...
Sparse Matrix Base Class.
ClpEventHandler * eventHandler_
Event handler.
double getObjSense() const
void setLanguage(CoinMessages::Language language)
void setProblemStatus(int problemStatusNew)
Set problem status.
const double * getColUpper() const
CoinBigIndex cleanMatrix(double threshold=1.0e-20)
Really clean up matrix (if ClpPackedMatrix).
bool inCbcBranchAndBound() const
void resize(int newNumberRows, int newNumberColumns)
Resizes rim part of model.
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).
CoinPackedMatrix baseRowCopy_
Base row copy.
void deleteRay()
just delete ray if exists
void setSeed(int seed)
Set seed.
void setPrimalTolerance(double value)
int numberThreads_
Number of threads (not very operational)
double rawObjectiveValue() const
Objective value - always minimize.
int numberRows() const
Number of rows.
Base class for Clp event handling.
void setColLower(int elementIndex, double elementValue)
Set a single column lower bound Use -DBL_MAX for -infinity.
void setRowObjective(const double *rowObjective)
This just loads up a row objective.
Language
Supported languages.
void modifyCoefficient(int row, int column, double newElement, bool keepZero=false)
Modify one element of a matrix.
CoinThreadRandom & mutableRandomNumberGenerator()
Thread specific random number generator.
bool getIntParam(ClpIntParam key, int &value) const
Just a marker, so that we can allocate a static sized array to store parameters.
double infeasibilityCost_
void copyNames(const std::vector< std::string > &rowNames, const std::vector< std::string > &columnNames)
Copies in names.
double smallElement_
Small element value.
bool isProvenPrimalInfeasible() const
Is primal infeasiblity proven?
void passInEventHandler(const ClpEventHandler *eventHandler)
Pass in Event handler (cloned and deleted at end)
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 copyinStatus(const unsigned char *statusArray)
Copy in status (basis) vector.
CoinMessageHandler * handler_
Message handler.
double * objective(const double *solution, double &offset, bool refresh=true) const
ClpMatrixBase * clpMatrix() const
Clp Matrix.
unsigned char * status_
Status (i.e.
int status() const
Status of problem: -1 - unknown e.g.
double objectiveScale() const
Scaling of objective.
double rhsScale_
Scaling of rhs and bounds.
CoinBigIndex getNumElements() const
Number of elements in matrix.
bool setDblParam(ClpDblParam key, double value)
Set an double parameter.
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...
const double * inverseColumnScale() const
int maximumIterations() const
Maximum number of iterations.
bool getDblParam(ClpDblParam key, double &value) const
void deleteRowsAndColumns(int numberRows, const int *whichRows, int numberColumns, const int *whichColumns)
Deletes rows AND columns (keeps old sizes)
void setRandomSeed(int value)
Set seed for thread specific random number generator.
double * rowActivity_
Row activities.
void deleteColumns(int number, const int *which)
Deletes columns.
double * columnActivity_
Column activities.
double * unboundedRay() const
ClpObjective * objective_
Objective.
double zeroFactorizationTolerance_
bool isProvenOptimal() const
Is optimality proven?
std::vector< std::string > columnNames_
Column names.
bool rayExists() const
just test if infeasibility or unbounded Ray exists
int problemStatus_
Status of problem.
ClpModel(bool emptyMessages=false)
Default constructor.
const double * internalRay() const
Access internal ray storage. Users should call infeasibilityRay() or unboundedRay() instead...
void addRows(int number, const double *rowLower, const double *rowUpper, const CoinBigIndex *rowStarts, const int *columns, const double *elements)
Add rows.
bool permanentArrays() const
If we are using maximumRows_ and Columns_.
double * rowLower_
Row lower.
void deleteNamesAsChar(const char *const *names, int number) const
Delete char * version of names.
void setColumnUpper(int elementIndex, double elementValue)
Set a single column upper bound Use DBL_MAX for infinity.
void setSecondaryStatus(int newstatus)
void chgColumnUpper(const double *columnUpper)
Change column upper bounds.
double * mutableInverseColumnScale() const
void setColBounds(int elementIndex, double lower, double upper)
Set a single column lower and upper bound.
void setRowScale(double *scale)
CoinMessageHandler * messageHandler() const
Return handler.
double * primalRowSolution() const
Primal row solution.
const double COIN_DBL_MAX
int numberIterations() const
Number of iterations.
unsigned char * statusCopy() const
Return copy of status (i.e.
void setColumnScale(double *scale)
std::string getRowName(int iRow) const
Return name or Rnnnnnnn.
const std::string & rowName(int iRow) const
const double * inverseRowScale() const
void dropNames()
Drops names - makes lengthnames 0 and names empty.
ClpPackedMatrix * swapScaledMatrix(ClpPackedMatrix *scaledMatrix)
Swaps pointer to scaled ClpPackedMatrix.
double objectiveValue_
Objective value.
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
const double * getRowLower() const
void returnModel(ClpModel &otherModel)
Return model - nulls all arrays so can be deleted safely also updates any scalars.
Tolerance to use in presolve.
void setTrustedUserPointer(ClpTrustedData *pointer)
Trusted user pointer.
CoinPackedMatrix * matrix() const
Matrix (if not ClpPackedmatrix be careful about memory leak.
int readGMPL(const char *filename, const char *dataName, bool keepNames=false)
Read GMPL files from the given filenames.
void borrowModel(ClpModel &otherModel)
Borrow model.
int maximumColumns_
Maximum number of columns in model.
Just a marker, so that we can allocate a static sized array to store parameters.
virtual double * gradient(const ClpSimplex *model, const double *solution, double &offset, bool refresh, int includeLinear=2)=0
Returns gradient.
In many cases it is natural to build a model by adding one row at a time.
void * userPointer_
User pointer for whatever reason.
void passInMessageHandler(CoinMessageHandler *handler)
Pass in Message handler (not deleted at end)
void setUserPointer(void *pointer)
User pointer for whatever reason.
void chgColumnLower(const double *columnLower)
Change column lower bounds.
double * columnLower_
Column Lower.
int getIterationCount() const
void unscale()
If we constructed a "really" scaled model then this reverses the operation.
const std::vector< std::string > * columnNames() const
Column names.
Class to hold and manipulate an array of massaged messages.
void setLogLevel(int value)
Set current log (detail) level.
virtual void modifyCoefficient(int row, int column, double newElement, bool keepZero=false)
Modify one element of packed matrix.
ClpTrustedData * trustedUserPointer_
Trusted user pointer e.g. for heuristics.
int intParam_[ClpLastIntParam]
Array of integer parameters.
Class for thread specific random numbers.
double * savedRowScale_
Saved row scale factors for matrix.
void setColumnLower(int elementIndex, double elementValue)
Set a single column lower bound Use -DBL_MAX for -infinity.
unsigned int specialOptions_
For advanced options See get and set for meaning.
const double * getRowObjCoefficients() const