11 #pragma warning(disable : 4786) 
   34 #ifndef COIN_MAX_FIELD_LENGTH 
   35 #define COIN_MAX_FIELD_LENGTH 160 
   37 #define MAX_CARD_LENGTH 5 * COIN_MAX_FIELD_LENGTH + 80 
  172   inline const char *
card()
 const 
  252   double osi_strtod(
char *ptr, 
char **output, 
int type);
 
  336   virtual SbbObject *sbbObject(SbbModel *model)
 const 
  376   virtual SbbObject *sbbObject(SbbModel *model) 
const;
 
  513   const char *
rowName(
int index) 
const;
 
  527   int rowIndex(
const char *name) 
const;
 
  580     const double *collb, 
const double *colub,
 
  581     const double *obj, 
const char *integrality,
 
  582     const double *rowlb, 
const double *rowub,
 
  583     char const *
const *
const colnames,
 
  584     char const *
const *
const rownames);
 
  586     const double *collb, 
const double *colub,
 
  587     const double *obj, 
const char *integrality,
 
  588     const double *rowlb, 
const double *rowub,
 
  589     const std::vector< std::string > &colnames,
 
  590     const std::vector< std::string > &rownames);
 
  592     const double *collb, 
const double *colub,
 
  593     const double *obj, 
const char *integrality,
 
  594     const char *rowsen, 
const double *rowrhs,
 
  595     const double *rowrng,
 
  596     char const *
const *
const colnames,
 
  597     char const *
const *
const rownames);
 
  599     const double *collb, 
const double *colub,
 
  600     const double *obj, 
const char *integrality,
 
  601     const char *rowsen, 
const double *rowrhs,
 
  602     const double *rowrng,
 
  603     const std::vector< std::string > &colnames,
 
  604     const std::vector< std::string > &rownames);
 
  688   int readMps(
const char *filename, 
const char *extension = 
"mps");
 
  695   int readMps(
const char *filename, 
const char *extension,
 
  696     int &numberSets, 
CoinSet **&sets);
 
  720   int readBasis(
const char *filename, 
const char *extension,
 
  721     double *solution, 
unsigned char *rowStatus, 
unsigned char *columnStatus,
 
  722     const std::vector< std::string > &colnames, 
int numberColumns,
 
  723     const std::vector< std::string > &rownames, 
int numberRows);
 
  730   int readGms(
const char *filename, 
const char *extension = 
"gms", 
bool convertObjective = 
false);
 
  737   int readGms(
const char *filename, 
const char *extension,
 
  738     int &numberSets, 
CoinSet **&sets);
 
  751   int readGMPL(
const char *modelName, 
const char *dataName = NULL, 
bool keepNames = 
false);
 
  778   int writeMps(
const char *filename, 
int compression = 0,
 
  779     int formatType = 0, 
int numberAcross = 2,
 
  781     int numberSOS = 0, 
const CoinSet *setInfo = NULL) 
const;
 
  817     CoinBigIndex *&columnStart, 
int *&column, 
double *&elements,
 
  840     int *&columnStart, 
int *&column, 
int *&coneType, 
int &numberCones);
 
  928     const double *collb, 
const double *colub,
 
  929     const double *obj, 
const char *integrality,
 
  930     const double *rowlb, 
const double *rowub);
 
  933     const std::vector< std::string > &colnames,
 
  934     const std::vector< std::string > &rownames);
 
  937     char const *
const *
const colnames,
 
  938     char const *
const *
const rownames);
 
  953     char &sense, 
double &right, 
double &range) 
const;
 
  959     double &lower, 
double &upper) 
const;
 
  979   void addString(
int iRow, 
int iColumn, 
const char *value);
 
  981   void decodeString(
int iString, 
int &iRow, 
int &iColumn, 
const char *&value) 
const;
 
  991   void startHash(
char **names, 
const int number, 
int section);
 
  998   int findHash(
const char *name, 
int section) 
const;
 
 1137 void CoinConvertDouble(
int section, 
int formatType, 
double value, 
char outputValue[24]);
 
