Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
tmp
buildd
coinor-cbc-2.5.0
debian
tmp
usr
include
coin
CbcBranchingObject.hpp
Go to the documentation of this file.
1
// Edwin 11/12/2009 carved from CbcBranchBase
2
#ifndef CbcBranchingObject_H
3
#define CbcBranchingObject_H
4
5
#include <string>
6
#include <vector>
7
#include "
CbcBranchBase.hpp
"
8
#include "OsiBranchingObject.hpp"
9
10
11
// The types of objects that will be derived from this class.
12
enum
CbcBranchObjType
13
{
14
SimpleIntegerBranchObj
= 100,
15
SimpleIntegerDynamicPseudoCostBranchObj
= 101,
16
CliqueBranchObj
= 102,
17
LongCliqueBranchObj
= 103,
18
SoSBranchObj
= 104,
19
NWayBranchObj
= 105,
20
FollowOnBranchObj
= 106,
21
DummyBranchObj
= 107,
22
GeneralDepthBranchObj
= 108,
23
OneGeneralBranchingObj
= 110,
24
CutBranchingObj
= 200,
25
LotsizeBranchObj
= 300,
26
DynamicPseudoCostBranchObj
= 400
27
};
28
47
class
CbcBranchingObject
:
public
OsiBranchingObject {
48
49
public
:
50
52
CbcBranchingObject
();
53
55
CbcBranchingObject
(
CbcModel
*
model
,
int
variable
,
int
way
,
double
value);
56
58
CbcBranchingObject
(
const
CbcBranchingObject
&);
59
61
CbcBranchingObject
&
operator=
(
const
CbcBranchingObject
& rhs);
62
64
virtual
CbcBranchingObject
*
clone
()
const
= 0;
65
67
virtual
~CbcBranchingObject
();
68
73
virtual
int
fillStrongInfo
(
CbcStrongInfo
& ) {
74
return
0;
75
}
77
inline
void
resetNumberBranchesLeft
() {
78
branchIndex_ = 0;
79
}
81
inline
void
setNumberBranches
(
int
value) {
82
branchIndex_ = 0;
83
numberBranches_ = value;
84
}
85
92
virtual
double
branch
() = 0;
99
virtual
double
branch
(OsiSolverInterface * ) {
100
return
branch
();
101
}
104
virtual
void
fix
(OsiSolverInterface * ,
105
double
* ,
double
* ,
106
int
)
const
{}
107
110
virtual
bool
tighten
(OsiSolverInterface * ) {
return
false
;}
111
115
virtual
void
previousBranch
() {
116
assert(branchIndex_ > 0);
117
branchIndex_--;
118
way_
= -
way_
;
119
}
120
121
using
OsiBranchingObject::print
;
124
virtual
void
print
()
const
{}
125
137
inline
int
variable
()
const
{
138
return
variable_
;
139
}
140
148
inline
int
way
()
const
{
149
return
way_
;
150
}
151
156
inline
void
way
(
int
way) {
157
way_
=
way
;
158
}
159
161
inline
void
setModel
(
CbcModel
* model) {
162
model_
=
model
;
163
}
165
inline
CbcModel
*
model
()
const
{
166
return
model_
;
167
}
168
170
inline
CbcObject
*
object
()
const
{
171
return
originalCbcObject_
;
172
}
174
inline
void
setOriginalObject
(
CbcObject
*
object
) {
175
originalCbcObject_
=
object
;
176
}
177
178
// Methods used in heuristics
179
184
virtual
CbcBranchObjType
type
()
const
= 0;
185
193
virtual
int
compareOriginalObject
(
const
CbcBranchingObject
* brObj)
const
{
194
const
CbcBranchingObject
* br =
dynamic_cast<
const
CbcBranchingObject
*
>
(brObj);
195
return
variable
() - br->
variable
();
196
}
197
206
virtual
CbcRangeCompare
compareBranchingObject
207
(
const
CbcBranchingObject
* brObj,
const
bool
replaceIfOverlap =
false
) = 0;
208
209
protected
:
210
212
CbcModel
*
model_
;
214
CbcObject
*
originalCbcObject_
;
215
217
int
variable_
;
218
// was - Way to branch - -1 down (first), 1 up, -2 down (second), 2 up (second)
226
int
way_
;
227
228
};
229
#endif
230
Generated on Tue Jun 26 2012 18:54:52 by
1.8.1.1