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