CoinUtils
2.9.0
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
CoinUtils
src
CoinStructuredModel.hpp
Go to the documentation of this file.
1
/* $Id: CoinStructuredModel.hpp 1372 2011-01-03 23:31:00Z lou $ */
2
// Copyright (C) 2008, International Business Machines
3
// Corporation and others. All Rights Reserved.
4
// This code is licensed under the terms of the Eclipse Public License (EPL).
5
6
#ifndef CoinStructuredModel_H
7
#define CoinStructuredModel_H
8
9
#include "
CoinModel.hpp
"
10
#include <vector>
11
15
typedef
struct
CoinModelInfo2
{
16
int
rowBlock
;
// Which row block
17
int
columnBlock
;
// Which column block
18
char
matrix
;
// nonzero if matrix exists
19
char
rhs
;
// nonzero if non default rhs exists
20
char
rowName
;
// nonzero if row names exists
21
char
integer
;
// nonzero if integer information exists
22
char
bounds
;
// nonzero if non default bounds/objective exists
23
char
columnName
;
// nonzero if column names exists
24
CoinModelInfo2
() :
25
rowBlock
(0),
26
columnBlock
(0),
27
matrix
(0),
28
rhs
(0),
29
rowName
(0),
30
integer
(0),
31
bounds
(0),
32
columnName
(0)
33
{}
34
}
CoinModelBlockInfo
;
35
36
class
CoinStructuredModel
:
public
CoinBaseModel
{
37
38
public
:
44
int
addBlock
(
const
std::string &
rowBlock
,
45
const
std::string &
columnBlock
,
46
const
CoinBaseModel
&
block
);
50
int
addBlock
(
const
CoinBaseModel
& block);
55
int
addBlock
(
const
std::string & rowBlock,
56
const
std::string & columnBlock,
57
CoinBaseModel
* block);
60
int
addBlock
(
const
std::string & rowBlock,
61
const
std::string & columnBlock,
62
const
CoinPackedMatrix
& matrix,
63
const
double
* rowLower,
const
double
* rowUpper,
64
const
double
* columnLower,
const
double
* columnUpper,
65
const
double
* objective);
66
92
int
writeMps
(
const
char
*filename,
int
compression = 0,
93
int
formatType = 0,
int
numberAcross = 2,
bool
keepStrings=
false
) ;
100
int
decompose
(
const
CoinModel
&model,
int
type,
101
int
maxBlocks=50);
108
int
decompose
(
const
CoinPackedMatrix
& matrix,
109
const
double
* rowLower,
const
double
* rowUpper,
110
const
double
* columnLower,
const
double
* columnUpper,
111
const
double
* objective,
int
type,
int
maxBlocks=50,
112
double
objectiveOffset
=0.0);
113
115
116
119
120
inline
int
numberRowBlocks
()
const
121
{
return
numberRowBlocks_
;}
123
inline
int
numberColumnBlocks
()
const
124
{
return
numberColumnBlocks_
;}
126
inline
CoinBigIndex
numberElementBlocks
()
const
127
{
return
numberElementBlocks_
;}
129
CoinBigIndex
numberElements
()
const
;
131
inline
const
std::string &
getRowBlock
(
int
i)
const
132
{
return
rowBlockNames_
[i];}
134
inline
void
setRowBlock
(
int
i,
const
std::string &name)
135
{
rowBlockNames_
[i] = name;}
137
int
addRowBlock
(
int
numberRows
,
const
std::string &name) ;
139
int
rowBlock
(
const
std::string &name)
const
;
141
inline
const
std::string &
getColumnBlock
(
int
i)
const
142
{
return
columnBlockNames_
[i];}
144
inline
void
setColumnBlock
(
int
i,
const
std::string &name)
145
{
columnBlockNames_
[i] = name;}
147
int
addColumnBlock
(
int
numberColumns
,
const
std::string &name) ;
149
int
columnBlock
(
const
std::string &name)
const
;
151
inline
const
CoinModelBlockInfo
&
blockType
(
int
i)
const
152
{
return
blockType_
[i];}
154
inline
CoinBaseModel
*
block
(
int
i)
const
155
{
return
blocks_
[i];}
157
const
CoinBaseModel
*
block
(
int
row,
int
column)
const
;
159
CoinModel
*
coinBlock
(
int
i)
const
;
161
const
CoinBaseModel
*
coinBlock
(
int
row,
int
column)
const
;
163
int
blockIndex
(
int
row,
int
column)
const
;
167
CoinModel
*
coinModelBlock
(
CoinModelBlockInfo
& info) ;
169
void
setCoinModel
(
CoinModel
* block,
int
iBlock);
171
void
refresh
(
int
iBlock);
174
CoinModelBlockInfo
block
(
int
row,
int
column,
175
const
double
* & rowLower,
const
double
* & rowUpper,
176
const
double
* & columnLower,
const
double
* & columnUpper,
177
const
double
* & objective)
const
;
179
inline
double
optimizationDirection
()
const
{
180
return
optimizationDirection_
;
181
}
183
inline
void
setOptimizationDirection
(
double
value)
184
{
optimizationDirection_
=value;}
186
190
CoinStructuredModel
();
194
CoinStructuredModel
(
const
char
*fileName,
int
decompose=0,
195
int
maxBlocks=50);
197
virtual
~CoinStructuredModel
();
199
203
CoinStructuredModel
(
const
CoinStructuredModel
&);
205
CoinStructuredModel
&
operator=
(
const
CoinStructuredModel
&);
207
virtual
CoinBaseModel
*
clone
()
const
;
209
210
private
:
211
215
int
fillInfo
(
CoinModelBlockInfo
& info,
const
CoinModel
* block);
218
void
fillInfo
(
CoinModelBlockInfo
& info,
const
CoinStructuredModel
* block);
221
222
int
numberRowBlocks_
;
224
int
numberColumnBlocks_
;
226
int
numberElementBlocks_
;
228
int
maximumElementBlocks_
;
230
std::vector<std::string>
rowBlockNames_
;
232
std::vector<std::string>
columnBlockNames_
;
234
CoinBaseModel
**
blocks_
;
236
CoinModel
**
coinModelBlocks_
;
238
CoinModelBlockInfo
*
blockType_
;
240
};
241
#endif
Generated by
1.8.3.1