Cbc  2.10.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | List of all members
ClpModel Class Reference

#include <ClpModel.hpp>

+ Inheritance diagram for ClpModel:
+ Collaboration diagram for ClpModel:

Public Member Functions

const double * rowScale () const
 Scaling. More...
 
const double * columnScale () const
 
const double * inverseRowScale () const
 
const double * inverseColumnScale () const
 
double * mutableRowScale () const
 
double * mutableColumnScale () const
 
double * mutableInverseRowScale () const
 
double * mutableInverseColumnScale () const
 
double * swapRowScale (double *newScale)
 
void setRowScale (double *scale)
 
void setColumnScale (double *scale)
 
double objectiveScale () const
 Scaling of objective. More...
 
void setObjectiveScale (double value)
 
double rhsScale () const
 Scaling of rhs and bounds. More...
 
void setRhsScale (double value)
 
void scaling (int mode=1)
 Sets or unsets scaling, 0 -off, 1 equilibrium, 2 geometric, 3 auto, 4 auto-but-as-initialSolve-in-bab. More...
 
void unscale ()
 If we constructed a "really" scaled model then this reverses the operation. More...
 
int scalingFlag () const
 Gets scalingFlag. More...
 
double * objective () const
 Objective. More...
 
double * objective (const double *solution, double &offset, bool refresh=true) const
 
const double * getObjCoefficients () const
 
double * rowObjective () const
 Row Objective. More...
 
const double * getRowObjCoefficients () const
 
double * columnLower () const
 Column Lower. More...
 
const double * getColLower () const
 
double * columnUpper () const
 Column Upper. More...
 
const double * getColUpper () const
 