const char * getFileName() const 
Get the current file name for the CoinMpsIO object. 
 
int * modifiableWhich() const 
Returns modifiable list of variables. 
 
int isIntegerOrSemiContinuous(int columnNumber) const 
Return 1 if a column is an integer variable, 2 if semi-continuous. 
 
int ieeeFormat_
Whether IEEE - 0 no, 1 INTEL, 2 not INTEL. 
 
int numberStringElements_
Number of string elements. 
 
static void strcpyAndCompress(char *to, const char *from)
remove blanks 
 
double infinity_
Value to use for infinity. 
 
const double * getRightHandSide() const 
Get pointer to array[getNumRows()] of constraint right-hand sides. 
 
void setWhichSection(COINSectionType section)
Sets current section type. 
 
const char * rowName() const 
Returns row name of current field. 
 
int getDefaultBound() const 
Get default upper bound for integer variables. 
 
double * modifiableWeights() const 
Returns modifiable weights. 
 
CoinSet & operator=(const CoinSet &rhs)
Assignment operator. 
 
void setInfinity(double value)
Set infinity. 
 
CoinMessages * messagesPointer()
Return the messages pointer. 
 
int readConicMps(const char *filename, int *&columnStart, int *&column, int *&coneType, int &numberCones)
Read in a list of cones from the given filename. 
 
void releaseIntegerInformation()
Release integer information. 
 
double getSmallElementValue() const 
Small element value - elements less than this set to zero on input default is 1.0e-14. 
 
void releaseColumnInformation()
Release all column information (lower, upper, objective) 
 
CoinMessageHandler * handler_
Message handler. 
 
CoinBigIndex cardNumber() const 
Returns card number. 
 
void gutsOfDestructor()
Does the heavy lifting for destruct and assignment. 
 
void setPosition(char *position)
set position (again so gms reader will work) 
 
void setSetType(int type)
Sets type of set - 1 =SOS1, 2 =SOS2. 
 
int readQuadraticMps(const char *filename, CoinBigIndex *&columnStart, int *&column, double *&elements, int checkSymmetry)
Read in a quadratic objective from the given filename. 
 
char * integerType_
Pointer to dense vector specifying if a variable is continuous (0) or integer (1). 
 
const char * getRangeName() const 
Return the range vector name. 
 
void gutsOfCopy(const CoinMpsIO &)
Does the heavy lifting for copy and assignment. 
 
const double * getRowLower() const 
Get pointer to array[getNumRows()] of row lower bounds. 
 
int getNumCols() const 
Get number of columns. 
 
int readGms(const char *filename, const char *extension="gms", bool convertObjective=false)
Read a problem in GAMS format from the given filename. 
 
void CoinConvertDouble(int section, int formatType, double value, char outputValue[24])
 
void setNumberEntries(int number)
Sets number of entries. 
 
void setSmallElementValue(double value)
 
char * rowsense_
Pointer to dense vector of row sense indicators. 
 
int readGMPL(const char *modelName, const char *dataName=NULL, bool keepNames=false)
Read a problem in GMPL (subset of AMPL) format from the given filenames. 
 
int numberEntries() const 
Returns number of entries. 
 
char valueString_[COIN_MAX_FIELD_LENGTH]
Current element as characters (only if strings allowed) 
 
int readMps()
Read a problem in MPS format from a previously opened file. 
 
bool defaultHandler_
Flag to say if the message handler is the default handler. 
 
CoinSet()
Default constructor. 
 
int allowStringElements_
Whether to allow string elements. 
 
CoinFileInput * input_
File input. 
 
This is a simple minded model which is stored in a format which makes it easier to construct and modi...
 
void setConvertObjective(bool trueFalse)
Set whether to move objective from matrix. 
 
