20 #include "CoinMessageHandler.hpp" 21 #include "CoinHelperFunctions.hpp" 22 #include "CoinTypes.hpp" 23 #include "CoinFinite.hpp" 47 ClpModel (
bool emptyMessages =
false );
64 bool dropNames =
true,
bool dropIntegers =
true);
83 const double* collb,
const double* colub,
85 const double* rowlb,
const double* rowub,
88 const double* collb,
const double* colub,
90 const double* rowlb,
const double* rowub,
95 void loadProblem (
const int numcols,
const int numrows,
96 const CoinBigIndex* start,
const int* index,
98 const double* collb,
const double* colub,
100 const double* rowlb,
const double* rowub,
107 int loadProblem ( CoinModel & modelObject,
bool tryPlusMinusOne =
false);
109 void loadProblem (
const int numcols,
const int numrows,
110 const CoinBigIndex* start,
const int* index,
111 const double* value,
const int * length,
112 const double* collb,
const double* colub,
114 const double* rowlb,
const double* rowub,
118 const CoinBigIndex * start,
119 const int * column,
const double * element);
126 int readMps(
const char *filename,
127 bool keepNames =
false,
128 bool ignoreErrors =
false);
130 int readGMPL(
const char *filename,
const char * dataName,
131 bool keepNames =
false);
143 void resize (
int newNumberRows,
int newNumberColumns);
145 void deleteRows(
int number,
const int * which);
147 void addRow(
int numberInRow,
const int * columns,
148 const double * elements,
double rowLower = -COIN_DBL_MAX,
153 const CoinBigIndex * rowStarts,
const int * columns,
154 const double * elements);
156 void addRows(
int number,
const double * rowLower,
157 const double * rowUpper,
158 const CoinBigIndex * rowStarts,
const int * rowLengths,
160 const double * elements);
161 #ifndef CLP_NO_VECTOR 162 void addRows(
int number,
const double * rowLower,
163 const double * rowUpper,
164 const CoinPackedVectorBase *
const * rows);
171 int addRows(
const CoinBuild & buildObject,
bool tryPlusMinusOne =
false,
172 bool checkDuplicates =
true);
181 int addRows(CoinModel & modelObject,
bool tryPlusMinusOne =
false,
182 bool checkDuplicates =
true);
188 int numberColumns,
const int * whichColumns);
192 const double * elements,
200 const CoinBigIndex * columnStarts,
const int * rows,
201 const double * elements);
202 void addColumns(
int number,
const double * columnLower,
203 const double * columnUpper,
204 const double * objective,
205 const CoinBigIndex * columnStarts,
const int * columnLengths,
207 const double * elements);
208 #ifndef CLP_NO_VECTOR 209 void addColumns(
int number,
const double * columnLower,
210 const double * columnUpper,
211 const double * objective,
212 const CoinPackedVectorBase *
const * columns);
219 int addColumns(
const CoinBuild & buildObject,
bool tryPlusMinusOne =
false,
220 bool checkDuplicates =
true);
228 int addColumns(CoinModel & modelObject,
bool tryPlusMinusOne =
false,
229 bool checkDuplicates =
true);
232 bool keepZero =
false) {
272 void copyRowNames(
const std::vector<std::string> & rowNames,
int first,
int last);
274 void copyColumnNames(
const std::vector<std::string> & columnNames,
int first,
int last);
276 void copyRowNames(
const char *
const * rowNames,
int first,
int last);
278 void copyColumnNames(
const char *
const * columnNames,
int first,
int last);
280 void setRowName(
int rowIndex, std::string & name) ;
291 int findNetwork(
char * rotate,
double fractionNeeded = 0.75);
309 int formatType = 0,
int numberAcross = 2,
310 double objSense = 0.0)
const ;
515 inline void setObjCoeff(
int elementIndex,
double elementValue ) {
529 double lower,
double upper );
540 const int* indexLast,
541 const double* boundList);
545 inline void setColLower(
int elementIndex,
double elementValue ) {
550 inline void setColUpper(
int elementIndex,
double elementValue ) {
556 double lower,
double upper ) {
567 const int* indexLast,
568 const double* boundList) {
574 void setRowLower(
int elementIndex,
double elementValue );
578 void setRowUpper(
int elementIndex,
double elementValue ) ;
582 double lower,
double upper ) ;
591 const int* indexLast,
592 const double* boundList);
595 inline const double *
rowScale()
const {
659 inline double *
objective(
const double * solution,
double & offset,
bool refresh =
true)
const {
697 inline CoinPackedMatrix *
matrix()
const {
698 if (
matrix_ == NULL )
return NULL;
750 bool deleteCurrent =
false) {
772 inline double *
ray()
const 912 inline const std::vector<std::string> *
rowNames()
const {
915 inline const std::string&
rowName(
int iRow)
const {
940 int emptyProblem(
int * infeasNumber = NULL,
double * infeasSum = NULL,
bool printMessage =
true);
952 void times(
double scalar,
953 const double * x,
double * y)
const;
958 const double * x,
double * y)
const ;
1058 #define COIN_CBC_USING_CLP 0x01000000 1074 void getRowBound(
int iRow,
double& lower,
double& upper)
const;
1077 const double* collb,
const double* colub,
1079 const double* rowlb,
const double* rowub,
1080 const double * rowObjective = NULL);
1202 #define ROW_COLUMN_COUNTS_SAME 1 1203 #define MATRIX_SAME 2 1204 #define MATRIX_JUST_ROWS_ADDED 4 1205 #define MATRIX_JUST_COLUMNS_ADDED 8 1206 #define ROW_LOWER_SAME 16 1207 #define ROW_UPPER_SAME 32 1208 #define OBJECTIVE_SAME 64 1209 #define COLUMN_LOWER_SAME 128 1210 #define COLUMN_UPPER_SAME 256 1211 #define BASIS_SAME 512 1212 #define ALL_SAME 65339 1213 #define ALL_SAME_EXCEPT_COLUMN_BOUNDS 65337 CoinThreadRandom * randomNumberGenerator()
Thread specific random number generator.
double optimizationDirection_
Direction of optimization (1 - minimize, -1 - maximize, 0 - ignore.
double primalTolerance() const
Primal tolerance to use.
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...
bool getDblParam(ClpDblParam key, double &value) const
void startPermanentArrays()
Start using maximumRows_ and Columns_.
const std::string & columnName(int iColumn) const
unsigned char * statusArray() const
Return address of status (i.e. basis) array (char[numberRows+numberColumns])
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)
std::vector< std::string > rowNames_
Row names.
double * primalColumnSolution() const
Primal column solution.
double objectiveScale() const
Scaling of objective.
bool isInteger(int index) const
Return true if the index-th variable is an integer variable.
double * rowUpper_
Row upper.
double dblParam_[ClpLastDblParam]
Array of double parameters.
int secondaryStatus_
Secondary status of problem.
CoinMessages coinMessages() const
Return Coin messages.
unsigned char * statusCopy() const
Return copy of status (i.e.
void copyColumnNames(const std::vector< std::string > &columnNames, int first, int last)
Copies in Column names - modifies names first .. last-1.
double * columnScale_
Column scale factors.
bool isProvenPrimalInfeasible() const
Is primal infeasiblity proven?
void setColumnName(int colIndex, std::string &name)
Set name of col.
void setObjectivePointer(ClpObjective *newobjective)
void setContinuous(int index)
Set the index-th variable to be a continuous variable.
double * ray() const
For advanced users - no need to delete - sign not changed.
void getRowBound(int iRow, double &lower, double &upper) const
gets lower and upper bounds on rows
ClpMatrixBase * rowCopy_
Row copy if wanted.
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.
const std::vector< std::string > * columnNames() const
Column names.
std::string strParam_[ClpLastStrParam]
Array of string parameters.
bool isIterationLimitReached() const
Iteration limit reached?
ClpIntParam
This is where to put any useful stuff.
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.
double * mutableColumnScale() const
Abstract base class for Clp Matrices.
int numberColumns() const
const double * getColUpper() const
int maximumRows_
Maximum number of rows in model.
void setMaximumSeconds(double value)
CoinMessages messages_
Messages.
double * objective() const
Objective.
void setObjectiveCoefficient(int elementIndex, double elementValue)
Set an objective function coefficient.
bool setStrParam(ClpStrParam key, const std::string &value)
Set an string parameter.
const char *const * columnNamesAsChar() const
Create column names as char **.
const double * inverseRowScale() const
void addColumns(int number, const double *columnLower, const double *columnUpper, const double *objective, const CoinBigIndex *columnStarts, const int *rows, const double *elements)
Add columns.
bool rayExists() const
just test if infeasibility or unbounded Ray exists
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.
double * reducedCost_
Reduced costs.
int findNetwork(char *rotate, double fractionNeeded=0.75)
Find a network subset.
double dualTolerance() const
Dual tolerance to use.
bool getStrParam(ClpStrParam key, std::string &value) const
For a structure to be used by trusted code.
ClpMatrixBase * matrix_
Packed matrix.
CoinMessages coinMessages_
Coin messages.
bool isDualObjectiveLimitReached() const
Is the given dual objective limit reached?
CoinMessages * coinMessagesPointer()
Return pointer to Coin messages.
int solveType() const
Solve type - 1 simplex, 2 simplex interface, 3 Interior.
void setObjectiveScale(double value)
ClpMatrixBase * rowCopy() const
Row Matrix.
double * rowLower() const
Row lower.
const char *const * rowNamesAsChar() const
Create row names as char **.
double * columnLower() const
Column Lower.
bool hitMaximumIterations() const
Returns true if hit maximum iterations (or time)
int numberRows_
Number of rows.
int solveType_
Solve type - 1 simplex, 2 simplex interface, 3 Interior.
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.
double optimizationDirection() const
Direction of optimization (1 - minimize, -1 - maximize, 0 - ignore.
const double * getColSolution() const
double * columnUpper() const
Column Upper.
void setRowSetBounds(const int *indexFirst, const int *indexLast, const double *boundList)
Set the bounds on a number of rows simultaneously
void addRow(int numberInRow, const int *columns, const double *elements, double rowLower=-COIN_DBL_MAX, double rowUpper=COIN_DBL_MAX)
Add one row.
CoinPackedMatrix * matrix() const
Matrix (if not ClpPackedmatrix be careful about memory leak.
double * rowObjective_
Row Objective (? sign) - may be NULL.
ClpObjective * objectiveAsObject() const
Objective methods.
bool permanentArrays() const
If we are using maximumRows_ and Columns_.
ClpEventHandler * eventHandler() const
Event handler.
ClpPackedMatrix * clpScaledMatrix() const
Scaled ClpPackedMatrix.
void setColSolution(const double *input)
Objective Abstract Base Class.
void gutsOfScaling()
Does much of scaling.
int getIterationCount() const
int maximumInternalRows_
Maximum number of rows (internal arrays) in model.
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)
double * unboundedRay() const
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_.
double * swapRowScale(double *newScale)
bool inCbcBranchAndBound() const
CoinMessages * messagesPointer()
Return pointer to messages.
CoinThreadRandom randomNumberGenerator_
Thread specific random number generator.
Set Dual objective limit.
int secondaryStatus() const
Secondary status of problem - may get extended 0 - none 1 - primal infeasible because dual limit reac...
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.
const double * getRowObjCoefficients() const
const std::string & problemName() const
unsigned int whatsChanged_
double maximumSeconds() const
Maximum time in seconds (from when set called)
void onStopped()
On stopped - sets secondary status.
void setRhsScale(double value)
int readMps(const char *filename, bool keepNames=false, bool ignoreErrors=false)
Read an mps file from the given filename.
double rawObjectiveValue() const
Objective value - always minimize.
void createEmptyMatrix()
Create empty ClpPackedMatrix.
#define COIN_CBC_USING_CLP
void setColumnBounds(int elementIndex, double lower, double upper)
Set a single column lower and upper bound.
double rhsScale() const
Scaling of rhs and bounds.
double * inverseRowScale_
Inverse row scale factors for matrix (end of rowScale_)
CoinMessageHandler * messageHandler() const
Return handler.
char * integerType_
Integer information.
The maximum amount the dual constraints can be violated and still be considered feasible.
void setDualObjectiveLimit(double value)
int scalingFlag() const
Gets scalingFlag.
double getSmallElementValue() const
Small element value - elements less than this set to zero, default is 1.0e-20.
void setNumberIterations(int numberIterationsNew)
char * integerInformation() const
Integer information.
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.
void generateCpp(FILE *fp)
Create C++ lines to get to current state.
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.
ClpPackedMatrix * scaledMatrix_
Scaled packed matrix.
double * mutableRowScale() const
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 * getReducedCost() const
void setOptimizationDirection(double value)
int lengthNames_
length of names (0 means no names)
ClpMatrixBase * clpMatrix() const
Clp Matrix.
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...
bool getIntParam(ClpIntParam key, int &value) const
void loadQuadraticObjective(const int numberColumns, const CoinBigIndex *start, const int *column, const double *element)
Load up quadratic objective.
const double * getRowLower() const
void chgObjCoefficients(const double *objIn)
Change objective coefficients.
const double * rowScale() const
Scaling.
double * columnUpper_
Column Upper.
CoinPackedMatrix baseMatrix_
Base packed matrix.
void times(double scalar, const double *x, double *y) const
Return y + A * x * scalar in y.
double * mutableInverseColumnScale() const
void deleteQuadraticObjective()
Get rid of quadratic objective.
void setSolveType(int type)
CoinMessages messages() const
Return messages.
void setRowLower(int elementIndex, double elementValue)
Set a single row lower bound Use -DBL_MAX for -infinity.
void setSpecialOptions(unsigned int value)
void setMaximumIterations(int value)
bool statusExists() const
See if status (i.e. basis) array exists (partly for OsiClp)
int lengthNames() const
length of names (0 means no names0
double * ray_
Infeasible/unbounded ray.
double zeroSimplexTolerance_
double * dualColumnSolution() const
Reduced costs.
double objectiveOffset() const
Objective offset.
void transposeTimes(double scalar, const double *x, double *y) const
Return y + x * scalar * A in y.
int numberColumns_
Number of columns.
Objective function constant.
void * getUserPointer() const
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.
double * dualRowSolution() const
Dual row solution.
const double * getRowActivity() const
double objectiveValue() const
Objective value.
std::string getColumnName(int iColumn) const
Return name or Cnnnnnnn.
ClpTrustedData * getTrustedUserPointer() const
bool defaultHandler_
Flag to say if default handler (so delete)
double getObjValue() const
void setNumberThreads(int value)
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 chgRowLower(const double *rowLower)
Change row lower bounds.
bool isAbandoned() const
Are there a numerical difficulties?
void setNewRowCopy(ClpMatrixBase *newCopy)
Set new row matrix.
const std::string & rowName(int iRow) 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.
virtual CoinBigIndex getNumElements() const =0
Number of entries in the packed matrix.
void setDualTolerance(double value)
const double * getColLower() const
void setSmallElementValue(double value)
void chgRowUpper(const double *rowUpper)
Change row upper bounds.
void deleteNamesAsChar(const char *const *names, int number) const
Delete char * version of names.
double getObjSense() const
const double * internalRay() const
Access internal ray storage. Users should call infeasibilityRay() or unboundedRay() instead...
double * rowUpper() const
Row upper.
int cleanMatrix(double threshold=1.0e-20)
Really clean up matrix (if ClpPackedMatrix).
void setObjectiveValue(double value)
unsigned int specialOptions_
double dualObjectiveLimit() const
Dual objective limit.
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...
int whatsChanged() const
What has changed in model (only for masochistic users)
ClpEventHandler * eventHandler_
Event handler.
void setLanguage(CoinMessages::Language language)
bool defaultHandler() const
Return true if default handler.
void setProblemStatus(int problemStatusNew)
Set problem status.
bool isProvenOptimal() const
Is optimality proven?
const double * getRowPrice() 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).
std::vector< std::string > columnNames_
Column names.
CoinPackedMatrix baseRowCopy_
Base row copy.
void deleteRay()
just delete ray if exists
void setPrimalTolerance(double value)
int numberThreads_
Number of threads (not very operational)
Base class for Clp event handling.
double * mutableInverseRowScale() const
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.
void modifyCoefficient(int row, int column, double newElement, bool keepZero=false)
Modify one element of a matrix.
CoinThreadRandom & mutableRandomNumberGenerator()
Thread specific random number generator.
Just a marker, so that we can allocate a static sized array to store parameters.
unsigned int specialOptions() const
For advanced options 1 - Don't keep changing infeasibility weight 2 - Keep nonLinearCost round solves...
double infeasibilityCost_
void copyNames(const std::vector< std::string > &rowNames, const std::vector< std::string > &columnNames)
Copies in names.
double smallElement_
Small element value.
void passInEventHandler(const ClpEventHandler *eventHandler)
Pass in Event handler (cloned and deleted at end)
int numberIterations() const
Number of iterations.
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...
int numberRows() const
Number of rows.
void copyinStatus(const unsigned char *statusArray)
Copy in status (basis) vector.
CoinMessageHandler * handler_
Message handler.
unsigned char * status_
Status (i.e.
const double * getObjCoefficients() const
double rhsScale_
Scaling of rhs and bounds.
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...
int problemStatus() 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 * primalRowSolution() const
Primal row solution.
const double * inverseColumnScale() const
double * columnActivity_
Column activities.
ClpObjective * objective_
Objective.
double zeroFactorizationTolerance_
int problemStatus_
Status of problem.
ClpModel(bool emptyMessages=false)
Default constructor.
void addRows(int number, const double *rowLower, const double *rowUpper, const CoinBigIndex *rowStarts, const int *columns, const double *elements)
Add rows.
double presolveTolerance() const
Presolve tolerance to use.
double * rowLower_
Row lower.
double * rowObjective() const
Row Objective.
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.
void setColBounds(int elementIndex, double lower, double upper)
Set a single column lower and upper bound.
double primalObjectiveLimit() const
Primal objective limit.
int numberThreads() const
Number of threads (not really being used)
const double * columnScale() const
void setRowScale(double *scale)
void setColumnScale(double *scale)
int status() const
Status of problem: -1 - unknown e.g.
double * objective(const double *solution, double &offset, bool refresh=true) const
void dropNames()
Drops names - makes lengthnames 0 and names empty.
bool isProvenDualInfeasible() const
Is dual infeasiblity proven?
int getNumCols() const
Number of columns.
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
void returnModel(ClpModel &otherModel)
Return model - nulls all arrays so can be deleted safely also updates any scalars.
int maximumIterations() const
Maximum number of iterations.
Tolerance to use in presolve.
void setTrustedUserPointer(ClpTrustedData *pointer)
Trusted user pointer.
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.
std::string getRowName(int iRow) const
Return name or Rnnnnnnn.
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.
void * userPointer_
User pointer for whatever reason.
void passInMessageHandler(CoinMessageHandler *handler)
Pass in Message handler (not deleted at end)
const std::vector< std::string > * rowNames() const
Row names.
void setUserPointer(void *pointer)
User pointer for whatever reason.
void chgColumnLower(const double *columnLower)
Change column lower bounds.
double * columnLower_
Column Lower.
void unscale()
If we constructed a "really" scaled model then this reverses the operation.
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.
double * infeasibilityRay(bool fullRay=false) const
Infeasibility/unbounded ray (NULL returned if none/wrong) Up to user to use delete [] on these arrays...
bool isPrimalObjectiveLimitReached() const
Is the given primal objective limit reached?
int getNumElements() const
Number of elements in matrix.
const double * getRowUpper() const
double * savedRowScale_
Saved row scale factors for matrix.
CoinModel * createCoinModel() const
This creates a coinModel object.
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.