144 char &sense,
double &right,
double &range)
const;
241 int *card_prev)
const;
248 int *card_prev)
const;
260 const char *
rowName(
int index)
const;
270 int rowIndex(
const char *name)
const;
347 const double *collb,
const double *colub,
348 const double *obj_coeff,
349 const char *integrality,
350 const double *rowlb,
const double *rowub);
354 const double *collb,
const double *colub,
357 const char *integrality,
358 const double *rowlb,
const double *rowub);
391 const int card_vnames,
392 const bool check_ranged)
const;
421 char const *
const *
const colnames);
437 int writeLp(
const char *filename,
438 const double epsilon,
439 const int numberAcross,
441 const bool useRowNames =
true);
458 const double epsilon,
459 const int numberAcross,
461 const bool useRowNames =
true);
465 int writeLp(
const char *filename,
const bool useRowNames =
true);
469 int writeLp(FILE *fp,
const bool useRowNames =
true);
475 void readLp(
const char *filename,
const double epsilon);
481 void readLp(
const char *filename);
488 void readLp(FILE *fp,
const double epsilon);
692 void startHash(
char const *
const *
const names,
711 void insertHash(
const char *thisName,
int section);
715 void out_coeff(FILE *fp,
double v,
int print_1)
const;
742 int is_free(
const char *buff)
const;
746 int is_inf(
const char *buff)
const;
753 int is_sense(
const char *buff)
const;
771 char **obj_name,
int *num_objectives,
int *obj_starts);
778 int cnt_coeff)
const;
781 void realloc_coeff(
double **coeff,
char ***colNames,
int *maxcoeff)
const;
785 double **rowlow,
double **rowup,
int *maxrow)
const;
788 void realloc_col(
double **collow,
double **colup,
char **is_int,
792 void read_row(
char *buff,
double **pcoeff,
char ***pcolNames,
793 int *cnt_coeff,
int *maxcoeff,
794 double *rhs,
double *rowlow,
double *rowup,
795 int *cnt_row,
double inf)
const;
void getPreviousColNames(char const *const *prev, int *card_prev) const
Get pointer to array[*card_prev] of previous column names.
double * rowrange_
Pointer to dense vector of slack variable upper bounds for ranged constraints (undefined for non-rang...
int newCardLpIO() const
Get next line into inputBuffer_ (returns number in)
const CoinPackedMatrix * getMatrixByRow() const
Get pointer to row-wise copy of the coefficient matrix.
char * rowsense_
Pointer to dense vector of row senses.
CoinBigIndex getNumElements() const
Get number of nonzero elements.
void print() const
Dump the data. Low level method for debugging.
char const *const * getRowNames() const
Get pointer to array[getNumRows()+1] of row names, including objective function name as last entry...
int getNumRows() const
Get number of rows.
double * colupper_
Pointer to dense vector of column upper bounds.
COINColumnIndex findHash(const char *name, int section) const
Return the index of the given name, return -1 if the name is not found.
CoinBigIndex numberElements_
Number of elements.
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 * rowlower_
Pointer to dense vector of row lower bounds.
void setEpsilon(const double)
Set epsilon.
void setProblemName(const char *name)
Set problem name.
void setInfinity(const double)
Set infinity.
bool eofFound_
If already inserted one End.
CoinLpIO & operator=(const CoinLpIO &rhs)
assignment operator
char ** previous_names_[2]
Row names (including objective function name) and column names when stopHash() for the corresponding ...
void readLp()
Does work of readLp.
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...
int read_monom_row(char *start_str, double *coeff, char **name, int cnt_coeff) const
Read a monomial of a constraint.
void stopHash(int section)
Delete hash storage.
char const *const * getColNames() const
Get pointer to array[getNumCols()] of column names.
int num_objectives_
Number of objectives.
const char * integerColumns() const
Get characteristic vector of integer variables.
double getEpsilon() const
Get epsilon.
const char * rowName(int index) const
Return the row name for the specified index.
const double * getRowRange() const
Get pointer to array[getNumRows()] of row ranges.
CoinMessages * messagesPointer()
Return the messages pointer.
int bufferPosition_
Current buffer position.
bool isInteger(int columnNumber) const
Return true if a column is an integer (binary or general integer) variable.
CoinPackedMatrix * matrixByRow_
Pointer to row-wise copy of problem matrix coefficients.
CoinLpIO()
Default Constructor.
int decimals_
Number of decimals printed for coefficients.
CoinFileInput * input_
File handler.
void skip_comment(char *buff) const
Read the file fp until buff contains an end of line.
int numberHash_[2]
Number of entries in a hash table section.
int getNumberAcross() const
Get numberAcross, the number of monomials to be printed per line.
int is_comment(const char *buff) const
Return 1 if the first character of buff is '/' or '\'.
const char * getObjName() const
Get objective function name.
int numberColumns_
Number of columns.
void CoinLpIOUnitTest(const std::string &lpDir)
const double * getColUpper() const
Get pointer to array[getNumCols()] of column upper bounds.
Base class for message handling.
void realloc_row(char ***rowNames, CoinBigIndex **start, double **rhs, double **rowlow, double **rowup, int *maxrow) const
Reallocate vectors related to rows.
void setDefaultRowNames()
Set objective function name to the default "obj" and row names to the default "cons0", "cons1", ...
int getNumCols() const
Get number of columns.
int getDecimals() const
Get decimals, the number of digits to write after the decimal point.
CoinHashLink * hash_[2]
Hash tables with two sections.
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...
CoinMessageHandler * handler_
Message handler.
char * problemName_
Problem name.
char ** names_[2]
Row names (including objective function name) and column names (linked to Hash tables).
double epsilon_
Value to use for epsilon.
int is_free(const char *buff) const
Return 1 if buff is the keyword "free" or one of its variants.
const CoinPackedMatrix * getMatrixByCol() const
Get pointer to column-wise copy of the coefficient matrix.
void setLpDataRowAndColNames(char const *const *const rownames, char const *const *const colnames)
Set the row and column names.
double infinity_
Value to use for infinity.
char inputBuffer_[1028]
Current buffer (needed so can get rid of blanks with :
const char * getProblemName() const
Get the problem name.
void checkRowNames()
Check that current objective name and all row names are distinct including row names obtained by addi...
void setLanguage(CoinMessages::Language language)
Set the language for messages.
char * objName_[MAX_OBJECTIVES]
Objective function name.
int is_inf(const char *buff) const
Return 1 if buff is the keyword "inf" or one of its variants.
char * integerType_
Pointer to dense vector specifying if a variable is continuous (0) or integer (1).
int numberSets() const
Number of SOS sets.
void startHash(char const *const *const names, const COINColumnIndex number, int section)
Build the hash table for the given names.
int card_previous_names_[2]
card_previous_names_[section] holds the number of entries in the vector previous_names_[section].
char * fileName_
Current file name.
CoinPackedMatrix * matrixByColumn_
Pointer to column-wise copy of problem matrix coefficients.
void newLanguage(CoinMessages::Language language)
Set the language for messages.
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 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.
int numberAcross_
Number of monomials printed in a row.
const double * getColLower() const
Get pointer to array[getNumCols()] of column lower bounds.
int first_is_number(const char *buff) const
Return 1 if the first character of buff is a number.
void gutsOfCopy(const CoinLpIO &)
Does the heavy lifting for copy and assignment.
int bufferLength_
Current buffer length (negative if not got eol)
CoinSet ** set_
Pointer to sets.
CoinMessages messages_
Messages.
double getInfinity() const
Get infinity.
const int getNumObjectives() const
Get pointer to array[getNumCols()] of objective function coefficients.
const char * getRowSense() const
Get pointer to array[getNumRows()] of constraint senses.
int columnIndex(const char *name) const
Return the index for the specified column name.
double objectiveOffset_[MAX_OBJECTIVES]
Constant offset for objective value.
double * objective_[MAX_OBJECTIVES]
Pointer to dense vector of objective coefficients.
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...
Sparse Matrix Base Class.
void getPreviousRowNames(char const *const *prev, int *card_prev) const
Get pointer to array[*card_prev] of previous row names.
const char * columnName(int index) const
Return the column name for the specified index.
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...
Language
Supported languages.
const double * getRowUpper() const
Get pointer to array[getNumRows()] of row upper bounds.
void setObjectiveOffset(double value)
Set objective offset.
int rowIndex(const char *name) const
Return the index for the specified row name.
void setObjectiveOffset(double value, int j)
Set objective offset.
CoinMessageHandler * messageHandler() const
Return the message handler.
void out_coeff(FILE *fp, double v, int print_1) const
Write a coefficient.
int numberSets_
Number of sets.
const double * getRowLower() const
Get pointer to array[getNumRows()] of row lower bounds.
double objectiveOffset() const
Returns the (constant) objective offset.
double * rhs_
Pointer to dense vector of row rhs.
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 double * getRightHandSide() const
Get pointer to array[getNumRows()] of constraint right-hand sides.
void loadSOS(int numberSets, const CoinSet *sets)
Load in SOS stuff.
void setDefaultColNames()
Set column names to the default "x0", "x1", ...
This file contains the enum for the standard set of Coin messages and a class definition whose sole p...
double * collower_
Pointer to dense vector of column lower bounds.
void realloc_coeff(double **coeff, char ***colNames, int *maxcoeff) const
Reallocate vectors related to number of coefficients.
int maxHash_[2]
Maximum number of entries in a hash table section.
int numberRows_
Number of rows.
Class to read and write Lp files.
void gutsOfDestructor()
Does the heavy lifting for destruct and assignment.
CoinMessages messages()
Return the messages.
void checkColNames()
Check that current column names are distinct.
void setDecimals(const int)
Set decimals.
int is_sense(const char *buff) const
Return an integer indicating the inequality sense read.
void freeAll()
Free all memory (except memory related to hash tables and objName_).
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 ...
double * rowupper_
Pointer to dense vector of row upper bounds.
CoinSet ** setInformation() const
Set information.
void realloc_col(double **collow, double **colup, char **is_int, int *maxcol) const
Reallocate vectors related to columns.
friend void CoinLpIOUnitTest(const std::string &lpDir)
int find_obj() const
Locate the objective function.
void passInMessageHandler(CoinMessageHandler *handler)
Pass in Message handler.
int fscanfLpIO(char *buff) const
Get next string (returns number in)
const double * getObjCoefficients() const
Get pointer to array[getNumCols()] of objective function coefficients.
Class to hold and manipulate an array of massaged messages.
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 setNumberAcross(const int)
Set numberAcross.
void freePreviousNames(const int section)
Free the vector previous_names_[section] and set card_previous_names_[section] to 0...
bool defaultHandler_
Flag to say if the message handler is the default handler.
Very simple class for containing data on set.