const CoinPackedMatrix * getMatrixByRow() const 
Get pointer to row-wise copy of the coefficient matrix. 
 
void releaseMatrixInformation()
Release matrix information. 
 
void convertSenseToBound(const char sense, const double right, const double range, double &lower, double &upper) const 
A quick inlined function to convert from sense/rhs/range stryle constraint definition to lb/ub style...
 
CoinMpsCardReader(CoinFileInput *input, CoinMpsIO *reader)
Constructor expects file to be open This one takes gzFile if fp null. 
 
void setMpsDataColAndRowNames(const std::vector< std::string > &colnames, const std::vector< std::string > &rownames)
 
bool freeFormat_
Whether free format. Just for blank RHS etc. 
 
char * fileName_
Current file name. 
 
CoinPackedMatrix * matrixByColumn_
Pointer to column-wise copy of problem matrix coefficients. 
 
Base class for message handling. 
 
virtual ~CoinSet()
Destructor. 
 
const double * weights() const 
Returns weights. 
 
int numberHash_[2]
Number of entries in a hash table section. 
 
void copyInIntegerInformation(const char *integerInformation)
Pass in an array[getNumCols()] specifying if a variable is integer. 
 
CoinMpsIO()
Default Constructor. 
 
COINSectionType section_
Which section we think we are in. 
 
const double * getColUpper() const 
Get pointer to array[getNumCols()] of column upper bounds. 
 
CoinSosSet(int numberEntries, const int *which, const double *weights, int type)
Constructor. 
 
int writeMps(const char *filename, int compression=0, int formatType=0, int numberAcross=2, CoinPackedMatrix *quadratic=NULL, int numberSOS=0, const CoinSet *setInfo=NULL) const 
Write the problem in MPS format to a file with the given filename. 
 
CoinMessageHandler * messageHandler() const 
Return the message handler. 
 
double * rowlower_
Pointer to dense vector of row lower bounds. 
 
const double * getColLower() const 
Get pointer to array[getNumCols()] of column lower bounds. 
 
void setFreeFormat(bool yesNo)
Sets whether free format. Mainly for blank RHS etc. 
 
CoinMpsIO * reader_
MpsIO. 
 
void releaseRedundantInformation()
Release all information which can be re-calculated. 
 
char ** names_[2]
Row and column names Linked to hash table sections (0 - row names, 1 column names) ...
 
double * objective_
Pointer to dense vector of objective coefficients. 
 
int copyStringElements(const CoinModel *model)
copies in strings from a CoinModel - returns number 
 
CoinMpsCardReader * cardReader_
Card reader. 
 
double * rhs_
Pointer to dense vector of row right-hand side values. 
 
bool stringsAllowed_
Whether strings allowed. 
 
This is a first attempt at a message handler. 
 
double * colupper_
Pointer to dense vector of column upper bounds. 
 
double osi_strtod(char *ptr, char **output, int type)
type - 0 normal, 1 INTEL IEEE, 2 other IEEE 
 
int defaultBound_
Upper bound when no bounds for integers. 
 
Very simple class for containing SOS set. 
 
void newLanguage(CoinMessages::Language language)
Set the language for messages. 
 
CoinBigIndex numberElements_
Number of coefficients. 
 
const char * rowName(int index) const 
Returns the row name for the specified index. 
 
friend void CoinMpsIOUnitTest(const std::string &mpsDir)
A function that tests the methods in the CoinMpsIO class. 
 
int numberEntries_
Number of entries. 
 
virtual ~CoinSosSet()
Destructor. 
 
const char * getRowSense() const 
Get pointer to array[getNumRows()] of constraint senses. 
 
const int * which() const 
Returns list of variables. 
 
char * objectiveName_
Objective row name. 
 
COINMpsType mpsType_
Current COINMpsType. 
 
#define COIN_MAX_FIELD_LENGTH
 
int * which_
Which variables are in set. 
 
