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