Generated on Tue Feb 11 2025 17:33:26 for Gecode by doxygen 1.12.0
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
43
47
50 : VarBranch<IntVar>(d,t), s(s0) {}
51
55
59
63
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
109
110 inline IntVarBranch
114
115 inline IntVarBranch
119
120 inline IntVarBranch
124
125 inline IntVarBranch
126 INT_VAR_AFC_MIN(double d, BranchTbl tbl) {
128 }
129
130 inline IntVarBranch
134
135 inline IntVarBranch
136 INT_VAR_AFC_MAX(double d, BranchTbl tbl) {
138 }
139
140 inline IntVarBranch
144
145 inline IntVarBranch
149
150 inline IntVarBranch
154
155 inline IntVarBranch
159
160 inline IntVarBranch
164
165 inline IntVarBranch
169
170 inline IntVarBranch
174
175 inline IntVarBranch
179
180 inline IntVarBranch
184
185 inline IntVarBranch
189
190 inline IntVarBranch
194
195 inline IntVarBranch
199
200 inline IntVarBranch
204
205 inline IntVarBranch
209
210 inline IntVarBranch
214
215 inline IntVarBranch
219
220 inline IntVarBranch
224
225 inline IntVarBranch
229
230 inline IntVarBranch
234
235 inline IntVarBranch
239
240 inline IntVarBranch
244
245 inline IntVarBranch
249
250 inline IntVarBranch
254
255 inline IntVarBranch
259
260 inline IntVarBranch
264
265 inline IntVarBranch
269
270 inline IntVarBranch
274
275 inline IntVarBranch
279
280 inline IntVarBranch
284
285 inline IntVarBranch
289
290 inline IntVarBranch
294
295 inline IntVarBranch
299
300 inline IntVarBranch
304
305
306
309 : s(SEL_NONE) {}
310
314
318
322
326
330
334
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
377
378 inline BoolVarBranch
382
383 inline BoolVarBranch
387
388 inline BoolVarBranch
392
393 inline BoolVarBranch
396 }
397
398 inline BoolVarBranch
402
403 inline BoolVarBranch
406 }
407
408 inline BoolVarBranch
412
413 inline BoolVarBranch
417
418 inline BoolVarBranch
422
423 inline BoolVarBranch
427
428 inline BoolVarBranch
432
433 inline BoolVarBranch
437
438 inline BoolVarBranch
442
443 inline BoolVarBranch
447
448 inline BoolVarBranch
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
Definition var.hpp:180
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:187