CoinHashLink * hash_[2]
Hash tables (two sections, 0 - row names, 1 - column names) 
 
bool convertObjective_
If .gms file should it be massaged to move objective. 
 
int setType() const 
Returns type of set - 1 =SOS1, 2 =SOS2. 
 
int numberStringElements() const 
Number of string elements. 
 
const char * getObjectiveName() const 
Return the objective name. 
 
int maximumStringElements_
Maximum number of string elements. 
 
const CoinMpsCardReader * reader() const 
Return card reader object so can see what last card was e.g. QUADOBJ. 
 
void setLanguage(CoinMessages::Language language)
Set the language for messages. 
 
int dealWithFileName(const char *filename, const char *extension, CoinFileInput *&input)
Deal with a filename. 
 
void CoinMpsIOUnitTest(const std::string &mpsDir)
A function that tests the methods in the CoinMpsIO class. 
 
double value() const 
Returns value in current field. 
 
void freeAll()
Clears problem data from the CoinMpsIO object. 
 
char * position_
Current position within card image. 
 
int columnIndex(const char *name) const 
Returns the index for the specified column name. 
 
int cleanCard()
Reads and cleans card - taking out trailing blanks - return 1 if EOF. 
 
CoinMessages messages_
Messages. 
 
const char * getBoundName() const 
Return the bound vector name. 
 
char * getPosition() const 
get position (again so gms reader will work) 
 
bool eightChar_
If all names <= 8 characters then allow embedded blanks. 
 
bool isContinuous(int colNumber) const 
Return true if column is a continuous variable. 
 
bool freeFormat() const 
Sees if free format. 
 
double objectiveOffset_
Constant offset for objective value (i.e., RHS value for OBJ row) 
 
void setMpsDataWithoutRowAndColNames(const CoinPackedMatrix &m, const double infinity, const double *collb, const double *colub, const double *obj, const char *integrality, const double *rowlb, const double *rowub)
Utility method used several times to implement public methods. 
 
double * collower_
Pointer to dense vector of column lower bounds. 
 
CoinBigIndex getNumElements() const 
Get number of nonzero elements. 
 
Sparse Matrix Base Class. 
 
Very simple code for reading MPS data. 
 
