6#ifndef CoinStructuredModel_H
7#define CoinStructuredModel_H
64 const double *rowLower,
const double *rowUpper,
65 const double *columnLower,
const double *columnUpper,
66 const double *objective);
93 int writeMps(
const char *filename,
int compression = 0,
94 int formatType = 0,
int numberAcross = 2,
bool keepStrings =
false);
97 bool keepNames =
false,
98 bool ignoreErrors =
false);
107 int maxBlocks = 50,
const char **starts = NULL);
115 const double *rowLower,
const double *rowUpper,
116 const double *columnLower,
const double *columnUpper,
117 const double *objective,
int type,
int maxBlocks = 50,
199 const double *&rowLower,
const double *&rowUpper,
200 const double *&columnLower,
const double *&columnUpper,
201 const double *&objective)
const;
struct CoinModelInfo2 CoinModelBlockInfo
This is a model which is made up of Coin(Structured)Model blocks.
int numberRows() const
Return number of rows.
double objectiveOffset() const
Returns the (constant) objective offset This is the RHS entry for the objective row.
int numberColumns() const
Return number of columns.
double optimizationDirection_
Direction of optimization (1 - minimize, -1 - maximize, 0 - ignore.
This is a simple minded model which is stored in a format which makes it easier to construct and modi...
Sparse Matrix Base Class.
virtual CoinBaseModel * clone() const
Clone.
int rowBlock(const std::string &name) const
Return a row block index given a row block name.
int columnBlock(const std::string &name) const
Return a column block index given a column block name.
int numberRowBlocks() const
Return number of row blocks.
double optimizationDirection() const
Direction of optimization (1 - minimize, -1 - maximize, 0 - ignore.
CoinStructuredModel(const CoinStructuredModel &)
The copy constructor.
CoinStructuredModel()
Default constructor.
int addBlock(const CoinBaseModel &block)
add a block from a CoinModel with names in model returns number of errors (e.g.
CoinModelBlockInfo block(int row, int column, const double *&rowLower, const double *&rowUpper, const double *&columnLower, const double *&columnUpper, const double *&objective) const
Fill pointers corresponding to row and column.
int numberRowBlocks_
Current number of row blocks.
const CoinModelBlockInfo & blockType(int i) const
Return i'th block type.
void fillInfo(CoinModelBlockInfo &info, const CoinStructuredModel *block)
Fill in info structure and update counts.
void setOptimizationDirection(double value)
Set direction of optimization (1 - minimize, -1 - maximize, 0 - ignore.
int addBlock(const std::string &rowBlock, const std::string &columnBlock, const CoinBaseModel &block)
add a block from a CoinModel using names given as parameters returns number of errors (e....
int blockIndex(int row, int column) const
Return block number corresponding to row and column.
CoinBaseModel * block(int i) const
Return i'th block.
const std::string & getColumnBlock(int i) const
Return i'th the column block name.
int decompose(const CoinPackedMatrix &matrix, const double *rowLower, const double *rowUpper, const double *columnLower, const double *columnUpper, const double *objective, int type, int maxBlocks=50, int *starts=NULL, double objectiveOffset=0.0)
Decompose a model specified as arrays + CoinPackedMatrix 1 - try D-W 2 - try Benders 3 - try Staircas...
int decompose(const CoinModel &model, int type, int maxBlocks=50, const char **starts=NULL)
Decompose a CoinModel 1 - try D-W 2 - try Benders 3 - try Staircase Returns number of blocks or zero ...
void setColumnBlock(int i, const std::string &name)
Set i'th column block name.
int numberElementBlocks_
Current number of element blocks.
std::vector< std::string > rowBlockNames_
Rowblock name.
int numberElementBlocks() const
Return number of elementBlocks.
void setCoinModel(CoinModel *block, int iBlock)
Sets given block into coinModelBlocks_.
CoinModel ** coinModelBlocks_
CoinModel copies of blocks or NULL if original CoinModel.
int numberColumnBlocks_
Current number of column blocks.
const std::string & getRowBlock(int i) const
Return the i'th row block name.
void setRowBlock(int i, const std::string &name)
Set i'th row block name.
CoinStructuredModel(const char *fileName, int decompose=0, int maxBlocks=50)
Read a problem in MPS format from the given filename.
int addRowBlock(int numberRows, const std::string &name)
Add or check a row block name and number of rows.
int fillInfo(CoinModelBlockInfo &info, const CoinModel *block)
Fill in info structure and update counts Returns number of inconsistencies on border.
CoinStructuredModel & operator=(const CoinStructuredModel &)
=
int addBlock(const std::string &rowBlock, const std::string &columnBlock, CoinBaseModel *block)
add a block from a CoinModel using names given as parameters returns number of errors (e....
int maximumElementBlocks_
Maximum number of element blocks.
int writeMps(const char *filename, int compression=0, int formatType=0, int numberAcross=2, bool keepStrings=false)
Write the problem in MPS format to a file with the given filename.
int addBlock(const std::string &rowBlock, const std::string &columnBlock, const CoinPackedMatrix &matrix, const double *rowLower, const double *rowUpper, const double *columnLower, const double *columnUpper, const double *objective)
add a block using names
int addColumnBlock(int numberColumns, const std::string &name)
Add or check a column block name and number of columns.
int readSmps(const char *filename, bool keepNames=false, bool ignoreErrors=false)
Read SMPS model.
virtual ~CoinStructuredModel()
Destructor.
CoinModel * coinModelBlock(CoinModelBlockInfo &info)
Return model as a CoinModel block and fill in info structure and update counts.
CoinModelBlockInfo * blockType_
Which parts of model are set in block.
const CoinBaseModel * coinBlock(int row, int column) const
Return block corresponding to row and column as CoinModel.
CoinModel * coinBlock(int i) const
Return i'th block as CoinModel (or NULL)
int numberColumnBlocks() const
Return number of column blocks.
CoinBaseModel ** blocks_
Blocks.
CoinBigIndex numberElements() const
Return number of elements.
void refresh(int iBlock)
Refresh info in blockType_.
const CoinBaseModel * block(int row, int column) const
Return block corresponding to row and column.
std::vector< std::string > columnBlockNames_
Columnblock name.
This is a model which is made up of Coin(Structured)Model blocks.