143 char& sense,
double& right,
double& range)
const;
240 int *card_prev)
const;
247 int *card_prev)
const;
259 const char *
rowName(
int index)
const;
269 int rowIndex(
const char * name)
const;
342 const double* collb,
const double* colub,
343 const double* obj_coeff,
344 const char* integrality,
345 const double* rowlb,
const double* rowub);
349 const double* collb,
const double* colub,
352 const char* integrality,
353 const double* rowlb,
const double* rowub);
386 const int card_vnames,
387 const bool check_ranged)
const;
416 char const *
const *
const colnames);
432 int writeLp(
const char *filename,
433 const double epsilon,
434 const int numberAcross,
436 const bool useRowNames =
true);
453 const double epsilon,
454 const int numberAcross,
456 const bool useRowNames =
true);
460 int writeLp(
const char *filename,
const bool useRowNames =
true);
464 int writeLp(FILE *fp,
const bool useRowNames =
true);
470 void readLp(
const char *filename,
const double epsilon);
476 void readLp(
const char *filename);
483 void readLp(FILE *fp,
const double epsilon);
666 void startHash(
char const *
const *
const names,
685 void insertHash(
const char *thisName,
int section);
689 void out_coeff(FILE *fp,
double v,
int print_1)
const;
715 void scan_next(
char *buff, FILE *fp)
const;
719 int is_free(
const char *buff)
const;
723 int is_inf(
const char *buff)
const;
730 int is_sense(
const char *buff)
const;
747 int read_monom_obj(FILE *fp,
double *coeff,
char **name,
int *cnt,
748 char **obj_name,
int *num_objectives,
int *obj_starts);
754 int read_monom_row(FILE *fp,
char *start_str,
double *coeff,
char **name,
755 int cnt_coeff)
const;
758 void realloc_coeff(
double **coeff,
char ***colNames,
int *maxcoeff)
const;
761 void realloc_row(
char ***rowNames,
int **start,
double **rhs,
762 double **rowlow,
double **rowup,
int *maxrow)
const;
765 void realloc_col(
double **collow,
double **colup,
char **is_int,
769 void read_row(FILE *fp,
char *buff,
double **pcoeff,
char ***pcolNames,
770 int *cnt_coeff,
int *maxcoeff,
771 double *rhs,
double *rowlow,
double *rowup,
772 int *cnt_row,
double inf)
const;
void read_row(FILE *fp, 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.
CoinMessages * messagesPointer()
Return the messages pointer.
char ** previous_names_[2]
Row names (including objective function name) and column names when stopHash() for the corresponding ...
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 * objName_[MAX_OBJECTIVES]
Objective function name.
const char * integerColumns() const
Get characteristic vector of integer variables.
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.
int numberSets_
Number of sets.
void setDecimals(const int)
Set decimals.
int first_is_number(const char *buff) const
Return 1 if the first character of buff is a number.
double objectiveOffset() const
Returns the (constant) objective offset.
void skip_comment(char *buff, FILE *fp) const
Read the file fp until buff contains an end of line.
CoinLpIO()
Default Constructor.
double * objective_[MAX_OBJECTIVES]
Pointer to dense vector of objective coefficients.
void loadSOS(int numberSets, const CoinSet *sets)
Load in SOS stuff.
Base class for message handling.
const char * rowName(int index) const
Return the row name for the specified index.
void scan_next(char *buff, FILE *fp) const
Put in buff the next string that is not part of a comment.
COINColumnIndex findHash(const char *name, int section) const
Return the index of the given name, return -1 if the name is not found.
int is_comment(const char *buff) const
Return 1 if the first character of buff is '/' or '\'.
int numberColumns_
Number of columns.
Class to read and write Lp files.
int numberElements_
Number of elements.
int numberSets() const
Number of SOS sets.
void CoinLpIOUnitTest(const std::string &lpDir)
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.
CoinSet ** setInformation() const
Set information.
void setEpsilon(const double)
Set epsilon.
char ** names_[2]
Row names (including objective function name) and column names (linked to Hash tables).
double * rowlower_
Pointer to dense vector of row lower bounds.
void getPreviousRowNames(char const *const *prev, int *card_prev) const
Get pointer to array[*card_prev] of previous row names.
char * problemName_
Problem name.
int getNumCols() const
Get number of columns.
void setDefaultRowNames()
Set objective function name to the default "obj" and row names to the default "cons0", "cons1", ...
CoinMessages messages_
Messages.
void passInMessageHandler(CoinMessageHandler *handler)
Pass in Message handler.
char * integerType_
Pointer to dense vector specifying if a variable is continuous (0) or integer (1).
void out_coeff(FILE *fp, double v, int print_1) const
Write a coefficient.
void setObjectiveOffset(double value, int j)
Set objective offset.
double * rowrange_
Pointer to dense vector of slack variable upper bounds for ranged constraints (undefined for non-rang...
const double * getRowRange() const
Get pointer to array[getNumRows()] of row ranges.
int read_monom_row(FILE *fp, char *start_str, double *coeff, char **name, int cnt_coeff) const
Read a monomial of a constraint.
char * rowsense_
Pointer to dense vector of row senses.
int getNumberAcross() const
Get numberAcross, the number of monomials to be printed per line.
Sparse Matrix Base Class.
void gutsOfCopy(const CoinLpIO &)
Does the heavy lifting for copy and assignment.
CoinMessageHandler * messageHandler() const
Return the message handler.
int numberRows_
Number of rows.
char * fileName_
Current file name.
int maxHash_[2]
Maximum number of entries in a hash table section.
double * rhs_
Pointer to dense vector of row rhs.
CoinMessages messages()
Return the messages.
double objectiveOffset_[MAX_OBJECTIVES]
Constant offset for objective value.
int rowIndex(const char *name) const
Return the index for the specified row name.
double infinity_
Value to use for infinity.
CoinPackedMatrix * matrixByColumn_
Pointer to column-wise copy of problem matrix coefficients.
void setLpDataRowAndColNames(char const *const *const rownames, char const *const *const colnames)
Set the row and column names.
char const *const * getColNames() const
Get pointer to array[getNumCols()] of column names.
friend void CoinLpIOUnitTest(const std::string &lpDir)
bool isInteger(int columnNumber) const
Return true if a column is an integer (binary or general integer) variable.
const double * getObjCoefficients() const
Get pointer to array[getNumCols()] of objective function coefficients.
int num_objectives_
Number of objectives.
void newLanguage(CoinMessages::Language language)
Set the language for messages.
CoinHashLink * hash_[2]
Hash tables with two sections.
const double * getColUpper() const
Get pointer to array[getNumCols()] of column upper bounds.
void startHash(char const *const *const names, const COINColumnIndex number, int section)
Build the hash table for the given names.
Very simple class for containing data on set.
void checkColNames()
Check that current column names are distinct.
const char * getProblemName() const
Get the problem name.
int numberAcross_
Number of monomials printed in a row.
void getPreviousColNames(char const *const *prev, int *card_prev) const
Get pointer to array[*card_prev] of previous column names.
int find_obj(FILE *fp) const
Locate the objective function.
void setLanguage(CoinMessages::Language language)
Set the language for messages.
int columnIndex(const char *name) const
Return the index for the specified column name.
int is_free(const char *buff) const
Return 1 if buff is the keyword "free" or one of its variants.
int getDecimals() const
Get decimals, the number of digits to write after the decimal point.
int numberHash_[2]
Number of entries in a hash table section.
void stopHash(int section)
Delete hash storage.
double * rowupper_
Pointer to dense vector of row upper bounds.
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...
const double * getRowLower() const
Get pointer to array[getNumRows()] of row lower bounds.
int read_monom_obj(FILE *fp, double *coeff, char **name, int *cnt, char **obj_name, int *num_objectives, int *obj_starts)
Read a monomial of the objective function.
void setNumberAcross(const int)
Set numberAcross.
const double * getRowUpper() const
Get pointer to array[getNumRows()] of row upper bounds.
void freePreviousNames(const int section)
Free the vector previous_names_[section] and set card_previous_names_[section] to 0...
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...
double getInfinity() const
Get infinity.
Class to hold and manipulate an array of massaged messages.
double * collower_
Pointer to dense vector of column lower bounds.
const CoinPackedMatrix * getMatrixByRow() const
Get pointer to row-wise copy of the coefficient matrix.
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...
bool defaultHandler_
Flag to say if the message handler is the default handler.
const int getNumObjectives() const
Get pointer to array[getNumCols()] of objective function coefficients.
void gutsOfDestructor()
Does the heavy lifting for destruct and assignment.
void realloc_col(double **collow, double **colup, char **is_int, int *maxcol) const
Reallocate vectors related to columns.
char const *const * getRowNames() const
Get pointer to array[getNumRows()+1] of row names, including objective function name as last entry...
double getEpsilon() const
Get epsilon.
int is_inf(const char *buff) const
Return 1 if buff is the keyword "inf" or one of its variants.
CoinPackedMatrix * matrixByRow_
Pointer to row-wise copy of problem matrix coefficients.
void setObjectiveOffset(double value)
Set objective offset.
void realloc_row(char ***rowNames, int **start, double **rhs, double **rowlow, double **rowup, int *maxrow) const
Reallocate vectors related to rows.
CoinMessageHandler * handler_
Message handler.
double * colupper_
Pointer to dense vector of column upper bounds.
int getNumElements() const
Get number of nonzero elements.
const char * getObjName() const
Get objective function name.
int decimals_
Number of decimals printed for coefficients.
CoinLpIO & operator=(const CoinLpIO &rhs)
assignment operator
int is_sense(const char *buff) const
Return an integer indicating the inequality sense read.
double epsilon_
Value to use for epsilon.
const char * columnName(int index) const
Return the column name for the specified index.
void freeAll()
Free all memory (except memory related to hash tables and objName_).
void realloc_coeff(double **coeff, char ***colNames, int *maxcoeff) const
Reallocate vectors related to number of coefficients.
int is_keyword(const char *buff) const
Return an integer indicating if one of the keywords "Bounds", "Integers", "Generals", "Binaries", "Semi-continuous", "Sos", "End", or one of their variants has been read.
void setInfinity(const double)
Set infinity.
void checkRowNames()
Check that current objective name and all row names are distinct including row names obtained by addi...
const double * getColLower() const
Get pointer to array[getNumCols()] of column lower bounds.
Language
Supported languages.
const char * getRowSense() const
Get pointer to array[getNumRows()] of constraint senses.
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 setProblemName(const char *name)
Set problem name.
int card_previous_names_[2]
card_previous_names_[section] holds the number of entries in the vector previous_names_[section].
const CoinPackedMatrix * getMatrixByCol() const
Get pointer to column-wise copy of the coefficient matrix.
int getNumRows() const
Get number of rows.
void print() const
Dump the data. Low level method for debugging.
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 ...
void setDefaultColNames()
Set column names to the default "x0", "x1", ...
CoinSet ** set_
Pointer to sets.
const double * getRightHandSide() const
Get pointer to array[getNumRows()] of constraint right-hand sides.