double * rowrange_
Pointer to dense vector of slack variable upper bounds for range constraints (undefined for non-range...
 
CoinFileInput * fileInput() const 
Returns file input. 
 
char * rhsName_
Right-hand side vector name. 
 
void addString(int iRow, int iColumn, const char *value)
Add string to list iRow==numberRows is objective, nr+1 is lo, nr+2 is up iColumn==nc is rhs (can't co...
 
int nextGmsField(int expectedType)
Gets next field for .gms file and returns type. 
 
COINMpsType mpsType() const 
Only for first field on card otherwise BLANK_COLUMN e.g. 
 
void setAllowStringElements(int yesNo)
Whether to allow string elements (0 no, 1 yes, 2 yes and try flip) 
 
CoinPackedMatrix * matrixByRow_
Pointer to row-wise copy of problem matrix coefficients. 
 
int COINRowIndex
Large enough to contain row index (or basis) 
 
const char * columnName(int index) const 
Returns the column name for the specified index. 
 
Language
Supported languages. 
 
double * weights_
Weights. 
 
const double * getObjCoefficients() const 
Get pointer to array[getNumCols()] of objective function coefficients. 
 
const char * card() const 
Whole card (for printing) 
 
const char * valueString() const 
Returns value as string in current field. 
 
COINSectionType readToNextSection()
Read to next section. 
 
char * mutableCard()
Whole card - so we look at it (not const so nextBlankOr will work for gms reader) ...
 
char card_[MAX_CARD_LENGTH]
Current card image. 
 
void stopHash(int section)
Deletes hash storage. 
 
double smallElement_
Small element value. 
 
bool isInteger(int columnNumber) const 
Return true if a column is an integer variable. 
 
const char * getRhsName() const 
Return the RHS vector name. 
 
double * rowupper_
Pointer to dense vector of row upper bounds. 
 
char * rangeName_
Range vector name. 
 
char rowName_[COIN_MAX_FIELD_LENGTH]
Current row name. 
 
void releaseRowInformation()
Release all row information (lower, upper) 
 
const char * getProblemName() const 
Return the problem name. 
 
CoinMessageHandler * handler_
Message handler. 
 
int numberColumns_
Number of columns. 
 
void setFileName(const char *name)
Set the current file name for the CoinMpsIO object. 
 
int findHash(const char *name, int section) const 
Finds match using hash, -1 not found. 
 
COINSectionType nextField()
Gets next field and returns section type e.g. COIN_COLUMN_SECTION. 
 
int allowStringElements() const 
Whether to allow string elements. 
 
void setObjectiveOffset(double value)
Set objective offset. 
 
const CoinPackedMatrix * getMatrixByCol() const 
Get pointer to column-wise copy of the coefficient matrix. 
 
void passInMessageHandler(CoinMessageHandler *handler)
Pass in Message handler. 
 
double value_
Current value. 
 
double getInfinity() const 
Get infinity. 
 
void startHash(char **names, const int number, int section)
Creates hash list for names (section = 0 for rows, 1 columns) 
 
static char * nextBlankOr(char *image)
 
int getNumRows() const 
Get number of rows. 
 
void setStringsAllowed()
Sets whether strings allowed. 
 
const char * columnName() const 
Returns column name of current field. 
 
CoinMessages messages()
Return the messages. 
 
char * boundName_
Bounds vector name. 
 
void releaseColumnNames()
Release column names. 
 
char columnName_[COIN_MAX_FIELD_LENGTH]
Current column name. 
 
CoinMessages messages_
Messages. 
 
int numberRows_
Number of rows. 
 
const double * getRowRange() const 
Get pointer to array[getNumRows()] of row ranges. 
 
const char * stringElement(int i) const 
String element. 
 
int readBasis(const char *filename, const char *extension, double *solution, unsigned char *rowStatus, unsigned char *columnStatus, const std::vector< std::string > &colnames, int numberColumns, const std::vector< std::string > &rownames, int numberRows)
Read a basis in MPS format from the given filename. 
 
COINSectionType whichSection() const 
Returns current section type. 
 
const char * integerColumns() const 
Returns array[getNumCols()] specifying if a variable is integer. 
 
void releaseRowNames()
Release row names. 
 
CoinBigIndex cardNumber_
Card number. 
 
void convertBoundToSense(const double lower, const double upper, char &sense, double &right, double &range) const 
A quick inlined function to convert from lb/ub style constraint definition to sense/rhs/range style...
 
~CoinMpsCardReader()
Destructor. 
 
int rowIndex(const char *name) const 
Returns the index for the specified row name. 
 
char * problemName_
Problem name. 
 
Class to hold and manipulate an array of massaged messages. 
 
void setMpsData(const CoinPackedMatrix &m, const double infinity, const double *collb, const double *colub, const double *obj, const char *integrality, const double *rowlb, const double *rowub, char const *const *const colnames, char const *const *const rownames)
Set the problem data. 
 
void setObjectiveName(const char *name)
Set objective name. 
 
void setDefaultBound(int value)
Set default upper bound for integer variables. 
 
Very simple class for containing data on set. 
 
char ** stringElements_
String elements. 
 
void setProblemName(const char *name)
Set problem name. 
 
double objectiveOffset() const 
Returns the (constant) objective offset. 
 
void decodeString(int iString, int &iRow, int &iColumn, const char *&value) const 
Decode string. 
 
CoinMpsIO & operator=(const CoinMpsIO &rhs)
Assignment operator. 
 
const double * getRowUpper() const 
Get pointer to array[getNumRows()] of row upper bounds.