Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
build
buildd
coinor-cbc-2.5.0
Cbc
src
CbcClique.hpp
Go to the documentation of this file.
1
// Edwin 11/9/2009-- carved out of CbcBranchActual
2
#ifndef CbcClique_H
3
#define CbcClique_H
4
34
35
36
class
CbcClique
:
public
CbcObject
{
37
38
public
:
39
40
// Default Constructor
41
CbcClique
();
42
47
CbcClique
(
CbcModel
*
model
,
int
cliqueType
,
int
numberMembers
,
48
const
int
* which,
const
char
*
type
,
49
int
identifier,
int
slack = -1);
50
51
// Copy constructor
52
CbcClique
(
const
CbcClique
&);
53
55
virtual
CbcObject
*
clone
()
const
;
56
57
// Assignment operator
58
CbcClique
&
operator=
(
const
CbcClique
& rhs);
59
60
// Destructor
61
virtual
~CbcClique
();
62
64
virtual
double
infeasibility
(
const
OsiBranchingInformation * info,
65
int
&
preferredWay
)
const
;
66
67
using
CbcObject::feasibleRegion
;
69
virtual
void
feasibleRegion
();
70
72
virtual
CbcBranchingObject
*
createCbcBranch
(OsiSolverInterface * solver,
const
OsiBranchingInformation * info,
int
way) ;
74
inline
int
numberMembers
()
const
{
75
return
numberMembers_
;
76
}
83
inline
int
numberNonSOSMembers
()
const
{
84
return
numberNonSOSMembers_
;
85
}
86
88
inline
const
int
*
members
()
const
{
89
return
members_
;
90
}
91
101
inline
char
type
(
int
index)
const
{
102
if
(
type_
)
return
type_
[index];
103
else
return
1;
104
}
105
107
inline
int
cliqueType
()
const
{
108
return
cliqueType_
;
109
}
111
virtual
void
redoSequenceEtc
(
CbcModel
* model,
int
numberColumns,
const
int
* originalColumns);
112
113
protected
:
116
int
numberMembers_
;
117
119
int
numberNonSOSMembers_
;
120
122
int
*
members_
;
123
133
char
*
type_
;
134
140
int
cliqueType_
;
141
148
int
slack_
;
149
};
150
159
class
CbcCliqueBranchingObject
:
public
CbcBranchingObject
{
160
161
public
:
162
163
// Default Constructor
164
CbcCliqueBranchingObject
();
165
166
// Useful constructor
167
CbcCliqueBranchingObject
(
CbcModel
*
model
,
const
CbcClique
* clique,
168
int
way
,
169
int
numberOnDownSide,
const
int
* down,
170
int
numberOnUpSide,
const
int
* up);
171
172
// Copy constructor
173
CbcCliqueBranchingObject
(
const
CbcCliqueBranchingObject
&);
174
175
// Assignment operator
176
CbcCliqueBranchingObject
&
operator=
(
const
CbcCliqueBranchingObject
& rhs);
177
179
virtual
CbcBranchingObject
*
clone
()
const
;
180
181
// Destructor
182
virtual
~CbcCliqueBranchingObject
();
183
184
using
CbcBranchingObject::branch
;
186
virtual
double
branch
();
187
188
using
CbcBranchingObject::print
;
191
virtual
void
print
();
192
194
virtual
CbcBranchObjType
type
()
const
{
195
return
CliqueBranchObj
;
196
}
197
205
virtual
int
compareOriginalObject
(
const
CbcBranchingObject
* brObj)
const
;
206
215
virtual
CbcRangeCompare
compareBranchingObject
216
(
const
CbcBranchingObject
* brObj,
const
bool
replaceIfOverlap =
false
);
217
218
private
:
220
const
CbcClique
*
clique_
;
222
unsigned
int
downMask_
[2];
224
unsigned
int
upMask_
[2];
225
};
226
231
class
CbcLongCliqueBranchingObject
:
public
CbcBranchingObject
{
232
233
public
:
234
235
// Default Constructor
236
CbcLongCliqueBranchingObject
();
237
238
// Useful constructor
239
CbcLongCliqueBranchingObject
(
CbcModel
*
model
,
const
CbcClique
* clique,
240
int
way
,
241
int
numberOnDownSide,
const
int
* down,
242
int
numberOnUpSide,
const
int
* up);
243
244
// Copy constructor
245
CbcLongCliqueBranchingObject
(
const
CbcLongCliqueBranchingObject
&);
246
247
// Assignment operator
248
CbcLongCliqueBranchingObject
&
operator=
(
const
CbcLongCliqueBranchingObject
& rhs);
249
251
virtual
CbcBranchingObject
*
clone
()
const
;
252
253
// Destructor
254
virtual
~CbcLongCliqueBranchingObject
();
255
256
using
CbcBranchingObject::branch
;
258
virtual
double
branch
();
259
260
using
CbcBranchingObject::print
;
263
virtual
void
print
();
264
266
virtual
CbcBranchObjType
type
()
const
{
267
return
LongCliqueBranchObj
;
268
}
269
277
virtual
int
compareOriginalObject
(
const
CbcBranchingObject
* brObj)
const
;
278
287
virtual
CbcRangeCompare
compareBranchingObject
288
(
const
CbcBranchingObject
* brObj,
const
bool
replaceIfOverlap =
false
);
289
290
private
:
292
const
CbcClique
*
clique_
;
294
unsigned
int
*
downMask_
;
296
unsigned
int
*
upMask_
;
297
};
298
299
#endif
300
Generated on Fri Jun 29 2012 06:31:52 by
1.8.1.1