Generated on Wed Jul 19 2023 00:00:00 for Gecode by doxygen 1.9.7
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 * This file is part of Gecode, the generic constraint
10 * development environment:
11 * http://www.gecode.org
12 *
13 * Permission is hereby granted, free of charge, to any person obtaining
14 * a copy of this software and associated documentation files (the
15 * "Software"), to deal in the Software without restriction, including
16 * without limitation the rights to use, copy, modify, merge, publish,
17 * distribute, sublicense, and/or sell copies of the Software, and to
18 * permit persons to whom the Software is furnished to do so, subject to
19 * the following conditions:
20 *
21 * The above copyright notice and this permission notice shall be
22 * included in all copies or substantial portions of the Software.
23 *
24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
27 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
28 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
29 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
30 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 *
32 */
33
34namespace Gecode {
35
38 : s(SEL_NONE) {}
39
42 : VarBranch<IntVar>(t), s(s0) {}
43
46 : VarBranch<IntVar>(r), s(SEL_RND) {}
47
50 : VarBranch<IntVar>(d,t), s(s0) {}
51
54 : VarBranch<IntVar>(a,t), s(s0) {}
55
58 : VarBranch<IntVar>(a,t), s(s0) {}
59
62 : VarBranch<IntVar>(c,t), s(s0) {}
63
66 : VarBranch<IntVar>(mf,t), s(s0) {}
67
70 return s;
71 }
72
73 forceinline void
75 switch (select()) {
76 case SEL_AFC_MIN: case SEL_AFC_MAX:
78 if (!_afc)
79 _afc = IntAFC(home,x,decay());
80 break;
83 if (!_act)
84 _act = IntAction(home,x,decay());
85 break;
86 case SEL_CHB_MIN: case SEL_CHB_MAX:
88 if (!_chb)
89 _chb = IntCHB(home,x);
90 break;
91 default: ;
92 }
93 }
94
95 inline IntVarBranch
98 }
99
100 inline IntVarBranch
102 return IntVarBranch(r);
103 }
104
105 inline IntVarBranch
108 }
109
110 inline IntVarBranch
113 }
114
115 inline IntVarBranch
118 }
119
120 inline IntVarBranch
123 }
124
125 inline IntVarBranch
126 INT_VAR_AFC_MIN(double d, BranchTbl tbl) {
128 }
129
130 inline IntVarBranch
133 }
134
135 inline IntVarBranch
136 INT_VAR_AFC_MAX(double d, BranchTbl tbl) {
138 }
139
140 inline IntVarBranch
143 }
144
145 inline IntVarBranch
148 }
149
150 inline IntVarBranch
153 }
154
155 inline IntVarBranch
158 }
159
160 inline IntVarBranch
163 }
164
165 inline IntVarBranch
168 }
169
170 inline IntVarBranch
173 }
174
175 inline IntVarBranch
178 }
179
180 inline IntVarBranch
183 }
184
185 inline IntVarBranch
188 }
189
190 inline IntVarBranch
193 }
194
195 inline IntVarBranch
198 }
199
200 inline IntVarBranch
203 }
204
205 inline IntVarBranch
208 }
209
210 inline IntVarBranch
213 }
214
215 inline IntVarBranch
218 }
219
220 inline IntVarBranch
223 }
224
225 inline IntVarBranch
228 }
229
230 inline IntVarBranch
233 }
234
235 inline IntVarBranch
238 }
239
240 inline IntVarBranch
243 }
244
245 inline IntVarBranch
248 }
249
250 inline IntVarBranch
253 }
254
255 inline IntVarBranch
258 }
259
260 inline IntVarBranch
263 }
264
265 inline IntVarBranch
268 }
269
270 inline IntVarBranch
273 }
274
275 inline IntVarBranch
278 }
279
280 inline IntVarBranch
283 }
284
285 inline IntVarBranch
288 }
289
290 inline IntVarBranch
293 }
294
295 inline IntVarBranch
298 }
299
300 inline IntVarBranch
303 }
304
305
306
309 : s(SEL_NONE) {}
310
313 : VarBranch<BoolVar>(t), s(s0) {}
314
317 : VarBranch<BoolVar>(r), s(SEL_RND) {}
318
321 : VarBranch<BoolVar>(d,t), s(s0) {}
322
325 : VarBranch<BoolVar>(a,t), s(s0) {}
326
329 : VarBranch<BoolVar>(a,t), s(s0) {}
330
333 : VarBranch<BoolVar>(c,t), s(s0) {}
334
337 : VarBranch<BoolVar>(mf,t), s(s0) {}
338
341 return s;
342 }
343
344 forceinline void
346 switch (select()) {
347 case SEL_AFC_MIN: case SEL_AFC_MAX:
348 if (!_afc)
349 _afc = BoolAFC(home,x,decay());
350 break;
352 if (!_act)
353 _act = BoolAction(home,x,decay());
354 break;
355 case SEL_CHB_MIN: case SEL_CHB_MAX:
356 if (!_chb)
357 _chb = BoolCHB(home,x);
358 break;
359 default: ;
360 }
361 }
362
363 inline BoolVarBranch
366 }
367
368 inline BoolVarBranch
370 return BoolVarBranch(r);
371 }
372
373 inline BoolVarBranch
376 }
377
378 inline BoolVarBranch
381 }
382
383 inline BoolVarBranch
386 }
387
388 inline BoolVarBranch
391 }
392
393 inline BoolVarBranch
396 }
397
398 inline BoolVarBranch
401 }
402
403 inline BoolVarBranch
406 }
407
408 inline BoolVarBranch
411 }
412
413 inline BoolVarBranch
416 }
417
418 inline BoolVarBranch
421 }
422
423 inline BoolVarBranch
426 }
427
428 inline BoolVarBranch
431 }
432
433 inline BoolVarBranch
436 }
437
438 inline BoolVarBranch
441 }
442
443 inline BoolVarBranch
446 }
447
448 inline BoolVarBranch
451 }
452
453}
454
455// STATISTICS: int-branch
NodeType t
Type of node.
struct Gecode::@603::NNF::@65::@67 a
For atomic nodes.
Recording AFC information for Boolean variables.
Definition int.hh:4316
Recording actions for Boolean variables.
Definition int.hh:4407
Recording CHB for Boolean variables.
Definition int.hh:4502
Passing Boolean variables.
Definition int.hh:712
Which Boolean variable to select for branching.
Definition int.hh:4656
void expand(Home home, const BoolVarArgs &x)
Expand decay factor into AFC or action.
Definition var.hpp:345
Select select(void) const
Return selection strategy.
Definition var.hpp:340
BoolVarBranch(void)
Initialize with strategy SEL_NONE.
Definition var.hpp:308
Select
Which variable selection.
Definition int.hh:4659
@ SEL_DEGREE_MIN
With smallest degree.
Definition int.hh:4664
@ SEL_AFC_MAX
With largest accumulated failure count.
Definition int.hh:4667
@ SEL_CHB_MIN
With lowest CHB.
Definition int.hh:4670
@ SEL_MERIT_MIN
With least merit.
Definition int.hh:4662
@ SEL_ACTION_MIN
With lowest action.
Definition int.hh:4668
@ SEL_AFC_MIN
With smallest accumulated failure count.
Definition int.hh:4666
@ SEL_NONE
First unassigned.
Definition int.hh:4660
@ SEL_ACTION_MAX
With highest action.
Definition int.hh:4669
@ SEL_CHB_MAX
With highest CHB.
Definition int.hh:4671
@ SEL_MERIT_MAX
With highest merit.
Definition int.hh:4663
@ SEL_DEGREE_MAX
With largest degree.
Definition int.hh:4665
Select s
Which variable to select.
Definition int.hh:4675
Boolean integer variables.
Definition int.hh:512
Home class for posting propagators
Definition core.hpp:856
Recording AFC information for integer variables.
Definition int.hh:4276
Recording actions for integer variables.
Definition int.hh:4362
Recording CHB for integer variables.
Definition int.hh:4458
Passing integer variables.
Definition int.hh:656
Which integer variable to select for branching.
Definition int.hh:4570
void expand(Home home, const IntVarArgs &x)
Expand AFC, action, and CHB.
Definition var.hpp:74
Select
Which variable selection.
Definition int.hh:4573
@ SEL_MAX_MIN
With smallest max.
Definition int.hh:4588
@ SEL_CHB_MAX
With highest CHB Q-score.
Definition int.hh:4585
@ SEL_AFC_SIZE_MAX
With largest accumulated failure count divided by domain size.
Definition int.hh:4595
@ SEL_MIN_MIN
With smallest min.
Definition int.hh:4586
@ SEL_ACTION_SIZE_MAX
With largest action divided by domain size.
Definition int.hh:4597
@ SEL_AFC_SIZE_MIN
With smallest accumulated failure count divided by domain size.
Definition int.hh:4594
@ SEL_REGRET_MIN_MIN
With smallest min-regret.
Definition int.hh:4605
@ SEL_DEGREE_SIZE_MIN
With smallest degree divided by domain size.
Definition int.hh:4592
@ SEL_MIN_MAX
With largest min.
Definition int.hh:4587
@ SEL_REGRET_MIN_MAX
With largest min-regret.
Definition int.hh:4611
@ SEL_CHB_SIZE_MAX
With largest CHB Q-score divided by domain size.
Definition int.hh:4599
@ SEL_MAX_MAX
With largest max.
Definition int.hh:4589
@ SEL_AFC_MIN
With smallest accumulated failure count.
Definition int.hh:4580
@ SEL_SIZE_MIN
With smallest domain size.
Definition int.hh:4590
@ SEL_AFC_MAX
With largest accumulated failure count.
Definition int.hh:4581
@ SEL_MERIT_MAX
With highest merit.
Definition int.hh:4577
@ SEL_DEGREE_MAX
With largest degree.
Definition int.hh:4579
@ SEL_SIZE_MAX
With largest domain size.
Definition int.hh:4591
@ SEL_ACTION_MIN
With lowest action.
Definition int.hh:4582
@ SEL_ACTION_MAX
With highest action.
Definition int.hh:4583
@ SEL_CHB_MIN
With lowest CHB Q-score.
Definition int.hh:4584
@ SEL_NONE
First unassigned.
Definition int.hh:4574
@ SEL_MERIT_MIN
With least merit.
Definition int.hh:4576
@ SEL_REGRET_MAX_MIN
With smallest max-regret.
Definition int.hh:4617
@ SEL_CHB_SIZE_MIN
With smallest CHB Q-score divided by domain size.
Definition int.hh:4598
@ SEL_DEGREE_MIN
With smallest degree.
Definition int.hh:4578
@ SEL_REGRET_MAX_MAX
With largest max-regret.
Definition int.hh:4623
@ SEL_ACTION_SIZE_MIN
With smallest action divided by domain size.
Definition int.hh:4596
@ SEL_DEGREE_SIZE_MAX
With largest degree divided by domain size.
Definition int.hh:4593
Select s
Which variable to select.
Definition int.hh:4627
Select select(void) const
Return selection strategy.
Definition var.hpp:69
IntVarBranch(void)
Initialize with strategy SEL_NONE.
Definition var.hpp:37
Integer variables.
Definition int.hh:371
Random number generator.
Definition rnd.hpp:42
Variable branching information.
Definition var.hpp:55
double decay(void) const
Return decay factor.
Definition var.hpp:180
AFC _afc
AFC information.
Definition var.hpp:67
CHB _chb
CHB information.
Definition var.hpp:71
Action _act
Action information.
Definition var.hpp:69
std::function< double(const Space &home, double w, double b)> BranchTbl
Tie-break limit function.
Definition var.hpp:48
std::function< double(const Space &home, IntVar x, int i)> IntBranchMerit
Branch merit function type for integer variables.
Definition int.hh:4198
std::function< double(const Space &home, BoolVar x, int i)> BoolBranchMerit
Branch merit function type for Boolean variables.
Definition int.hh:4209
Gecode toplevel namespace
BoolVarBranch BOOL_VAR_CHB_MIN(BoolCHB c, BranchTbl tbl=nullptr)
Select variable with lowest CHB Q-score.
Definition var.hpp:434
Post propagator for SetVar SetOpType SetVar SetRelType r
Definition set.hh:767
IntVarBranch INT_VAR_AFC_SIZE_MAX(double d=1.0, BranchTbl tbl=nullptr)
Select variable with largest accumulated failure count divided by domain size with decay factor d.
Definition var.hpp:236
IntVarBranch INT_VAR_CHB_SIZE_MIN(IntCHB c, BranchTbl tbl=nullptr)
Select variable with smallest CHB Q-score divided by domain size.
Definition var.hpp:266
IntVarBranch INT_VAR_DEGREE_MAX(BranchTbl tbl=nullptr)
Select variable with largest degree.
Definition var.hpp:121
IntVarBranch INT_VAR_REGRET_MIN_MIN(BranchTbl tbl=nullptr)
Select variable with smallest min-regret.
Definition var.hpp:286
IntVarBranch INT_VAR_ACTION_MAX(double d=1.0, BranchTbl tbl=nullptr)
Select variable with highest action with decay factor d.
Definition var.hpp:156
IntVarBranch INT_VAR_REGRET_MIN_MAX(BranchTbl tbl=nullptr)
Select variable with largest min-regret.
Definition var.hpp:291
IntVarBranch INT_VAR_ACTION_SIZE_MAX(double d=1.0, BranchTbl tbl=nullptr)
Select variable with largest action divided by domain size with decay factor d.
Definition var.hpp:256
BoolVarBranch BOOL_VAR_MERIT_MIN(BoolBranchMerit bm, BranchTbl tbl=nullptr)
Select variable with least merit according to branch merit function bm.
Definition var.hpp:374
IntVarBranch INT_VAR_NONE(void)
Select first unassigned variable.
Definition var.hpp:96
IntVarBranch INT_VAR_CHB_MIN(IntCHB c, BranchTbl tbl=nullptr)
Select variable with lowest CHB Q-score.
Definition var.hpp:166
BoolVarBranch BOOL_VAR_NONE(void)
Select first unassigned variable.
Definition var.hpp:364
IntVarBranch INT_VAR_AFC_MAX(double d=1.0, BranchTbl tbl=nullptr)
Select variable with largest accumulated failure count with decay factor d.
Definition var.hpp:136
IntVarBranch INT_VAR_AFC_MIN(double d=1.0, BranchTbl tbl=nullptr)
Select variable with smallest accumulated failure count with decay factor d.
Definition var.hpp:126
IntVarBranch INT_VAR_REGRET_MAX_MAX(BranchTbl tbl=nullptr)
Select variable with largest max-regret.
Definition var.hpp:301
IntVarBranch INT_VAR_CHB_MAX(IntCHB c, BranchTbl tbl=nullptr)
Select variable with largest CHB Q-score.
Definition var.hpp:176
BoolVarBranch BOOL_VAR_RND(Rnd r)
Select random variable (uniform distribution, for tie breaking)
Definition var.hpp:369
BoolVarBranch BOOL_VAR_ACTION_MIN(double d=1.0, BranchTbl tbl=nullptr)
Select variable with lowest action with decay factor d.
Definition var.hpp:414
BoolVarBranch BOOL_VAR_DEGREE_MIN(BranchTbl tbl=nullptr)
Select variable with smallest degree.
Definition var.hpp:384
IntVarBranch INT_VAR_MAX_MIN(BranchTbl tbl=nullptr)
Select variable with smallest max.
Definition var.hpp:196
BoolVarBranch BOOL_VAR_AFC_MIN(double d=1.0, BranchTbl tbl=nullptr)
Select variable with smallest accumulated failure count with decay factor d.
Definition var.hpp:394
BoolVarBranch BOOL_VAR_AFC_MAX(double d=1.0, BranchTbl tbl=nullptr)
Select variable with largest accumulated failure count with decay factor d.
Definition var.hpp:404
BoolVarBranch BOOL_VAR_CHB_MAX(BoolCHB c, BranchTbl tbl=nullptr)
Select variable with largest CHB Q-score.
Definition var.hpp:444
IntVarBranch INT_VAR_MAX_MAX(BranchTbl tbl=nullptr)
Select variable with largest max.
Definition var.hpp:201
IntVarBranch INT_VAR_ACTION_MIN(double d=1.0, BranchTbl tbl=nullptr)
Select variable with lowest action with decay factor d.
Definition var.hpp:146
IntVarBranch INT_VAR_RND(Rnd r)
Select random variable (uniform distribution, for tie breaking)
Definition var.hpp:101
IntVarBranch INT_VAR_AFC_SIZE_MIN(double d=1.0, BranchTbl tbl=nullptr)
Select variable with smallest accumulated failure count divided by domain size with decay factor d.
Definition var.hpp:226
IntVarBranch INT_VAR_DEGREE_MIN(BranchTbl tbl=nullptr)
Select variable with smallest degree.
Definition var.hpp:116
IntVarBranch INT_VAR_REGRET_MAX_MIN(BranchTbl tbl=nullptr)
Select variable with smallest max-regret.
Definition var.hpp:296
IntVarBranch INT_VAR_MERIT_MIN(IntBranchMerit bm, BranchTbl tbl=nullptr)
Select variable with least merit according to branch merit function bm.
Definition var.hpp:106
IntVarBranch INT_VAR_CHB_SIZE_MAX(IntCHB c, BranchTbl tbl=nullptr)
Select variable with largest CHB Q-score divided by domain size.
Definition var.hpp:276
IntVarBranch INT_VAR_DEGREE_SIZE_MAX(BranchTbl tbl=nullptr)
Select variable with largest degree divided by domain size.
Definition var.hpp:221
IntVarBranch INT_VAR_MERIT_MAX(IntBranchMerit bm, BranchTbl tbl=nullptr)
Select variable with highest merit according to branch merit function bm.
Definition var.hpp:111
IntVarBranch INT_VAR_SIZE_MIN(BranchTbl tbl=nullptr)
Select variable with smallest domain size.
Definition var.hpp:206
BoolVarBranch BOOL_VAR_DEGREE_MAX(BranchTbl tbl=nullptr)
Select variable with largest degree.
Definition var.hpp:389
IntVarBranch INT_VAR_ACTION_SIZE_MIN(double d=1.0, BranchTbl tbl=nullptr)
Select variable with smallest action divided by domain size with decay factor d.
Definition var.hpp:246
Post propagator for SetVar x
Definition set.hh:767
BoolVarBranch BOOL_VAR_ACTION_MAX(double d=1.0, BranchTbl tbl=nullptr)
Select variable with highest action with decay factor d.
Definition var.hpp:424
IntVarBranch INT_VAR_MIN_MAX(BranchTbl tbl=nullptr)
Select variable with largest min.
Definition var.hpp:191
BoolVarBranch BOOL_VAR_MERIT_MAX(BoolBranchMerit bm, BranchTbl tbl=nullptr)
Select variable with highest merit according to branch merit function bm.
Definition var.hpp:379
IntVarBranch INT_VAR_DEGREE_SIZE_MIN(BranchTbl tbl=nullptr)
Select variable with smallest degree divided by domain size.
Definition var.hpp:216
IntVarBranch INT_VAR_MIN_MIN(BranchTbl tbl=nullptr)
Select variable with smallest min.
Definition var.hpp:186
IntVarBranch INT_VAR_SIZE_MAX(BranchTbl tbl=nullptr)
Select variable with largest domain size.
Definition var.hpp:211
#define forceinline
Definition config.hpp:194