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.