main page
modules
namespaces
classes
files
Gecode home
Generated on Sat May 25 2013 18:00:33 for Gecode by
doxygen
1.8.3.1
gecode
set
branch
var.hpp
Go to the documentation of this file.
1
/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
/*
3
* Main authors:
4
* Christian Schulte <schulte@gecode.org>
5
*
6
* Copyright:
7
* Christian Schulte, 2012
8
*
9
* Last modified:
10
* $Date: 2013-02-19 13:26:08 +0100 (Tue, 19 Feb 2013) $ by $Author: schulte $
11
* $Revision: 13313 $
12
*
13
* This file is part of Gecode, the generic constraint
14
* development environment:
15
* http://www.gecode.org
16
*
17
* Permission is hereby granted, free of charge, to any person obtaining
18
* a copy of this software and associated documentation files (the
19
* "Software"), to deal in the Software without restriction, including
20
* without limitation the rights to use, copy, modify, merge, publish,
21
* distribute, sublicense, and/or sell copies of the Software, and to
22
* permit persons to whom the Software is furnished to do so, subject to
23
* the following conditions:
24
*
25
* The above copyright notice and this permission notice shall be
26
* included in all copies or substantial portions of the Software.
27
*
28
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
29
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
30
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
31
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
32
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
33
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
34
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
35
*
36
*/
37
38
namespace
Gecode {
39
40
forceinline
41
SetVarBranch::SetVarBranch
(
void
)
42
:
VarBranch
(NULL), s(SEL_NONE) {}
43
44
forceinline
45
SetVarBranch::SetVarBranch
(
Select
s0,
BranchTbl
t
)
46
:
VarBranch
(t), s(s0) {}
47
48
forceinline
49
SetVarBranch::SetVarBranch
(
Rnd
r
)
50
:
VarBranch
(r), s(SEL_RND) {}
51
52
forceinline
53
SetVarBranch::SetVarBranch
(
Select
s0,
double
d
,
BranchTbl
t
)
54
:
VarBranch
(d,t), s(s0) {}
55
56
forceinline
57
SetVarBranch::SetVarBranch
(
Select
s0,
AFC
a
,
BranchTbl
t
)
58
:
VarBranch
(a,t), s(s0) {}
59
60
forceinline
61
SetVarBranch::SetVarBranch
(
Select
s0,
Activity
a
,
BranchTbl
t
)
62
:
VarBranch
(a,t), s(s0) {}
63
64
forceinline
65
SetVarBranch::SetVarBranch
(
Select
s0,
VoidFunction
mf,
BranchTbl
t
)
66
:
VarBranch
(mf,t), s(s0) {}
67
68
forceinline
SetVarBranch::Select
69
SetVarBranch::select
(
void
)
const
{
70
return
s
;
71
}
72
73
forceinline
void
74
SetVarBranch::expand
(
Home
home,
const
SetVarArgs
&
x
) {
75
switch
(
select
()) {
76
case
SEL_AFC_MIN
:
case
SEL_AFC_MAX
:
77
case
SEL_AFC_SIZE_MIN
:
case
SEL_AFC_SIZE_MAX
:
78
if
(!
_afc
.
initialized
())
79
_afc
=
SetAFC
(home,x,
decay
());
80
break
;
81
case
SEL_ACTIVITY_MIN
:
case
SEL_ACTIVITY_MAX
:
82
case
SEL_ACTIVITY_SIZE_MIN
:
case
SEL_ACTIVITY_SIZE_MAX
:
83
if
(!
_act
.
initialized
())
84
_act
=
SetActivity
(home,x,
decay
());
85
break
;
86
default
: ;
87
}
88
}
89
90
inline
SetVarBranch
91
SET_VAR_NONE
(
void
) {
92
return
SetVarBranch
(
SetVarBranch::SEL_NONE
,NULL);
93
}
94
95
inline
SetVarBranch
96
SET_VAR_RND
(
Rnd
r
) {
97
return
SetVarBranch
(r);
98
}
99
100
inline
SetVarBranch
101
SET_VAR_MERIT_MIN
(
SetBranchMerit
bm,
BranchTbl
tbl
) {
102
return
SetVarBranch
(
SetVarBranch::SEL_MERIT_MIN
,
103
function_cast<VoidFunction>(bm),tbl);
104
}
105
106
inline
SetVarBranch
107
SET_VAR_MERIT_MAX
(
SetBranchMerit
bm,
BranchTbl
tbl
) {
108
return
SetVarBranch
(
SetVarBranch::SEL_MERIT_MAX
,
109
function_cast<VoidFunction>(bm),tbl);
110
}
111
112
inline
SetVarBranch
113
SET_VAR_DEGREE_MIN
(
BranchTbl
tbl
) {
114
return
SetVarBranch
(
SetVarBranch::SEL_DEGREE_MIN
,tbl);
115
}
116
117
inline
SetVarBranch
118
SET_VAR_DEGREE_MAX
(
BranchTbl
tbl
) {
119
return
SetVarBranch
(
SetVarBranch::SEL_DEGREE_MAX
,tbl);
120
}
121
122
inline
SetVarBranch
123
SET_VAR_AFC_MIN
(
double
d
,
BranchTbl
tbl
) {
124
return
SetVarBranch
(
SetVarBranch::SEL_AFC_MIN
,d,tbl);
125
}
126
127
inline
SetVarBranch
128
SET_VAR_AFC_MIN
(
SetAFC
a
,
BranchTbl
tbl
) {
129
return
SetVarBranch
(
SetVarBranch::SEL_AFC_MIN
,a,tbl);
130
}
131
132
inline
SetVarBranch
133
SET_VAR_AFC_MAX
(
double
d
,
BranchTbl
tbl
) {
134
return
SetVarBranch
(
SetVarBranch::SEL_AFC_MAX
,d,tbl);
135
}
136
137
inline
SetVarBranch
138
SET_VAR_AFC_MAX
(
SetAFC
a
,
BranchTbl
tbl
) {
139
return
SetVarBranch
(
SetVarBranch::SEL_AFC_MAX
,a,tbl);
140
}
141
142
inline
SetVarBranch
143
SET_VAR_ACTIVITY_MIN
(
double
d
,
BranchTbl
tbl
) {
144
return
SetVarBranch
(
SetVarBranch::SEL_ACTIVITY_MIN
,d,tbl);
145
}
146
147
inline
SetVarBranch
148
SET_VAR_ACTIVITY_MIN
(
SetActivity
a
,
BranchTbl
tbl
) {
149
return
SetVarBranch
(
SetVarBranch::SEL_ACTIVITY_MIN
,a,tbl);
150
}
151
152
inline
SetVarBranch
153
SET_VAR_ACTIVITY_MAX
(
double
d
,
BranchTbl
tbl
) {
154
return
SetVarBranch
(
SetVarBranch::SEL_ACTIVITY_MAX
,d,tbl);
155
}
156
157
inline
SetVarBranch
158
SET_VAR_ACTIVITY_MAX
(
SetActivity
a
,
BranchTbl
tbl
) {
159
return
SetVarBranch
(
SetVarBranch::SEL_ACTIVITY_MAX
,a,tbl);
160
}
161
162
inline
SetVarBranch
163
SET_VAR_MIN_MIN
(
BranchTbl
tbl
) {
164
return
SetVarBranch
(
SetVarBranch::SEL_MIN_MIN
,tbl);
165
}
166
167
inline
SetVarBranch
168
SET_VAR_MIN_MAX
(
BranchTbl
tbl
) {
169
return
SetVarBranch
(
SetVarBranch::SEL_MIN_MAX
,tbl);
170
}
171
172
inline
SetVarBranch
173
SET_VAR_MAX_MIN
(
BranchTbl
tbl
) {
174
return
SetVarBranch
(
SetVarBranch::SEL_MAX_MIN
,tbl);
175
}
176
177
inline
SetVarBranch
178
SET_VAR_MAX_MAX
(
BranchTbl
tbl
) {
179
return
SetVarBranch
(
SetVarBranch::SEL_MAX_MAX
,tbl);
180
}
181
182
inline
SetVarBranch
183
SET_VAR_SIZE_MIN
(
BranchTbl
tbl
) {
184
return
SetVarBranch
(
SetVarBranch::SEL_SIZE_MIN
,tbl);
185
}
186
187
inline
SetVarBranch
188
SET_VAR_SIZE_MAX
(
BranchTbl
tbl
) {
189
return
SetVarBranch
(
SetVarBranch::SEL_SIZE_MAX
,tbl);
190
}
191
192
inline
SetVarBranch
193
SET_VAR_DEGREE_SIZE_MIN
(
BranchTbl
tbl
) {
194
return
SetVarBranch
(
SetVarBranch::SEL_DEGREE_SIZE_MIN
,tbl);
195
}
196
197
inline
SetVarBranch
198
SET_VAR_DEGREE_SIZE_MAX
(
BranchTbl
tbl
) {
199
return
SetVarBranch
(
SetVarBranch::SEL_DEGREE_SIZE_MAX
,tbl);
200
}
201
202
inline
SetVarBranch
203
SET_VAR_AFC_SIZE_MIN
(
double
d
,
BranchTbl
tbl
) {
204
return
SetVarBranch
(
SetVarBranch::SEL_AFC_SIZE_MIN
,d,tbl);
205
}
206
207
inline
SetVarBranch
208
SET_VAR_AFC_SIZE_MIN
(
SetAFC
a
,
BranchTbl
tbl
) {
209
return
SetVarBranch
(
SetVarBranch::SEL_AFC_SIZE_MIN
,a,tbl);
210
}
211
212
inline
SetVarBranch
213
SET_VAR_AFC_SIZE_MAX
(
double
d
,
BranchTbl
tbl
) {
214
return
SetVarBranch
(
SetVarBranch::SEL_AFC_SIZE_MAX
,d,tbl);
215
}
216
217
inline
SetVarBranch
218
SET_VAR_AFC_SIZE_MAX
(
SetAFC
a
,
BranchTbl
tbl
) {
219
return
SetVarBranch
(
SetVarBranch::SEL_AFC_SIZE_MAX
,a,tbl);
220
}
221
222
inline
SetVarBranch
223
SET_VAR_ACTIVITY_SIZE_MIN
(
double
d
,
BranchTbl
tbl
) {
224
return
SetVarBranch
(
SetVarBranch::SEL_ACTIVITY_SIZE_MIN
,d,tbl);
225
}
226
227
inline
SetVarBranch
228
SET_VAR_ACTIVITY_SIZE_MIN
(
SetActivity
a
,
BranchTbl
tbl
) {
229
return
SetVarBranch
(
SetVarBranch::SEL_ACTIVITY_SIZE_MIN
,a,tbl);
230
}
231
232
inline
SetVarBranch
233
SET_VAR_ACTIVITY_SIZE_MAX
(
double
d
,
BranchTbl
tbl
) {
234
return
SetVarBranch
(
SetVarBranch::SEL_ACTIVITY_SIZE_MAX
,d,tbl);
235
}
236
237
inline
SetVarBranch
238
SET_VAR_ACTIVITY_SIZE_MAX
(
SetActivity
a
,
BranchTbl
tbl
) {
239
return
SetVarBranch
(
SetVarBranch::SEL_ACTIVITY_SIZE_MAX
,a,tbl);
240
}
241
242
}
243
244
// STATISTICS: set-branch