Go to the documentation of this file.
144 char &sense,
double &right,
double &range)
const;
241 int *card_prev)
const;
248 int *card_prev)
const;
352 const double *collb,
const double *colub,
353 const double *obj_coeff,
354 const char *integrality,
355 const double *rowlb,
const double *rowub);
359 const double *collb,
const double *colub,
362 const char *integrality,
363 const double *rowlb,
const double *rowub);
396 const int card_vnames,
397 const bool check_ranged)
const;
426 char const *
const *
const colnames);
443 const double epsilon,
444 const int numberAcross,
446 const bool useRowNames =
true);
463 const double epsilon,
464 const int numberAcross,
466 const bool useRowNames =
true);
470 int writeLp(
const char *filename,
const bool useRowNames =
true);
474 int writeLp(FILE *fp,
const bool useRowNames =
true);
480 void readLp(
const char *filename,
const double epsilon);
493 void readLp(FILE *fp,
const double epsilon);
779 char **obj_name,
int *num_objectives,
int *obj_starts);
786 int cnt_coeff)
const;
793 double **rowlow,
double **rowup,
int *maxrow)
const;
800 void read_row(
char *buff,
double **pcoeff,
char ***pcolNames,
801 int *cnt_coeff,
int *maxcoeff,
802 double *rhs,
double *rowlow,
double *rowup,
803 int *cnt_row,
double inf)
const;
void CoinLpIOUnitTest(const std::string &lpDir)
const double * getRightHandSide() const
Get pointer to array[getNumRows()] of constraint right-hand sides.
void setLanguage(CoinMessages::Language language)
Set the language for messages.
void insertHash(const char *thisName, int section)
Insert thisName in the hash table if not present yet; does nothing if the name is already in.
char ** names_[2]
Row names (including objective function name) and column names (linked to Hash tables).
void getPreviousRowNames(char const *const *prev, int *card_prev) const
Get pointer to array[*card_prev] of previous row names.
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.
char * integerType_
Pointer to dense vector specifying if a variable is continuous (0) or integer (1).
double * collower_
Pointer to dense vector of column lower bounds.
int is_free(const char *buff) const
Return 1 if buff is the keyword "free" or one of its variants.
const char * getRowSense() const
Get pointer to array[getNumRows()] of constraint senses.
int numberAcross_
Number of monomials printed in a row.
int read_monom_row(char *start_str, double *coeff, char **name, int cnt_coeff) const
Read a monomial of a constraint.
char * fileName_
Current file name.
const char * getObjName() const
Get objective function name.
int maxHash_[2]
Maximum number of entries in a hash table section.
double * rowlower_
Pointer to dense vector of row lower bounds.
CoinMessageHandler * messageHandler() const
Return the message handler.
const double * getColLower() const
Get pointer to array[getNumCols()] of column lower bounds.
const CoinPackedMatrix * getMatrixByRow() const
Get pointer to row-wise copy of the coefficient matrix.
CoinSet ** set_
Pointer to sets.
int bufferLength_
Current buffer length (negative if not got eol)
void print() const
Dump the data. Low level method for debugging.
void loadSOS(int numberSets, const CoinSet *sets)
Load in SOS stuff.
int numberSets_
Number of sets.
double objectiveOffset_[MAX_OBJECTIVES]
Constant offset for objective value.
void setNumberAcross(const int)
Set numberAcross.
void setLpDataRowAndColNames(char const *const *const rownames, char const *const *const colnames)
Set the row and column names.
const CoinPackedMatrix * getMatrixByCol() const
Get pointer to column-wise copy of the coefficient matrix.
int rowIndex(const char *name) const
Return the index for the specified row name.
void passInMessageHandler(CoinMessageHandler *handler)
Pass in Message handler.
Class to hold and manipulate an array of massaged messages.
const double * getObjCoefficients(int j) const
Get pointer to array[getNumCols()] of objective function coefficients for objective j.
int card_previous_names_[2]
card_previous_names_[section] holds the number of entries in the vector previous_names_[section].
char * rowsense_
Pointer to dense vector of row senses.
int writeLp(FILE *fp, const double epsilon, const int numberAcross, const int decimals, const bool useRowNames=true)
Write the data in Lp format in the file pointed to by the paramater fp.
int read_monom_obj(double *coeff, char **name, int *cnt, char **obj_name, int *num_objectives, int *obj_starts)
Read a monomial of the objective function.
double getEpsilon() const
Get epsilon.
void realloc_row(char ***rowNames, CoinBigIndex **start, double **rhs, double **rowlow, double **rowup, int *maxrow) const
Reallocate vectors related to rows.
CoinLpIO & operator=(const CoinLpIO &rhs)
assignment operator
const double * getRowRange() const
Get pointer to array[getNumRows()] of row ranges.
int fscanfLpIO(char *buff) const
Get next string (returns number in)
double * objective_[MAX_OBJECTIVES]
Pointer to dense vector of objective coefficients.
int bufferPosition_
Current buffer position.
int is_comment(const char *buff) const
Return 1 if the first character of buff is '/' or '\'.
COINColumnIndex findHash(const char *name, int section) const
Return the index of the given name, return -1 if the name is not found.
friend void CoinLpIOUnitTest(const std::string &lpDir)
void setObjectiveOffset(double value, int j)
Set objective offset.
double objectiveOffset() const
Returns the (constant) objective offset.
int writeLp(FILE *fp, const bool useRowNames=true)
Write the data in Lp format in the file pointed to by the parameter fp.
void stopHash(int section)
Delete hash storage.
CoinBigIndex numberElements_
Number of elements.
void setDefaultColNames()
Set column names to the default "x0", "x1", ...
void setLpDataWithoutRowAndColNames(const CoinPackedMatrix &m, const double *collb, const double *colub, const double *obj_coeff, const char *integrality, const double *rowlb, const double *rowub)
Set the data of the object.
bool defaultHandler_
Flag to say if the message handler is the default handler.
int writeLp(const char *filename, const double epsilon, const int numberAcross, const int decimals, const bool useRowNames=true)
Write the data in Lp format in the file with name filename.
bool isInteger(int columnNumber) const
Return true if a column is an integer (binary or general integer) variable.
CoinSet ** setInformation() const
Set information.
void freeAll()
Free all memory (except memory related to hash tables and objName_).
int numberColumns_
Number of columns.
int is_sense(const char *buff) const
Return an integer indicating the inequality sense read.
void readLp(FILE *fp, const double epsilon)
Read the data in Lp format from the file stream, using the given value for epsilon.
void gutsOfDestructor()
Does the heavy lifting for destruct and assignment.
int getNumRows() const
Get number of rows.
const double * getObjCoefficients() const
Get pointer to array[getNumCols()] of objective function coefficients.
int numberSets() const
Number of SOS sets.
const char * getProblemName() const
Get the problem name.
void gutsOfCopy(const CoinLpIO &)
Does the heavy lifting for copy and assignment.
const char * integerColumns() const
Get characteristic vector of integer variables.
int getNumberAcross() const
Get numberAcross, the number of monomials to be printed per line.
double * rhs_
Pointer to dense vector of row rhs.
Base class for message handling.
const char * getObjName(int j) const
Get objective function name for objective j.
void skip_comment(char *buff) const
Read the file fp until buff contains an end of line.
const double * getRowUpper() const
Get pointer to array[getNumRows()] of row upper bounds.
int writeLp(const char *filename, const bool useRowNames=true)
Write the data in Lp format in the file with name filename.
void out_coeff(FILE *fp, double v, int print_1) const
Write a coefficient.
Very simple class for containing data on set.
void setDecimals(const int)
Set decimals.
const int getNumObjectives() const
Get pointer to array[getNumCols()] of objective function coefficients.
CoinPackedMatrix * matrixByRow_
Pointer to row-wise copy of problem matrix coefficients.
int getNumCols() const
Get number of columns.
void freePreviousNames(const int section)
Free the vector previous_names_[section] and set card_previous_names_[section] to 0.
int are_invalid_names(char const *const *vnames, const int card_vnames, const bool check_ranged) const
Return 0 if each of the card_vnames entries of vnames is a valid name, return a positive number other...
void setEpsilon(const double)
Set epsilon.
int is_keyword(const char *buff) const
Return an integer indicating if one of the keywords "Bounds", "Integers", "Generals",...
bool wasMaximization_
Maximization reformulation flag.
double * rowupper_
Pointer to dense vector of row upper bounds.
void setProblemName(const char *name)
Set problem name.
int is_subject_to(const char *buff) const
Return an integer indicating if the keyword "subject to" or one of its variants has been read.
int first_is_number(const char *buff) const
Return 1 if the first character of buff is a number.
Sparse Matrix Base Class.
void read_row(char *buff, double **pcoeff, char ***pcolNames, int *cnt_coeff, int *maxcoeff, double *rhs, double *rowlow, double *rowup, int *cnt_row, double inf) const
Read a constraint.
const char * rowName(int index) const
Return the row name for the specified index.
const double * getRowLower() const
Get pointer to array[getNumRows()] of row lower bounds.
int numberRows_
Number of rows.
char * problemName_
Problem name.
int columnIndex(const char *name) const
Return the index for the specified column name.
void loadSOS(int numberSets, const CoinSet **sets)
Load in SOS stuff.
const char * columnName(int index) const
Return the column name for the specified index.
bool wasMaximization() const
Return true if maximization problem reformulated as minimization.
CoinMessages messages()
Return the messages.
void readLp(const char *filename)
Read the data in Lp format from the file with name filename.
void checkColNames()
Check that current column names are distinct.
void getPreviousColNames(char const *const *prev, int *card_prev) const
Get pointer to array[*card_prev] of previous column names.
CoinLpIO()
Default Constructor.
char ** previous_names_[2]
Row names (including objective function name) and column names when stopHash() for the corresponding ...
char inputBuffer_[1028]
Current buffer (needed so can get rid of blanks with :
void realloc_coeff(double **coeff, char ***colNames, int *maxcoeff) const
Reallocate vectors related to number of coefficients.
double infinity_
Value to use for infinity.
CoinMessageHandler * handler_
Message handler.
int is_invalid_name(const char *buff, const bool ranged) const
Return 0 if buff is a valid name for a row, a column or objective function, return a positive number ...
int numberHash_[2]
Number of entries in a hash table section.
CoinLpIO(const CoinLpIO &)
Copy constructor.
double objectiveOffset(int j) const
Returns the (constant) objective offset for objective j.
int num_objectives_
Number of objectives.
int getDecimals() const
Get decimals, the number of digits to write after the decimal point.
bool eofFound_
If already inserted one End.
char const *const * getColNames() const
Get pointer to array[getNumCols()] of column names.
char const *const * getRowNames() const
Get pointer to array[getNumRows()+1] of row names, including objective function name as last entry.
CoinMessages * messagesPointer()
Return the messages pointer.
void startHash(char const *const *const names, const COINColumnIndex number, int section)
Build the hash table for the given names.
int newCardLpIO() const
Get next line into inputBuffer_ (returns number in)
Class to read and write Lp files.
int is_inf(const char *buff) const
Return 1 if buff is the keyword "inf" or one of its variants.
void setDefaultRowNames()
Set objective function name to the default "obj" and row names to the default "cons0",...
double * colupper_
Pointer to dense vector of column upper bounds.
CoinFileInput * input_
File handler.
void realloc_col(double **collow, double **colup, char **is_int, int *maxcol) const
Reallocate vectors related to columns.
const double * getColUpper() const
Get pointer to array[getNumCols()] of column upper bounds.
void setLpDataWithoutRowAndColNames(const CoinPackedMatrix &m, const double *collb, const double *colub, const double *obj_coeff[MAX_OBJECTIVES], int num_objectives, const char *integrality, const double *rowlb, const double *rowub)
void setInfinity(const double)
Set infinity.
char * objName_[MAX_OBJECTIVES]
Objective function name.
CoinBigIndex getNumElements() const
Get number of nonzero elements.
double * rowrange_
Pointer to dense vector of slack variable upper bounds for ranged constraints (undefined for non-rang...
Language
Supported languages.
int find_obj() const
Locate the objective function.
void readLp(FILE *fp)
Read the data in Lp format from the file stream.
void readLp()
Does work of readLp.
void readLp(const char *filename, const double epsilon)
Read the data in Lp format from the file with name filename, using the given value for epsilon.
void newLanguage(CoinMessages::Language language)
Set the language for messages.
void setObjectiveOffset(double value)
Set objective offset.
double epsilon_
Value to use for epsilon.
CoinHashLink * hash_[2]
Hash tables with two sections.
int decimals_
Number of decimals printed for coefficients.
void checkRowNames()
Check that current objective name and all row names are distinct including row names obtained by addi...
CoinMessages messages_
Messages.
CoinPackedMatrix * matrixByColumn_
Pointer to column-wise copy of problem matrix coefficients.
double getInfinity() const
Get infinity.