CoinPackedMatrixmatrix () const
 Matrix (if not ClpPackedmatrix be careful about memory leak. More...
 
CoinBigIndex getNumElements () const
 Number of elements in matrix. More...
 
double getSmallElementValue () const
 Small element value - elements less than this set to zero, default is 1.0e-20. More...
 
void setSmallElementValue (double value)
 
ClpMatrixBaserowCopy () const
 Row Matrix. More...
 
void setNewRowCopy (ClpMatrixBase *newCopy)
 Set new row matrix. More...
 
ClpMatrixBaseclpMatrix () const
 Clp Matrix. More...
 
ClpPackedMatrixclpScaledMatrix () const
 Scaled ClpPackedMatrix. More...
 
void setClpScaledMatrix (ClpPackedMatrix *scaledMatrix)
 Sets pointer to scaled ClpPackedMatrix. More...
 
ClpPackedMatrixswapScaledMatrix (ClpPackedMatrix *scaledMatrix)
 Swaps pointer to scaled ClpPackedMatrix. More...
 
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 current. More...
 
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 current. More...
 
double objectiveValue () const
 Objective value. More...
 
void setObjectiveValue (double value)
 
double getObjValue () const
 
char * integerInformation () const
 Integer information. More...
 
double * infeasibilityRay (bool fullRay=false) const
 Infeasibility/unbounded ray (NULL returned if none/wrong) Up to user to use delete [] on these arrays. More...
 
double * unboundedRay () const
 
double * ray () const
 For advanced users - no need to delete - sign not changed. More...
 
bool rayExists () const
 just test if infeasibility or unbounded Ray exists More...
 
void deleteRay ()
 just delete ray if exists More...
 
const double * internalRay () const
 Access internal ray storage. Users should call infeasibilityRay() or unboundedRay() instead. More...
 
bool statusExists () const
 See if status (i.e. basis) array exists (partly for OsiClp) More...
 
unsigned char * statusArray () const
 Return address of status (i.e. basis) array (char[numberRows+numberColumns]) More...
 
unsigned char * statusCopy () const
 Return copy of status (i.e. More...
 
void copyinStatus (const unsigned char *statusArray)
 Copy in status (basis) vector. More...
 
void setUserPointer (void *pointer)
 User pointer for whatever reason. More...
 
void * getUserPointer () const
 
void setTrustedUserPointer (ClpTrustedData *pointer)
 Trusted user pointer. More...
 
ClpTrustedDatagetTrustedUserPointer () const
 
int whatsChanged () const
 What has changed in model (only for masochistic users) More...
 
void setWhatsChanged (int value)
 
int numberThreads () const
 Number of threads (not really being used) More...
 
void setNumberThreads (int value)
 
Constructors and destructor

Note - copy methods copy ALL data so can chew up memory until other copy is freed

 ClpModel (bool emptyMessages=false)
 Default constructor. More...
 
 ClpModel (const ClpModel &rhs, int scalingMode=-1)
 Copy constructor. More...
 
ClpModeloperator= (const ClpModel &rhs)
 Assignment operator. This copies the data. More...
 
 ClpModel (const ClpModel *wholeModel, int numberRows, const int *whichRows, int numberColumns, const int *whichColumns, bool dropNames=true, bool dropIntegers=true)
 Subproblem constructor. More...
 
 ~ClpModel ()
 Destructor. More...
 
gets and sets
int numberRows () const
 Number of rows. More...
 
int getNumRows () const
 
int getNumCols () const
 Number of columns. More...
 
int numberColumns () const
 
double primalTolerance () const
 Primal tolerance to use. More...
 
void setPrimalTolerance (double value)
 
double dualTolerance () const
 Dual tolerance to use. More...
 
void setDualTolerance (double value)
 
double primalObjectiveLimit () const
 Primal objective limit. More...
 
void setPrimalObjectiveLimit (double value)
 
double dualObjectiveLimit () const
 Dual objective limit. More...
 
void setDualObjectiveLimit (double value)
 
double objectiveOffset () const
 Objective offset. More...
 
void setObjectiveOffset (double value)
 
double presolveTolerance () const
 Presolve tolerance to use. More...
 
const std::string & problemName () const
 
int numberIterations () const
 Number of iterations. More...
 
int getIterationCount () const
 
void setNumberIterations (int numberIterationsNew)
 
int solveType () const
 Solve type - 1 simplex, 2 simplex interface, 3 Interior. More...
 
void setSolveType (int type)
 
int maximumIterations () const
 Maximum number of iterations. More...
 
void setMaximumIterations (int value)
 
double maximumSeconds () const
 Maximum time in seconds (from when set called) More...
 
void setMaximumSeconds (double value)
 
void setMaximumWallSeconds (double value)
 
bool hitMaximumIterations () const
 Returns true if hit maximum iterations (or time) More...
 
int status () const
 Status of problem: -1 - unknown e.g. More...
 
int problemStatus () const
 
void setProblemStatus (int problemStatusNew)
 Set problem status. More...
 
int secondaryStatus () const
 Secondary status of problem - may get extended 0 - none 1 - primal infeasible because dual limit reached OR (probably primal infeasible but can't prove it - main status was 4) 2 - scaled problem optimal - unscaled problem has primal infeasibilities 3 - scaled problem optimal - unscaled problem has dual infeasibilities 4 - scaled problem optimal - unscaled problem has primal and dual infeasibilities 5 - giving up in primal with flagged variables 6 - failed due to empty problem check 7 - postSolve says not optimal 8 - failed due to bad element check 9 - status was 3 and stopped on time 10 - status was 3 but stopped as primal feasible 100 up - translation of enum from ClpEventHandler. More...
 
void setSecondaryStatus (int newstatus)
 
bool isAbandoned () const
 Are there a numerical difficulties? More...
 
bool isProvenOptimal () const
 Is optimality proven? More...
 
bool isProvenPrimalInfeasible () const
 Is primal infeasiblity proven? More...
 
bool isProvenDualInfeasible () const
 Is dual infeasiblity proven? More...
 
bool isPrimalObjectiveLimitReached () const
 Is the given primal objective limit reached? More...
 
bool isDualObjectiveLimitReached () const
 Is the given dual objective limit reached? More...
 
bool isIterationLimitReached () const
 Iteration limit reached? More...
 
double optimizationDirection () const
 Direction of optimization (1 - minimize, -1 - maximize, 0 - ignore. More...
 
double getObjSense () const
 
void setOptimizationDirection (double value)
 
double * primalRowSolution () const
 Primal row solution. More...
 
const double * getRowActivity () const
 
double * primalColumnSolution () const
 Primal column solution. More...
 
const double * getColSolution () const
 
void setColSolution (const double *input)
 
double * dualRowSolution () const
 Dual row solution. More...
 
const double * getRowPrice () const
 
double * dualColumnSolution () const
 Reduced costs. More...
 
const double * getReducedCost () const
 
double * rowLower () const
 Row lower. More...
 
const double * getRowLower () const
 
double * rowUpper () const
 Row upper. More...
 
const double * getRowUpper () const
 
Changing bounds on variables and constraints
void setObjectiveCoefficient (int elementIndex, double elementValue)
 Set an objective function coefficient. More...
 
void setObjCoeff (int elementIndex, double elementValue)
 Set an objective function coefficient. More...
 
void setColumnLower (int elementIndex, double elementValue)
 Set a single column lower bound
Use -DBL_MAX for -infinity. More...
 
void setColumnUpper (int elementIndex, double elementValue)
 Set a single column upper bound
Use DBL_MAX for infinity. More...
 
void setColumnBounds (int elementIndex, double lower, double upper)
 Set a single column lower and upper bound. More...
 
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 setColLower() and setColUpper() over and over again. More...
 
void setColLower (int elementIndex, double elementValue)
 Set a single column lower bound
Use -DBL_MAX for -infinity. More...
 
void setColUpper (int elementIndex, double elementValue)
 Set a single column upper bound
Use DBL_MAX for infinity. More...
 
void setColBounds (int elementIndex, double lower, double upper)
 Set a single column lower and upper bound. More...
 
void setColSetBounds (const int *indexFirst, const int *indexLast, const double *boundList)
 Set the bounds on a number of columns simultaneously
More...
 
void setRowLower (int elementIndex, double elementValue)
 Set a single row lower bound
Use -DBL_MAX for -infinity. More...
 
void setRowUpper (int elementIndex, double elementValue)
 Set a single row upper bound
Use DBL_MAX for infinity. More...
 
void setRowBounds (int elementIndex, double lower, double upper)
 Set a single row lower and upper bound. More...
 
void setRowSetBounds (const int *indexFirst, const int *indexLast, const double *boundList)
 Set the bounds on a number of rows simultaneously
More...
 
Message handling
void passInMessageHandler (CoinMessageHandler *handler)
 Pass in Message handler (not deleted at end) More...
 
CoinMessageHandlerpushMessageHandler (CoinMessageHandler *handler, bool &oldDefault)
 Pass in Message handler (not deleted at end) and return current. More...
 
void popMessageHandler (CoinMessageHandler *oldHandler, bool oldDefault)
 back to previous message handler More...
 
void newLanguage (CoinMessages::Language language)
 Set language. More...
 
void setLanguage (CoinMessages::Language language)
 
void setDefaultMessageHandler ()
 Overrides message handler with a default one. More...
 
CoinMessageHandlermessageHandler () const
 Return handler. More...
 
CoinMessages messages () const
 Return messages. More...
 
CoinMessagesmessagesPointer ()
 Return pointer to messages. More...
 
CoinMessages coinMessages () const
 Return Coin messages. More...
 
CoinMessagescoinMessagesPointer ()
 Return pointer to Coin messages. More...
 
void setLogLevel (int value)
 Amount of print out: 0 - none 1 - just final 2 - just factorizations 3 - as 2 plus a bit more 4 - verbose above that 8,16,32 etc just for selective debug. More...
 
int logLevel () const
 
bool defaultHandler () const
 Return true if default handler. More...
 
void passInEventHandler (const ClpEventHandler *eventHandler)
 Pass in Event handler (cloned and deleted at end) More...
 
ClpEventHandlereventHandler () const
 Event handler. More...
 
CoinThreadRandomrandomNumberGenerator ()
 Thread specific random number generator. More...
 
CoinThreadRandommutableRandomNumberGenerator ()
 Thread specific random number generator. More...
 
void setRandomSeed (int value)
 Set seed for thread specific random number generator. More...
 
int lengthNames () const
 length of names (0 means no names0 More...
 
void setLengthNames (int value)
 length of names (0 means no names0 More...
 
const std::vector< std::string > * rowNames () const
 Row names. More...
 
const std::string & rowName (int iRow) const
 
std::string getRowName (int iRow) const
 Return name or Rnnnnnnn. More...
 
const std::vector< std::string > * columnNames () const
 Column names. More...
 
const std::string & columnName (int iColumn) const
 
std::string getColumnName (int iColumn) const
 Return name or Cnnnnnnn. More...
 
ClpObjectiveobjectiveAsObject () const
 Objective methods. More...
 
void setObjective (ClpObjective *objective)
 
void setObjectivePointer (ClpObjective *newobjective)
 
int emptyProblem (int *infeasNumber=NULL, double *infeasSum=NULL, bool printMessage=true)
 Solve a problem with no elements - return status and dual and primal infeasibilites. More...
 
Matrix times vector methods

They can be faster if scalar is +- 1 These are covers so user need not worry about scaling Also for simplex I am not using basic/non-basic split

void times (double scalar, const double *x, double *y) const
 Return y + A * x * scalar in y. More...
 
void transposeTimes (double scalar, const double *x, double *y) const
 Return y + x * scalar * A in y. More...
 
Parameter set/get methods

The set methods return true if the parameter was set to the given value, false otherwise.

There can be various reasons for failure: the given parameter is not applicable for the solver (e.g., refactorization frequency for the volume algorithm), the parameter is not yet implemented for the solver or simply the value of the parameter is out of the range the solver accepts. If a parameter setting call returns false check the details of your solver.

The get methods return true if the given parameter is applicable for the solver and is implemented. In this case the value of the parameter is returned in the second argument. Otherwise they return false.

once it has been decided where solver sits this may be redone

bool setIntParam (ClpIntParam key, int value)
 Set an integer parameter. More...
 
bool setDblParam (ClpDblParam key, double value)
 Set an double parameter. More...
 
bool setStrParam (ClpStrParam key, const std::string &value)
 Set an string parameter. More...
 
bool getIntParam (ClpIntParam key, int &value) const
 
bool getDblParam (ClpDblParam key, double &value) const
 
bool getStrParam (ClpStrParam key, std::string &value) const
 
void generateCpp (FILE *fp)
 Create C++ lines to get to current state. More...
 
unsigned int specialOptions () const
 For advanced options 1 - Don't keep changing infeasibility weight 2 - Keep nonLinearCost round solves 4 - Force outgoing variables to exact bound (primal) 8 - Safe to use dense initial factorization 16 -Just use basic variables for operation if column generation 32 -Create ray even in BAB 64 -Treat problem as feasible until last minute (i.e. More...
 
void setSpecialOptions (unsigned int value)
 
bool inCbcBranchAndBound () const
 

Protected Member Functions

private or protected methods
void gutsOfDelete (int type)
 Does most of deletion (0 = all, 1 = most) More...
 
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. More...
 
void getRowBound (int iRow, double &lower, double &upper) const
 gets lower and upper bounds on rows More...
 
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 More...
 
void gutsOfScaling ()
 Does much of scaling. More...
 
double rawObjectiveValue () const
 Objective value - always minimize. More...
 
bool permanentArrays () const
 If we are using maximumRows_ and Columns_. More...
 
void startPermanentArrays ()
 Start using maximumRows_ and Columns_. More...
 
void stopPermanentArrays ()
 Stop using maximumRows_ and Columns_. More...
 
const char *const * rowNamesAsChar () const
 Create row names as char **. More...
 
const char *const * columnNamesAsChar () const
 Create column names as char **. More...
 
void deleteNamesAsChar (const char *const *names, int number) const
 Delete char * version of names. More...
 
void onStopped ()
 On stopped - sets secondary status. More...
 

Protected Attributes

data
double optimizationDirection_
 Direction of optimization (1 - minimize, -1 - maximize, 0 - ignore. More...
 
double dblParam_ [ClpLastDblParam]
 Array of double parameters. More...
 
double objectiveValue_
 Objective value. More...
 
double smallElement_
 Small element value. More...
 
double objectiveScale_
 Scaling of objective. More...
 
double rhsScale_
 Scaling of rhs and bounds. More...
 
int numberRows_
 Number of rows. More...
 
int numberColumns_
 Number of columns. More...
 
double * rowActivity_
 Row activities. More...
 
double * columnActivity_
 Column activities. More...
 
double * dual_
 Duals. More...
 
double * reducedCost_
 Reduced costs. More...
 
double * rowLower_
 Row lower. More...
 
double * rowUpper_
 Row upper. More...
 
ClpObjectiveobjective_
 Objective. More...
 
double * rowObjective_
 Row Objective (? sign) - may be NULL. More...
 
double * columnLower_
 Column Lower. More...
 
double * columnUpper_
 Column Upper. More...
 
ClpMatrixBasematrix_
 Packed matrix. More...
 
ClpMatrixBaserowCopy_
 Row copy if wanted. More...
 
ClpPackedMatrixscaledMatrix_
 Scaled packed matrix. More...
 
double * ray_
 Infeasible/unbounded ray. More...
 
double * rowScale_
 Row scale factors for matrix. More...
 
double * columnScale_
 Column scale factors. More...
 
double * inverseRowScale_
 Inverse row scale factors for matrix (end of rowScale_) More...
 
double * inverseColumnScale_
 Inverse column scale factors for matrix (end of columnScale_) More...
 
int scalingFlag_
 Scale flag, 0 none, 1 equilibrium, 2 geometric, 3, auto, 4 dynamic, 5 geometric on rows. More...
 
unsigned char * status_
 Status (i.e. More...
 
char * integerType_
 Integer information. More...
 
void * userPointer_
 User pointer for whatever reason. More...
 
ClpTrustedDatatrustedUserPointer_
 Trusted user pointer e.g. for heuristics. More...
 
int intParam_ [ClpLastIntParam]
 Array of integer parameters. More...
 
int numberIterations_
 Number of iterations. More...
 
int solveType_
 Solve type - 1 simplex, 2 simplex interface, 3 Interior. More...
 
unsigned int whatsChanged_
 
int problemStatus_
 Status of problem. More...
 
int secondaryStatus_
 Secondary status of problem. More...
 
int lengthNames_
 length of names (0 means no names) More...
 
int numberThreads_
 Number of threads (not very operational) More...
 
unsigned int specialOptions_
 For advanced options See get and set for meaning. More...
 
CoinMessageHandlerhandler_
 Message handler. More...
 
bool defaultHandler_
 Flag to say if default handler (so delete) More...
 
CoinThreadRandom randomNumberGenerator_
 Thread specific random number generator. More...
 
ClpEventHandlereventHandler_
 Event handler. More...
 
std::vector< std::string > rowNames_
 Row names. More...
 
std::vector< std::string > columnNames_
 Column names. More...
 
CoinMessages messages_
 Messages. More...
 
CoinMessages coinMessages_
 Coin messages. More...
 
int maximumColumns_
 Maximum number of columns in model. More...
 
int maximumRows_
 Maximum number of rows in model. More...
 
int maximumInternalColumns_
 Maximum number of columns (internal arrays) in model. More...
 
int maximumInternalRows_
 Maximum number of rows (internal arrays) in model. More...
 
CoinPackedMatrix baseMatrix_
 Base packed matrix. More...
 
CoinPackedMatrix baseRowCopy_
 Base row copy. More...
 
double * savedRowScale_
 Saved row scale factors for matrix. More...
 
double * savedColumnScale_
 Saved column scale factors. More...
 
std::string strParam_ [ClpLastStrParam]
 Array of string parameters. More...
 

Load model - loads some stuff and initializes others

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). More...
 
void loadProblem (const CoinPackedMatrix &matrix, const double *collb, const double *colub, const double *obj, const double *rowlb, const double *rowub, const double *rowObjective=NULL)
 
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 ordered format (without gaps). More...
 
int loadProblem (CoinModel &modelObject, bool tryPlusMinusOne=false)
 This loads a model from a coinModel object - returns number of errors. More...
 
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. More...
 
void loadQuadraticObjective (const int numberColumns, const CoinBigIndex *start, const int *column, const double *element)
 Load up quadratic objective. More...
 
void loadQuadraticObjective (const CoinPackedMatrix &matrix)
 
void deleteQuadraticObjective ()
 Get rid of quadratic objective. More...
 
void setRowObjective (const double *rowObjective)
 This just loads up a row objective. More...
 
int readMps (const char *filename, bool keepNames=false, bool ignoreErrors=false)
 Read an mps file from the given filename. More...
 
int readGMPL (const char *filename, const char *dataName, bool keepNames=false)
 Read GMPL files from the given filenames. More...
 
void copyInIntegerInformation (const char *information)
 Copy in integer informations. More...
 
void deleteIntegerInformation ()
 Drop integer informations. More...
 
void setContinuous (int index)
 Set the index-th variable to be a continuous variable. More...
 
void setInteger (int index)
 Set the index-th variable to be an integer variable. More...
 
bool isInteger (int index) const
 Return true if the index-th variable is an integer variable. More...
 
void resize (int newNumberRows, int newNumberColumns)
 Resizes rim part of model. More...
 
void deleteRows (int number, const int *which)
 Deletes rows. More...
 
void addRow (int numberInRow, const int *columns, const double *elements, double rowLower=-COIN_DBL_MAX, double rowUpper=COIN_DBL_MAX)
 Add one row. More...
 
void addRows (int number, const double *rowLower, const double *rowUpper, const CoinBigIndex *rowStarts, const int *columns, const double *elements)
 Add rows. More...
 
void addRows (int number, const double *rowLower, const double *rowUpper, const CoinBigIndex *rowStarts, const int *rowLengths, const int *columns, const double *elements)
 Add rows. More...
 
void addRows (int number, const double *rowLower, const double *rowUpper, const CoinPackedVectorBase *const *rows)
 
int addRows (const CoinBuild &buildObject, bool tryPlusMinusOne=false, bool checkDuplicates=true)
 Add rows from a build object. More...
 
int addRows (CoinModel &modelObject, bool tryPlusMinusOne=false, bool checkDuplicates=true)
 Add rows from a model object. More...
 
void deleteColumns (int number, const int *which)
 Deletes columns. More...
 
void deleteRowsAndColumns (int numberRows, const int *whichRows, int numberColumns, const int *whichColumns)
 Deletes rows AND columns (keeps old sizes) More...
 
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. More...
 
void addColumns (int number, const double *columnLower, const double *columnUpper, const double *objective, const CoinBigIndex *columnStarts, const int *rows, const double *elements)
 Add columns. More...
 
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)
 
void addColumns (int number, const double *columnLower, const double *columnUpper, const double *objective, const CoinPackedVectorBase *const *columns)
 
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 exists. More...
 
int addColumns (CoinModel &modelObject, bool tryPlusMinusOne=false, bool checkDuplicates=true)
 Add columns from a model object. More...
 
void modifyCoefficient (int row, int column, double newElement, bool keepZero=false)
 Modify one element of a matrix. More...
 
void chgRowLower (const double *rowLower)
 Change row lower bounds. More...
 
void chgRowUpper (const double *rowUpper)
 Change row upper bounds. More...
 
void chgColumnLower (const double *columnLower)
 Change column lower bounds. More...
 
void chgColumnUpper (const double *columnUpper)
 Change column upper bounds. More...
 
void chgObjCoefficients (const double *objIn)
 Change objective coefficients. More...
 
void borrowModel (ClpModel &otherModel)
 Borrow model. More...
 
void returnModel (ClpModel &otherModel)
 Return model - nulls all arrays so can be deleted safely also updates any scalars. More...
 
void createEmptyMatrix ()
 Create empty ClpPackedMatrix. More...
 
CoinBigIndex cleanMatrix (double threshold=1.0e-20)
 Really clean up matrix (if ClpPackedMatrix). More...
 
void copy (const ClpMatrixBase *from, ClpMatrixBase *&to)
 Copy contents - resizing if necessary - otherwise re-use memory. More...
 
void dropNames ()
 Drops names - makes lengthnames 0 and names empty. More...
 
void copyNames (const std::vector< std::string > &rowNames, const std::vector< std::string > &columnNames)
 Copies in names. More...
 
void copyRowNames (const std::vector< std::string > &rowNames, int first, int last)
 Copies in Row names - modifies names first .. last-1. More...
 
void copyColumnNames (const std::vector< std::string > &columnNames, int first, int last)
 Copies in Column names - modifies names first .. last-1. More...
 
void copyRowNames (const char *const *rowNames, int first, int last)
 Copies in Row names - modifies names first .. last-1. More...
 
void copyColumnNames (const char *const *columnNames, int first, int last)
 Copies in Column names - modifies names first .. last-1. More...
 
void setRowName (int rowIndex, std::string &name)
 Set name of row. More...
 
void setColumnName (int colIndex, std::string &name)
 Set name of col. More...
 
int findNetwork (char *rotate, double fractionNeeded=0.75)
 Find a network subset. More...
 
CoinModelcreateCoinModel () const
 This creates a coinModel object. More...
 
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. More...
 
void synchronizeMatrix ()
 Makes sure matrix dimensions are at least model dimensions. More...
 

Detailed Description

Definition at line 38 of file ClpModel.hpp.

Constructor & Destructor Documentation

ClpModel::ClpModel ( bool  emptyMessages = false)

Default constructor.

ClpModel::ClpModel ( const ClpModel rhs,
int  scalingMode = -1 
)

Copy constructor.

May scale depending on mode -1 leave mode as is 0 -off, 1 equilibrium, 2 geometric, 3, auto, 4 auto-but-as-initialSolve-in-bab

ClpModel::ClpModel ( const ClpModel wholeModel,
int  numberRows,
const int *  whichRows,
int  numberColumns,
const int *  whichColumns,
bool  dropNames = true,
bool  dropIntegers = true 
)

Subproblem constructor.

A subset of whole model is created from the row and column lists given. The new order is given by list order and duplicates are allowed. Name and integer information can be dropped

ClpModel::~ClpModel ( )

Destructor.

Member Function Documentation

ClpModel& ClpModel::operator= ( const ClpModel rhs)

Assignment operator. This copies the data.

void ClpModel::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).

If a pointer is 0 then the following values are the default:

  • colub: all columns have upper bound infinity
  • collb: all columns have lower bound 0
  • rowub: all rows have upper bound infinity
  • rowlb: all rows have lower bound -infinity
  • obj: all variables have 0 objective coefficient
void ClpModel::loadProblem ( const CoinPackedMatrix matrix,
const double *  collb,
const double *  colub,
const double *  obj,
const double *  rowlb,
const double *  rowub,
const double *  rowObjective = NULL 
)
void ClpModel::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 ordered format (without gaps).

int ClpModel::loadProblem ( CoinModel modelObject,
bool  tryPlusMinusOne = false 
)

This loads a model from a coinModel object - returns number of errors.

modelObject not const as may be changed as part of process If tryPlusMinusOne then will try adding as +-1 matrix

void ClpModel::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.

void ClpModel::loadQuadraticObjective ( const int  numberColumns,
const CoinBigIndex start,
const int *  column,
const double *  element 
)

Load up quadratic objective.

This is stored as a CoinPackedMatrix

void ClpModel::loadQuadraticObjective ( const CoinPackedMatrix matrix)
void ClpModel::deleteQuadraticObjective ( )

Get rid of quadratic objective.

void ClpModel::setRowObjective ( const double *  rowObjective)

This just loads up a row objective.

int ClpModel::readMps ( const char *  filename,
bool  keepNames = false,
bool  ignoreErrors = false 
)

Read an mps file from the given filename.

int ClpModel::readGMPL ( const char *  filename,
const char *  dataName,
bool  keepNames = false 
)

Read GMPL files from the given filenames.

void ClpModel::copyInIntegerInformation ( const char *  information)

Copy in integer informations.

void ClpModel::deleteIntegerInformation ( )

Drop integer informations.

void ClpModel::setContinuous ( int  index)

Set the index-th variable to be a continuous variable.

void ClpModel::setInteger ( int  index)

Set the index-th variable to be an integer variable.

bool ClpModel::isInteger ( int  index) const

Return true if the index-th variable is an integer variable.

void ClpModel::resize ( int  newNumberRows,
int  newNumberColumns 
)

Resizes rim part of model.

void ClpModel::synchronizeMatrix ( )
private

Makes sure matrix dimensions are at least model dimensions.

void ClpModel::deleteRows ( int  number,
const int *  which 
)

Deletes rows.

void ClpModel::addRow ( int  numberInRow,
const int *  columns,
const double *  elements,
double  rowLower = -COIN_DBL_MAX,
double  rowUpper = COIN_DBL_MAX 
)

Add one row.

void ClpModel::addRows ( int  number,
const double *  rowLower,
const double *  rowUpper,
const CoinBigIndex rowStarts,
const int *  columns,
const double *  elements 
)

Add rows.

void ClpModel::addRows ( int  number,
const double *  rowLower,
const double *  rowUpper,
const CoinBigIndex rowStarts,
const int *  rowLengths,
const int *  columns,
const double *  elements 
)

Add rows.

void ClpModel::addRows ( int  number,
const double *  rowLower,
const double *  rowUpper,
const CoinPackedVectorBase *const *  rows 
)
int ClpModel::addRows ( const CoinBuild buildObject,
bool  tryPlusMinusOne = false,
bool  checkDuplicates = true 
)

Add rows from a build object.

If tryPlusMinusOne then will try adding as +-1 matrix if no matrix exists. Returns number of errors e.g. duplicates

int ClpModel::addRows ( CoinModel modelObject,
bool  tryPlusMinusOne = false,
bool  checkDuplicates = true 
)

Add rows from a model object.

returns -1 if object in bad state (i.e. has column information) otherwise number of errors.

modelObject non const as can be regularized as part of build If tryPlusMinusOne then will try adding as +-1 matrix if no matrix exists.

void ClpModel::deleteColumns ( int  number,
const int *  which 
)

Deletes columns.

void ClpModel::deleteRowsAndColumns ( int  numberRows,
const int *  whichRows,
int  numberColumns,
const int *  whichColumns 
)

Deletes rows AND columns (keeps old sizes)

void ClpModel::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 ClpModel::addColumns ( int  number,
const double *  columnLower,
const double *  columnUpper,
const double *  objective,
const CoinBigIndex columnStarts,
const int *  rows,
const double *  elements 
)

Add columns.

void ClpModel::addColumns ( int  number,
const double *  columnLower,
const double *  columnUpper,
const double *  objective,
const CoinBigIndex columnStarts,
const int *  columnLengths,
const int *  rows,
const double *  elements 
)
void ClpModel::addColumns ( int  number,
const double *  columnLower,
const double *  columnUpper,
const double *  objective,
const CoinPackedVectorBase *const *  columns 
)
int ClpModel::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 exists.

Returns number of errors e.g. duplicates

int ClpModel::addColumns ( CoinModel modelObject,
bool  tryPlusMinusOne = false,
bool  checkDuplicates = true 
)

Add columns from a model object.

returns -1 if object in bad state (i.e. has row information) otherwise number of errors modelObject non const as can be regularized as part of build If tryPlusMinusOne then will try adding as +-1 matrix if no matrix exists.

void ClpModel::modifyCoefficient ( int  row,
int  column,
double  newElement,
bool  keepZero = false 
)
inline

Modify one element of a matrix.

Definition at line 234 of file ClpModel.hpp.

void ClpModel::chgRowLower ( const double *  rowLower)

Change row lower bounds.

void ClpModel::chgRowUpper ( const double *  rowUpper)

Change row upper bounds.

void ClpModel::chgColumnLower ( const double *  columnLower)

Change column lower bounds.

void ClpModel::chgColumnUpper ( const double *  columnUpper)

Change column upper bounds.

void ClpModel::chgObjCoefficients ( const double *  objIn)

Change objective coefficients.

void ClpModel::borrowModel ( ClpModel otherModel)

Borrow model.

This is so we don't have to copy large amounts of data around. It assumes a derived class wants to overwrite an empty model with a real one - while it does an algorithm

void ClpModel::returnModel ( ClpModel otherModel)

Return model - nulls all arrays so can be deleted safely also updates any scalars.

void ClpModel::createEmptyMatrix ( )

Create empty ClpPackedMatrix.

CoinBigIndex ClpModel::cleanMatrix ( double  threshold = 1.0e-20)

Really clean up matrix (if ClpPackedMatrix).

a) eliminate all duplicate AND small elements in matrix b) remove all gaps and set extraGap_ and extraMajor_ to 0.0 c) reallocate arrays and make max lengths equal to lengths d) orders elements returns number of elements eliminated or -1 if not ClpPackedMatrix

void ClpModel::copy ( const ClpMatrixBase from,
ClpMatrixBase *&  to 
)

Copy contents - resizing if necessary - otherwise re-use memory.

void ClpModel::dropNames ( )

Drops names - makes lengthnames 0 and names empty.

void ClpModel::copyNames ( const std::vector< std::string > &  rowNames,
const std::vector< std::string > &  columnNames 
)

Copies in names.

void ClpModel::copyRowNames ( const std::vector< std::string > &  rowNames,
int  first,
int  last 
)

Copies in Row names - modifies names first .. last-1.

void ClpModel::copyColumnNames ( const std::vector< std::string > &  columnNames,
int  first,
int  last 
)

Copies in Column names - modifies names first .. last-1.

void ClpModel::copyRowNames ( const char *const *  rowNames,
int  first,
int  last 
)

Copies in Row names - modifies names first .. last-1.

void ClpModel::copyColumnNames ( const char *const *  columnNames,
int  first,
int  last 
)

Copies in Column names - modifies names first .. last-1.

void ClpModel::setRowName ( int  rowIndex,
std::string &  name 
)

Set name of row.

void ClpModel::setColumnName ( int  colIndex,
std::string &  name 
)

Set name of col.

int ClpModel::findNetwork ( char *  rotate,
double  fractionNeeded = 0.75 
)

Find a network subset.

rotate array should be numberRows. On output -1 not in network 0 in network as is 1 in network with signs swapped Returns number of network rows

CoinModel* ClpModel::createCoinModel ( ) const

This creates a coinModel object.

int ClpModel::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.

Row and column names may be null. formatType is

  • 0 - normal
  • 1 - extra accuracy
  • 2 - IEEE hex

Returns non-zero on I/O error

int ClpModel::numberRows ( ) const
inline

Number of rows.

Definition at line 319 of file ClpModel.hpp.

int ClpModel::getNumRows ( ) const
inline

Definition at line 323 of file ClpModel.hpp.

int ClpModel::getNumCols ( ) const
inline

Number of columns.

Definition at line 328 of file ClpModel.hpp.

int ClpModel::numberColumns ( ) const
inline

Definition at line 332 of file ClpModel.hpp.

double ClpModel::primalTolerance ( ) const
inline

Primal tolerance to use.

Definition at line 337 of file ClpModel.hpp.

void ClpModel::setPrimalTolerance ( double  value)
double ClpModel::dualTolerance ( ) const
inline

Dual tolerance to use.

Definition at line 343 of file ClpModel.hpp.

void ClpModel::setDualTolerance ( double  value)
double ClpModel::primalObjectiveLimit ( ) const
inline

Primal objective limit.

Definition at line 349 of file ClpModel.hpp.

void ClpModel::setPrimalObjectiveLimit ( double  value)
double ClpModel::dualObjectiveLimit ( ) const
inline

Dual objective limit.

Definition at line 355 of file ClpModel.hpp.

void ClpModel::setDualObjectiveLimit ( double  value)
double ClpModel::objectiveOffset ( ) const
inline

Objective offset.

Definition at line 361 of file ClpModel.hpp.

void ClpModel::setObjectiveOffset ( double  value)
double ClpModel::presolveTolerance ( ) const
inline

Presolve tolerance to use.

Definition at line 367 of file ClpModel.hpp.

const std::string& ClpModel::problemName ( ) const
inline

Definition at line 372 of file ClpModel.hpp.

int ClpModel::numberIterations ( ) const
inline

Number of iterations.

Definition at line 378 of file ClpModel.hpp.

int ClpModel::getIterationCount ( ) const
inline

Definition at line 382 of file ClpModel.hpp.

void ClpModel::setNumberIterations ( int  numberIterationsNew)
inline

Definition at line 386 of file ClpModel.hpp.

int ClpModel::solveType ( ) const
inline

Solve type - 1 simplex, 2 simplex interface, 3 Interior.

Definition at line 391 of file ClpModel.hpp.

void ClpModel::setSolveType ( int  type)
inline

Definition at line 395 of file ClpModel.hpp.

int ClpModel::maximumIterations ( ) const
inline

Maximum number of iterations.

Definition at line 400 of file ClpModel.hpp.

void ClpModel::setMaximumIterations ( int  value)
double ClpModel::maximumSeconds ( ) const
inline

Maximum time in seconds (from when set called)

Definition at line 406 of file ClpModel.hpp.

void ClpModel::setMaximumSeconds ( double  value)
void ClpModel::setMaximumWallSeconds ( double  value)
bool ClpModel::hitMaximumIterations ( ) const

Returns true if hit maximum iterations (or time)

int ClpModel::status ( ) const
inline

Status of problem: -1 - unknown e.g.

before solve or if postSolve says not optimal 0 - optimal 1 - primal infeasible 2 - dual infeasible 3 - stopped on iterations or time 4 - stopped due to errors 5 - stopped by event handler (virtual int ClpEventHandler::event())

Definition at line 423 of file ClpModel.hpp.

int ClpModel::problemStatus ( ) const
inline

Definition at line 427 of file ClpModel.hpp.

void ClpModel::setProblemStatus ( int  problemStatusNew)
inline

Set problem status.

Definition at line 432 of file ClpModel.hpp.

int ClpModel::secondaryStatus ( ) const
inline

Secondary status of problem - may get extended 0 - none 1 - primal infeasible because dual limit reached OR (probably primal infeasible but can't prove it - main status was 4) 2 - scaled problem optimal - unscaled problem has primal infeasibilities 3 - scaled problem optimal - unscaled problem has dual infeasibilities 4 - scaled problem optimal - unscaled problem has primal and dual infeasibilities 5 - giving up in primal with flagged variables 6 - failed due to empty problem check 7 - postSolve says not optimal 8 - failed due to bad element check 9 - status was 3 and stopped on time 10 - status was 3 but stopped as primal feasible 100 up - translation of enum from ClpEventHandler.

Definition at line 451 of file ClpModel.hpp.

void ClpModel::setSecondaryStatus ( int  newstatus)
inline

Definition at line 455 of file ClpModel.hpp.

bool ClpModel::isAbandoned ( ) const
inline

Are there a numerical difficulties?

Definition at line 460 of file ClpModel.hpp.

bool ClpModel::isProvenOptimal ( ) const
inline

Is optimality proven?

Definition at line 465 of file ClpModel.hpp.

bool ClpModel::isProvenPrimalInfeasible ( ) const
inline

Is primal infeasiblity proven?

Definition at line 470 of file ClpModel.hpp.

bool ClpModel::isProvenDualInfeasible ( ) const
inline

Is dual infeasiblity proven?

Definition at line 475 of file ClpModel.hpp.

bool ClpModel::isPrimalObjectiveLimitReached ( ) const

Is the given primal objective limit reached?

bool ClpModel::isDualObjectiveLimitReached ( ) const

Is the given dual objective limit reached?

bool ClpModel::isIterationLimitReached ( ) const
inline

Iteration limit reached?

Definition at line 484 of file ClpModel.hpp.

double ClpModel::optimizationDirection ( ) const
inline

Direction of optimization (1 - minimize, -1 - maximize, 0 - ignore.

Definition at line 489 of file ClpModel.hpp.

double ClpModel::getObjSense ( ) const
inline

Definition at line 493 of file ClpModel.hpp.

void ClpModel::setOptimizationDirection ( double  value)
double* ClpModel::primalRowSolution ( ) const
inline

Primal row solution.

Definition at line 499 of file ClpModel.hpp.

const double* ClpModel::getRowActivity ( ) const
inline

Definition at line 503 of file ClpModel.hpp.

double* ClpModel::primalColumnSolution ( ) const
inline

Primal column solution.

Definition at line 508 of file ClpModel.hpp.

const double* ClpModel::getColSolution ( ) const
inline

Definition at line 512 of file ClpModel.hpp.

void ClpModel::setColSolution ( const double *  input)
inline

Definition at line 516 of file ClpModel.hpp.

double* ClpModel::dualRowSolution ( ) const
inline

Dual row solution.

Definition at line 521 of file ClpModel.hpp.

const double* ClpModel::getRowPrice ( ) const
inline

Definition at line 525 of file ClpModel.hpp.

double* ClpModel::dualColumnSolution ( ) const
inline

Reduced costs.

Definition at line 530 of file ClpModel.hpp.

const double* ClpModel::getReducedCost ( ) const
inline

Definition at line 534 of file ClpModel.hpp.

double* ClpModel::rowLower ( ) const
inline

Row lower.

Definition at line 539 of file ClpModel.hpp.

const double* ClpModel::getRowLower ( ) const
inline

Definition at line 543 of file ClpModel.hpp.

double* ClpModel::rowUpper ( ) const
inline

Row upper.

Definition at line 548 of file ClpModel.hpp.

const double* ClpModel::getRowUpper ( ) const
inline

Definition at line 552 of file ClpModel.hpp.

void ClpModel::setObjectiveCoefficient ( int  elementIndex,
double  elementValue 
)

Set an objective function coefficient.

void ClpModel::setObjCoeff ( int  elementIndex,
double  elementValue 
)
inline

Set an objective function coefficient.

Definition at line 562 of file ClpModel.hpp.

void ClpModel::setColumnLower ( int  elementIndex,
double  elementValue 
)

Set a single column lower bound
Use -DBL_MAX for -infinity.

void ClpModel::setColumnUpper ( int  elementIndex,
double  elementValue 
)

Set a single column upper bound
Use DBL_MAX for infinity.

void ClpModel::setColumnBounds ( int  elementIndex,
double  lower,
double  upper 
)

Set a single column lower and upper bound.

void ClpModel::setColumnSetBounds ( const int *  indexFirst,
const int *  indexLast,
const double *  boundList 
)

Set the bounds on a number of columns simultaneously
The default implementation just invokes setColLower() and setColUpper() over and over again.

Parameters
indexFirst,indexLastpointers to the beginning and after the end of the array of the indices of the variables whose either bound changes
boundListthe new lower/upper bound pairs for the variables
void ClpModel::setColLower ( int  elementIndex,
double  elementValue 
)
inline

Set a single column lower bound
Use -DBL_MAX for -infinity.

Definition at line 593 of file ClpModel.hpp.

void ClpModel::setColUpper ( int  elementIndex,
double  elementValue 
)
inline

Set a single column upper bound
Use DBL_MAX for infinity.

Definition at line 599 of file ClpModel.hpp.

void ClpModel::setColBounds ( int  elementIndex,
double  lower,
double  upper 
)
inline

Set a single column lower and upper bound.

Definition at line 605 of file ClpModel.hpp.

void ClpModel::setColSetBounds ( const int *  indexFirst,
const int *  indexLast,
const double *  boundList 
)
inline

Set the bounds on a number of columns simultaneously

Parameters
indexFirst,indexLastpointers to the beginning and after the end of the array of the indices of the variables whose either bound changes
boundListthe new lower/upper bound pairs for the variables

Definition at line 617 of file ClpModel.hpp.

void ClpModel::setRowLower ( int  elementIndex,
double  elementValue 
)

Set a single row lower bound
Use -DBL_MAX for -infinity.

void ClpModel::setRowUpper ( int  elementIndex,
double  elementValue 
)

Set a single row upper bound
Use DBL_MAX for infinity.

void ClpModel::setRowBounds ( int  elementIndex,
double  lower,
double  upper 
)

Set a single row lower and upper bound.

void ClpModel::setRowSetBounds ( const int *  indexFirst,
const int *  indexLast,
const double *  boundList 
)

Set the bounds on a number of rows simultaneously

Parameters
indexFirst,indexLastpointers to the beginning and after the end of the array of the indices of the constraints whose either bound changes
boundListthe new lower/upper bound pairs for the constraints
const double* ClpModel::rowScale ( ) const
inline

Scaling.

Definition at line 648 of file ClpModel.hpp.

const double* ClpModel::columnScale ( ) const
inline

Definition at line 652 of file ClpModel.hpp.

const double* ClpModel::inverseRowScale ( ) const
inline

Definition at line 656 of file ClpModel.hpp.

const double* ClpModel::inverseColumnScale ( ) const
inline

Definition at line 660 of file ClpModel.hpp.

double* ClpModel::mutableRowScale ( ) const
inline

Definition at line 664 of file ClpModel.hpp.

double* ClpModel::mutableColumnScale ( ) const
inline

Definition at line 668 of file ClpModel.hpp.

double* ClpModel::mutableInverseRowScale ( ) const
inline

Definition at line 672 of file ClpModel.hpp.

double* ClpModel::mutableInverseColumnScale ( ) const
inline

Definition at line 676 of file ClpModel.hpp.

double* ClpModel::swapRowScale ( double *  newScale)
inline

Definition at line 680 of file ClpModel.hpp.

void ClpModel::setRowScale ( double *  scale)
void ClpModel::setColumnScale ( double *  scale)
double ClpModel::objectiveScale ( ) const
inline

Scaling of objective.

Definition at line 689 of file ClpModel.hpp.

void ClpModel::setObjectiveScale ( double  value)
inline

Definition at line 693 of file ClpModel.hpp.

double ClpModel::rhsScale ( ) const
inline

Scaling of rhs and bounds.

Definition at line 698 of file ClpModel.hpp.

void ClpModel::setRhsScale ( double  value)
inline

Definition at line 702 of file ClpModel.hpp.

void ClpModel::scaling ( int  mode = 1)

Sets or unsets scaling, 0 -off, 1 equilibrium, 2 geometric, 3 auto, 4 auto-but-as-initialSolve-in-bab.

void ClpModel::unscale ( )

If we constructed a "really" scaled model then this reverses the operation.

Quantities may not be exactly as they were before due to rounding errors

int ClpModel::scalingFlag ( ) const
inline

Gets scalingFlag.

Definition at line 712 of file ClpModel.hpp.

double* ClpModel::objective ( ) const
inline

Objective.

Definition at line 717 of file ClpModel.hpp.

double* ClpModel::objective ( const double *  solution,
double &  offset,
bool  refresh = true 
) const
inline

Definition at line 726 of file ClpModel.hpp.

const double* ClpModel::getObjCoefficients ( ) const
inline

Definition at line 735 of file ClpModel.hpp.

double* ClpModel::rowObjective ( ) const
inline

Row Objective.

Definition at line 745 of file ClpModel.hpp.

const double* ClpModel::getRowObjCoefficients ( ) const
inline

Definition at line 749 of file ClpModel.hpp.

double* ClpModel::columnLower ( ) const
inline

Column Lower.

Definition at line 754 of file ClpModel.hpp.

const double* ClpModel::getColLower ( ) const
inline

Definition at line 758 of file ClpModel.hpp.

double* ClpModel::columnUpper ( ) const
inline

Column Upper.

Definition at line 763 of file ClpModel.hpp.

const double* ClpModel::getColUpper ( ) const
inline

Definition at line 767 of file ClpModel.hpp.

CoinPackedMatrix* ClpModel::matrix ( ) const
inline

Matrix (if not ClpPackedmatrix be careful about memory leak.

Definition at line 772 of file ClpModel.hpp.

CoinBigIndex ClpModel::getNumElements ( ) const
inline

Number of elements in matrix.

Definition at line 780 of file ClpModel.hpp.

double ClpModel::getSmallElementValue ( ) const
inline

Small element value - elements less than this set to zero, default is 1.0e-20.

Definition at line 786 of file ClpModel.hpp.

void ClpModel::setSmallElementValue ( double  value)
inline

Definition at line 790 of file ClpModel.hpp.

ClpMatrixBase* ClpModel::rowCopy ( ) const
inline

Row Matrix.

Definition at line 795 of file ClpModel.hpp.

void ClpModel::setNewRowCopy ( ClpMatrixBase newCopy)

Set new row matrix.

ClpMatrixBase* ClpModel::clpMatrix ( ) const
inline

Clp Matrix.

Definition at line 802 of file ClpModel.hpp.

ClpPackedMatrix* ClpModel::clpScaledMatrix ( ) const
inline

Scaled ClpPackedMatrix.

Definition at line 807 of file ClpModel.hpp.

void ClpModel::setClpScaledMatrix ( ClpPackedMatrix scaledMatrix)
inline

Sets pointer to scaled ClpPackedMatrix.

Definition at line 812 of file ClpModel.hpp.

ClpPackedMatrix* ClpModel::swapScaledMatrix ( ClpPackedMatrix scaledMatrix)
inline

Swaps pointer to scaled ClpPackedMatrix.

Definition at line 818 of file ClpModel.hpp.

void ClpModel::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 current.

This was used where matrices were being rotated. ClpModel takes ownership.

void ClpModel::replaceMatrix ( CoinPackedMatrix newmatrix,
bool  deleteCurrent = false 
)
inline

Replace Clp Matrix (current is not deleted unless told to and new is used) So up to user to delete current.

This was used where matrices were being rotated. This version changes CoinPackedMatrix to ClpPackedMatrix. ClpModel takes ownership.

Definition at line 835 of file ClpModel.hpp.

double ClpModel::objectiveValue ( ) const
inline

Objective value.

Definition at line 841 of file ClpModel.hpp.

void ClpModel::setObjectiveValue ( double  value)
inline

Definition at line 845 of file ClpModel.hpp.

double ClpModel::getObjValue ( ) const
inline

Definition at line 849 of file ClpModel.hpp.

char* ClpModel::integerInformation ( ) const
inline

Integer information.

Definition at line 854 of file ClpModel.hpp.

double* ClpModel::infeasibilityRay ( bool  fullRay = false) const

Infeasibility/unbounded ray (NULL returned if none/wrong) Up to user to use delete [] on these arrays.

double* ClpModel::unboundedRay ( ) const
double* ClpModel::ray ( ) const
inline

For advanced users - no need to delete - sign not changed.

Definition at line 863 of file ClpModel.hpp.

bool ClpModel::rayExists ( ) const
inline

just test if infeasibility or unbounded Ray exists

Definition at line 868 of file ClpModel.hpp.

void ClpModel::deleteRay ( )
inline

just delete ray if exists

Definition at line 873 of file ClpModel.hpp.

const double* ClpModel::internalRay ( ) const
inline

Access internal ray storage. Users should call infeasibilityRay() or unboundedRay() instead.

Definition at line 879 of file ClpModel.hpp.

bool ClpModel::statusExists ( ) const
inline

See if status (i.e. basis) array exists (partly for OsiClp)

Definition at line 884 of file ClpModel.hpp.

unsigned char* ClpModel::statusArray ( ) const
inline

Return address of status (i.e. basis) array (char[numberRows+numberColumns])

Definition at line 889 of file ClpModel.hpp.

unsigned char* ClpModel::statusCopy ( ) const

Return copy of status (i.e.

basis) array (char[numberRows+numberColumns]), use delete []

void ClpModel::copyinStatus ( const unsigned char *  statusArray)

Copy in status (basis) vector.

void ClpModel::setUserPointer ( void *  pointer)
inline

User pointer for whatever reason.

Definition at line 900 of file ClpModel.hpp.

void* ClpModel::getUserPointer ( ) const
inline

Definition at line 904 of file ClpModel.hpp.

void ClpModel::setTrustedUserPointer ( ClpTrustedData pointer)
inline

Trusted user pointer.

Definition at line 909 of file ClpModel.hpp.

ClpTrustedData* ClpModel::getTrustedUserPointer ( ) const
inline

Definition at line 913 of file ClpModel.hpp.

int ClpModel::whatsChanged ( ) const
inline

What has changed in model (only for masochistic users)

Definition at line 918 of file ClpModel.hpp.

void ClpModel::setWhatsChanged ( int  value)
inline

Definition at line 922 of file ClpModel.hpp.

int ClpModel::numberThreads ( ) const
inline

Number of threads (not really being used)

Definition at line 927 of file ClpModel.hpp.

void ClpModel::setNumberThreads ( int  value)
inline

Definition at line 931 of file ClpModel.hpp.

void ClpModel::passInMessageHandler ( CoinMessageHandler handler)

Pass in Message handler (not deleted at end)

CoinMessageHandler* ClpModel::pushMessageHandler ( CoinMessageHandler handler,
bool &  oldDefault 
)

Pass in Message handler (not deleted at end) and return current.

void ClpModel::popMessageHandler ( CoinMessageHandler oldHandler,
bool  oldDefault 
)

back to previous message handler

void ClpModel::newLanguage ( CoinMessages::Language  language)

Set language.

void ClpModel::setLanguage ( CoinMessages::Language  language)
inline

Definition at line 947 of file ClpModel.hpp.

void ClpModel::setDefaultMessageHandler ( )

Overrides message handler with a default one.

CoinMessageHandler* ClpModel::messageHandler ( ) const
inline

Return handler.

Definition at line 954 of file ClpModel.hpp.

CoinMessages ClpModel::messages ( ) const
inline

Return messages.

Definition at line 959 of file ClpModel.hpp.

CoinMessages* ClpModel::messagesPointer ( )
inline

Return pointer to messages.

Definition at line 964 of file ClpModel.hpp.

CoinMessages ClpModel::coinMessages ( ) const
inline

Return Coin messages.

Definition at line 969 of file ClpModel.hpp.

CoinMessages* ClpModel::coinMessagesPointer ( )
inline

Return pointer to Coin messages.

Definition at line 974 of file ClpModel.hpp.

void ClpModel::setLogLevel ( int  value)
inline

Amount of print out: 0 - none 1 - just final 2 - just factorizations 3 - as 2 plus a bit more 4 - verbose above that 8,16,32 etc just for selective debug.

Definition at line 986 of file ClpModel.hpp.

int ClpModel::logLevel ( ) const
inline

Definition at line 990 of file ClpModel.hpp.

bool ClpModel::defaultHandler ( ) const
inline

Return true if default handler.

Definition at line 995 of file ClpModel.hpp.

void ClpModel::passInEventHandler ( const ClpEventHandler eventHandler)

Pass in Event handler (cloned and deleted at end)

ClpEventHandler* ClpModel::eventHandler ( ) const
inline

Event handler.

Definition at line 1002 of file ClpModel.hpp.

CoinThreadRandom* ClpModel::randomNumberGenerator ( )
inline

Thread specific random number generator.

Definition at line 1007 of file ClpModel.hpp.

CoinThreadRandom& ClpModel::mutableRandomNumberGenerator ( )
inline

Thread specific random number generator.

Definition at line 1012 of file ClpModel.hpp.

void ClpModel::setRandomSeed ( int  value)
inline

Set seed for thread specific random number generator.

Definition at line 1017 of file ClpModel.hpp.

int ClpModel::lengthNames ( ) const
inline

length of names (0 means no names0

Definition at line 1022 of file ClpModel.hpp.

void ClpModel::setLengthNames ( int  value)
inline

length of names (0 means no names0

Definition at line 1028 of file ClpModel.hpp.

const std::vector< std::string >* ClpModel::rowNames ( ) const
inline

Row names.

Definition at line 1033 of file ClpModel.hpp.

const std::string& ClpModel::rowName ( int  iRow) const
inline

Definition at line 1037 of file ClpModel.hpp.

std::string ClpModel::getRowName ( int  iRow) const

Return name or Rnnnnnnn.

const std::vector< std::string >* ClpModel::columnNames ( ) const
inline

Column names.

Definition at line 1044 of file ClpModel.hpp.

const std::string& ClpModel::columnName ( int  iColumn) const
inline

Definition at line 1048 of file ClpModel.hpp.

std::string ClpModel::getColumnName ( int  iColumn) const

Return name or Cnnnnnnn.

ClpObjective* ClpModel::objectiveAsObject ( ) const
inline

Objective methods.

Definition at line 1056 of file ClpModel.hpp.

void ClpModel::setObjective ( ClpObjective objective)
void ClpModel::setObjectivePointer ( ClpObjective newobjective)
inline

Definition at line 1061 of file ClpModel.hpp.

int ClpModel::emptyProblem ( int *  infeasNumber = NULL,
double *  infeasSum = NULL,
bool  printMessage = true 
)

Solve a problem with no elements - return status and dual and primal infeasibilites.

void ClpModel::times ( double  scalar,
const double *  x,
double *  y 
) const

Return y + A * x * scalar in y.

Precondition
x must be of size numColumns()
y must be of size numRows()
void ClpModel::transposeTimes ( double  scalar,
const double *  x,
double *  y 
) const

Return y + x * scalar * A in y.

Precondition
x must be of size numRows()
y must be of size numColumns()
bool ClpModel::setIntParam ( ClpIntParam  key,
int  value 
)

Set an integer parameter.

bool ClpModel::setDblParam ( ClpDblParam  key,
double  value 
)

Set an double parameter.

bool ClpModel::setStrParam ( ClpStrParam  key,
const std::string &  value 
)

Set an string parameter.

bool ClpModel::getIntParam ( ClpIntParam  key,
int &  value 
) const
inline

Definition at line 1115 of file ClpModel.hpp.

bool ClpModel::getDblParam ( ClpDblParam  key,
double &  value 
) const
inline

Definition at line 1125 of file ClpModel.hpp.

bool ClpModel::getStrParam ( ClpStrParam  key,
std::string &  value 
) const
inline

Definition at line 1136 of file ClpModel.hpp.

void ClpModel::generateCpp ( FILE *  fp)

Create C++ lines to get to current state.

unsigned int ClpModel::specialOptions ( ) const
inline

For advanced options 1 - Don't keep changing infeasibility weight 2 - Keep nonLinearCost round solves 4 - Force outgoing variables to exact bound (primal) 8 - Safe to use dense initial factorization 16 -Just use basic variables for operation if column generation 32 -Create ray even in BAB 64 -Treat problem as feasible until last minute (i.e.

minimize infeasibilities) 128 - Switch off all matrix sanity checks 256 - No row copy 512 - If not in values pass, solution guaranteed, skip as much as possible 1024 - In branch and bound 2048 - Don't bother to re-factorize if < 20 iterations 4096 - Skip some optimality checks 8192 - Do Primal when cleaning up primal 16384 - In fast dual (so we can switch off things) 32768 - called from Osi 65536 - keep arrays around as much as possible (also use maximumR/C) 131072 - transposeTimes is -1.0 and can skip basic and fixed 262144 - extra copy of scaled matrix 524288 - Clp fast dual 1048576 - don't need to finish dual (can return 3) 2097152 - ray even if >2 pivots AND if problem is "crunched" 4194304 - don't scale integer variables 8388608 - Idiot when not really sure about it 16777216 - zero costs! NOTE - many applications can call Clp but there may be some short cuts which are taken which are not guaranteed safe from all applications. Vetted applications will have a bit set and the code may test this At present I expect a few such applications - if too many I will have to re-think. It is up to application owner to change the code if she/he needs these short cuts. I will not debug unless in Coin repository. See COIN_CLP_VETTED comments. 0x01000000 is Cbc (and in branch and bound) 0x02000000 is in a different branch and bound

Definition at line 1184 of file ClpModel.hpp.

void ClpModel::setSpecialOptions ( unsigned int  value)
bool ClpModel::inCbcBranchAndBound ( ) const
inline

Definition at line 1190 of file ClpModel.hpp.

void ClpModel::gutsOfDelete ( int  type)
protected

Does most of deletion (0 = all, 1 = most)

void ClpModel::gutsOfCopy ( const ClpModel rhs,
int  trueCopy = 1 
)
protected

Does most of copying If trueCopy 0 then just points to arrays If -1 leaves as much as possible.

void ClpModel::getRowBound ( int  iRow,
double &  lower,
double &  upper 
) const
protected

gets lower and upper bounds on rows

void ClpModel::gutsOfLoadModel ( int  numberRows,
int  numberColumns,
const double *  collb,
const double *  colub,
const double *  obj,
const double *  rowlb,
const double *  rowub,
const double *  rowObjective = NULL 
)
protected

puts in format I like - 4 array matrix - may make row copy

void ClpModel::gutsOfScaling ( )
protected

Does much of scaling.

double ClpModel::rawObjectiveValue ( ) const
inlineprotected

Objective value - always minimize.

Definition at line 1216 of file ClpModel.hpp.

bool ClpModel::permanentArrays ( ) const
inlineprotected

If we are using maximumRows_ and Columns_.

Definition at line 1221 of file ClpModel.hpp.

void ClpModel::startPermanentArrays ( )
protected

Start using maximumRows_ and Columns_.

void ClpModel::stopPermanentArrays ( )
protected

Stop using maximumRows_ and Columns_.

const char* const* ClpModel::rowNamesAsChar ( ) const
protected

Create row names as char **.

const char* const* ClpModel::columnNamesAsChar ( ) const
protected

Create column names as char **.

void ClpModel::deleteNamesAsChar ( const char *const *  names,
int  number 
) const
protected

Delete char * version of names.

void ClpModel::onStopped ( )
protected

On stopped - sets secondary status.

Member Data Documentation

double ClpModel::optimizationDirection_
protected

Direction of optimization (1 - minimize, -1 - maximize, 0 - ignore.

Definition at line 1244 of file ClpModel.hpp.

double ClpModel::dblParam_[ClpLastDblParam]
protected

Array of double parameters.

Definition at line 1246 of file ClpModel.hpp.

double ClpModel::objectiveValue_
protected

Objective value.

Definition at line 1248 of file ClpModel.hpp.

double ClpModel::smallElement_
protected

Small element value.

Definition at line 1250 of file ClpModel.hpp.

double ClpModel::objectiveScale_
protected

Scaling of objective.

Definition at line 1252 of file ClpModel.hpp.

double ClpModel::rhsScale_
protected

Scaling of rhs and bounds.

Definition at line 1254 of file ClpModel.hpp.

int ClpModel::numberRows_
protected

Number of rows.

Definition at line 1256 of file ClpModel.hpp.

int ClpModel::numberColumns_
protected

Number of columns.

Definition at line 1258 of file ClpModel.hpp.

double* ClpModel::rowActivity_
protected

Row activities.

Definition at line 1260 of file ClpModel.hpp.

double* ClpModel::columnActivity_
protected

Column activities.

Definition at line 1262 of file ClpModel.hpp.

double* ClpModel::dual_
protected

Duals.

Definition at line 1264 of file ClpModel.hpp.

double* ClpModel::reducedCost_
protected

Reduced costs.

Definition at line 1266 of file ClpModel.hpp.

double* ClpModel::rowLower_
protected

Row lower.

Definition at line 1268 of file ClpModel.hpp.

double* ClpModel::rowUpper_
protected

Row upper.

Definition at line 1270 of file ClpModel.hpp.

ClpObjective* ClpModel::objective_
protected

Objective.

Definition at line 1272 of file ClpModel.hpp.

double* ClpModel::rowObjective_
protected

Row Objective (? sign) - may be NULL.

Definition at line 1274 of file ClpModel.hpp.

double* ClpModel::columnLower_
protected

Column Lower.

Definition at line 1276 of file ClpModel.hpp.

double* ClpModel::columnUpper_
protected

Column Upper.

Definition at line 1278 of file ClpModel.hpp.

ClpMatrixBase* ClpModel::matrix_
protected

Packed matrix.

Definition at line 1280 of file ClpModel.hpp.

ClpMatrixBase* ClpModel::rowCopy_
protected

Row copy if wanted.

Definition at line 1282 of file ClpModel.hpp.

ClpPackedMatrix* ClpModel::scaledMatrix_
protected

Scaled packed matrix.

Definition at line 1284 of file ClpModel.hpp.

double* ClpModel::ray_
protected

Infeasible/unbounded ray.

Definition at line 1286 of file ClpModel.hpp.

double* ClpModel::rowScale_
protected

Row scale factors for matrix.

Definition at line 1288 of file ClpModel.hpp.

double* ClpModel::columnScale_
protected

Column scale factors.

Definition at line 1290 of file ClpModel.hpp.

double* ClpModel::inverseRowScale_
protected

Inverse row scale factors for matrix (end of rowScale_)

Definition at line 1292 of file ClpModel.hpp.

double* ClpModel::inverseColumnScale_
protected

Inverse column scale factors for matrix (end of columnScale_)

Definition at line 1294 of file ClpModel.hpp.

int ClpModel::scalingFlag_
protected

Scale flag, 0 none, 1 equilibrium, 2 geometric, 3, auto, 4 dynamic, 5 geometric on rows.

Definition at line 1297 of file ClpModel.hpp.

unsigned char* ClpModel::status_
protected

Status (i.e.

basis) Region. I know that not all algorithms need a status array, but it made sense for things like crossover and put all permanent stuff in one place. No assumption is made about what is in status array (although it might be good to reserve bottom 3 bits (i.e. 0-7 numeric) for classic status). This is number of columns + number of rows long (in that order).

Definition at line 1305 of file ClpModel.hpp.

char* ClpModel::integerType_
protected

Integer information.

Definition at line 1307 of file ClpModel.hpp.

void* ClpModel::userPointer_
protected

User pointer for whatever reason.

Definition at line 1309 of file ClpModel.hpp.

ClpTrustedData* ClpModel::trustedUserPointer_
protected

Trusted user pointer e.g. for heuristics.

Definition at line 1311 of file ClpModel.hpp.

int ClpModel::intParam_[ClpLastIntParam]
protected

Array of integer parameters.

Definition at line 1313 of file ClpModel.hpp.

int ClpModel::numberIterations_
protected

Number of iterations.

Definition at line 1315 of file ClpModel.hpp.

int ClpModel::solveType_
protected

Solve type - 1 simplex, 2 simplex interface, 3 Interior.

Definition at line 1317 of file ClpModel.hpp.

unsigned int ClpModel::whatsChanged_
protected

Definition at line 1346 of file ClpModel.hpp.

int ClpModel::problemStatus_
protected

Status of problem.

Definition at line 1348 of file ClpModel.hpp.

int ClpModel::secondaryStatus_
protected

Secondary status of problem.

Definition at line 1350 of file ClpModel.hpp.

int ClpModel::lengthNames_
protected

length of names (0 means no names)

Definition at line 1352 of file ClpModel.hpp.

int ClpModel::numberThreads_
protected

Number of threads (not very operational)

Definition at line 1354 of file ClpModel.hpp.

unsigned int ClpModel::specialOptions_
protected

For advanced options See get and set for meaning.

Definition at line 1358 of file ClpModel.hpp.

CoinMessageHandler* ClpModel::handler_
protected

Message handler.

Definition at line 1360 of file ClpModel.hpp.

bool ClpModel::defaultHandler_
protected

Flag to say if default handler (so delete)

Definition at line 1362 of file ClpModel.hpp.

CoinThreadRandom ClpModel::randomNumberGenerator_
protected

Thread specific random number generator.

Definition at line 1364 of file ClpModel.hpp.

ClpEventHandler* ClpModel::eventHandler_
protected

Event handler.

Definition at line 1366 of file ClpModel.hpp.

std::vector< std::string > ClpModel::rowNames_
protected

Row names.

Definition at line 1369 of file ClpModel.hpp.

std::vector< std::string > ClpModel::columnNames_
protected

Column names.

Definition at line 1371 of file ClpModel.hpp.

CoinMessages ClpModel::messages_
protected

Messages.

Definition at line 1374 of file ClpModel.hpp.

CoinMessages ClpModel::coinMessages_
protected

Coin messages.

Definition at line 1376 of file ClpModel.hpp.

int ClpModel::maximumColumns_
protected

Maximum number of columns in model.

Definition at line 1378 of file ClpModel.hpp.

int ClpModel::maximumRows_
protected

Maximum number of rows in model.

Definition at line 1380 of file ClpModel.hpp.

int ClpModel::maximumInternalColumns_
protected

Maximum number of columns (internal arrays) in model.

Definition at line 1382 of file ClpModel.hpp.

int ClpModel::maximumInternalRows_
protected

Maximum number of rows (internal arrays) in model.

Definition at line 1384 of file ClpModel.hpp.

CoinPackedMatrix ClpModel::baseMatrix_
protected

Base packed matrix.

Definition at line 1386 of file ClpModel.hpp.

CoinPackedMatrix ClpModel::baseRowCopy_
protected

Base row copy.

Definition at line 1388 of file ClpModel.hpp.

double* ClpModel::savedRowScale_
protected

Saved row scale factors for matrix.

Definition at line 1390 of file ClpModel.hpp.

double* ClpModel::savedColumnScale_
protected

Saved column scale factors.

Definition at line 1392 of file ClpModel.hpp.

std::string ClpModel::strParam_[ClpLastStrParam]
protected

Array of string parameters.

Definition at line 1395 of file ClpModel.hpp.


The documentation for this class was generated from the following file: