Generated on Sat Jan 12 2019 20:58:51 for Gecode by doxygen 1.8.13
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 
34 namespace 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 
69  IntVarBranch::select(void) const {
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;
81  case SEL_ACTION_MIN: case SEL_ACTION_MAX:
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
96  INT_VAR_NONE(void) {
97  return IntVarBranch(IntVarBranch::SEL_NONE,nullptr);
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
128  }
129 
130  inline IntVarBranch
133  }
134 
135  inline IntVarBranch
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 
340  BoolVarBranch::select(void) const {
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;
351  case SEL_ACTION_MIN: case SEL_ACTION_MAX:
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
365  return BoolVarBranch(BoolVarBranch::SEL_NONE,nullptr);
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
std::function< double(const Space &home, BoolVar x, int i)> BoolBranchMerit
Branch merit function type for Boolean variables.
Definition: int.hh:4146
With smallest accumulated failure count.
Definition: int.hh:4517
IntVarBranch INT_VAR_DEGREE_SIZE_MAX(BranchTbl tbl)
Select variable with largest degree divided by domain size.
Definition: var.hpp:221
NodeType t
Type of node.
Definition: bool-expr.cpp:230
IntVarBranch INT_VAR_CHB_SIZE_MAX(IntCHB c, BranchTbl tbl)
Select variable with largest CHB Q-score divided by domain size.
Definition: var.hpp:276
IntVarBranch INT_VAR_NONE(void)
Select first unassigned variable.
Definition: var.hpp:96
Select s
Which variable to select.
Definition: int.hh:4564
BoolVarBranch BOOL_VAR_NONE(void)
Select first unassigned variable.
Definition: var.hpp:364
CHB _chb
CHB information.
Definition: var.hpp:71
BoolVarBranch BOOL_VAR_AFC_MIN(double d, BranchTbl tbl)
Select variable with smallest accumulated failure count with decay factor d.
Definition: var.hpp:394
With largest min-regret.
Definition: int.hh:4548
With smallest accumulated failure count.
Definition: int.hh:4603
With smallest degree.
Definition: int.hh:4515
IntVarBranch INT_VAR_SIZE_MAX(BranchTbl tbl)
Select variable with largest domain size.
Definition: var.hpp:211
Which integer variable to select for branching.
Definition: int.hh:4507
With largest accumulated failure count.
Definition: int.hh:4518
AFC _afc
AFC information.
Definition: var.hpp:67
IntVarBranch INT_VAR_REGRET_MIN_MIN(BranchTbl tbl)
Select variable with smallest min-regret.
Definition: var.hpp:286
IntVarBranch INT_VAR_DEGREE_MAX(BranchTbl tbl)
Select variable with largest degree.
Definition: var.hpp:121
BoolVarBranch BOOL_VAR_ACTION_MIN(double d, BranchTbl tbl)
Select variable with lowest action with decay factor d.
Definition: var.hpp:414
With largest accumulated failure count divided by domain size.
Definition: int.hh:4532
First unassigned.
Definition: int.hh:4511
IntVarBranch INT_VAR_AFC_MIN(double d, BranchTbl tbl)
Select variable with smallest accumulated failure count with decay factor d.
Definition: var.hpp:126
With highest action.
Definition: int.hh:4606
IntVarBranch INT_VAR_CHB_SIZE_MIN(IntCHB c, BranchTbl tbl)
Select variable with smallest CHB Q-score divided by domain size.
Definition: var.hpp:266
IntVarBranch INT_VAR_MERIT_MAX(IntBranchMerit bm, BranchTbl tbl)
Select variable with highest merit according to branch merit function bm.
Definition: var.hpp:111
BoolVarBranch BOOL_VAR_MERIT_MIN(BoolBranchMerit bm, BranchTbl tbl)
Select variable with least merit according to branch merit function bm.
Definition: var.hpp:374
IntVarBranch INT_VAR_REGRET_MIN_MAX(BranchTbl tbl)
Select variable with largest min-regret.
Definition: var.hpp:291
Action _act
Action information.
Definition: var.hpp:69
#define forceinline
Definition: config.hpp:185
With largest accumulated failure count.
Definition: int.hh:4604
With lowest action.
Definition: int.hh:4605
With smallest min.
Definition: int.hh:4523
IntVarBranch(void)
Initialize with strategy SEL_NONE.
Definition: var.hpp:37
With lowest action.
Definition: int.hh:4519
Random (uniform, for tie breaking)
Definition: int.hh:4598
Gecode::IntSet d(v, 7)
IntVarBranch INT_VAR_MAX_MAX(BranchTbl tbl)
Select variable with largest max.
Definition: var.hpp:201
Select s
Which variable to select.
Definition: int.hh:4612
Gecode::FloatVal c(-8, 8)
IntVarBranch INT_VAR_ACTION_MAX(double d, BranchTbl tbl)
Select variable with highest action with decay factor d.
Definition: var.hpp:156
With smallest max-regret.
Definition: int.hh:4554
IntVarBranch INT_VAR_AFC_SIZE_MAX(double d, BranchTbl tbl)
Select variable with largest accumulated failure count divided by domain size with decay factor d...
Definition: var.hpp:236
With smallest degree.
Definition: int.hh:4601
With smallest min-regret.
Definition: int.hh:4542
With largest action divided by domain size.
Definition: int.hh:4534
IntVarBranch INT_VAR_MIN_MIN(BranchTbl tbl)
Select variable with smallest min.
Definition: var.hpp:186
double decay(void) const
Return decay factor.
Definition: var.hpp:180
BoolVarBranch BOOL_VAR_DEGREE_MIN(BranchTbl tbl)
Select variable with smallest degree.
Definition: var.hpp:384
IntVarBranch INT_VAR_MERIT_MIN(IntBranchMerit bm, BranchTbl tbl)
Select variable with least merit according to branch merit function bm.
Definition: var.hpp:106
Recording AFC information for integer variables.
Definition: int.hh:4213
Select select(void) const
Return selection strategy.
Definition: var.hpp:340
BoolVarBranch BOOL_VAR_CHB_MAX(BoolCHB c, BranchTbl tbl)
Select variable with largest CHB Q-score.
Definition: var.hpp:444
std::function< double(const Space &home, double w, double b)> BranchTbl
Tie-break limit function.
Definition: var.hpp:48
With largest max.
Definition: int.hh:4526
IntVarBranch INT_VAR_RND(Rnd r)
Select random variable (uniform distribution, for tie breaking)
Definition: var.hpp:101
With largest domain size.
Definition: int.hh:4528
Recording AFC information for Boolean variables.
Definition: int.hh:4253
Recording actions for Boolean variables.
Definition: int.hh:4344
Which Boolean variable to select for branching.
Definition: int.hh:4593
IntVarBranch INT_VAR_AFC_MAX(double d, BranchTbl tbl)
Select variable with largest accumulated failure count with decay factor d.
Definition: var.hpp:136
With largest CHB Q-score divided by domain size.
Definition: int.hh:4536
Recording CHB for integer variables.
Definition: int.hh:4395
With largest degree divided by domain size.
Definition: int.hh:4530
Passing integer variables.
Definition: int.hh:656
Passing Boolean variables.
Definition: int.hh:712
With highest action.
Definition: int.hh:4520
With smallest CHB Q-score divided by domain size.
Definition: int.hh:4535
With largest degree.
Definition: int.hh:4516
Boolean integer variables.
Definition: int.hh:512
With highest CHB.
Definition: int.hh:4608
Post propagator for SetVar SetOpType SetVar SetRelType r
Definition: set.hh:767
IntVarBranch INT_VAR_DEGREE_MIN(BranchTbl tbl)
Select variable with smallest degree.
Definition: var.hpp:116
With smallest degree divided by domain size.
Definition: int.hh:4529
With smallest max.
Definition: int.hh:4525
IntVarBranch INT_VAR_CHB_MIN(IntCHB c, BranchTbl tbl)
Select variable with lowest CHB Q-score.
Definition: var.hpp:166
IntVarBranch INT_VAR_SIZE_MIN(BranchTbl tbl)
Select variable with smallest domain size.
Definition: var.hpp:206
BoolVarBranch BOOL_VAR_AFC_MAX(double d, BranchTbl tbl)
Select variable with largest accumulated failure count with decay factor d.
Definition: var.hpp:404
Variable branching information.
Definition: var.hpp:55
void expand(Home home, const IntVarArgs &x)
Expand AFC, action, and CHB.
Definition: var.hpp:74
BoolVarBranch BOOL_VAR_DEGREE_MAX(BranchTbl tbl)
Select variable with largest degree.
Definition: var.hpp:389
With highest CHB Q-score.
Definition: int.hh:4522
IntVarBranch INT_VAR_MIN_MAX(BranchTbl tbl)
Select variable with largest min.
Definition: var.hpp:191
Integer variables.
Definition: int.hh:371
With lowest CHB Q-score.
Definition: int.hh:4521
IntVarBranch INT_VAR_ACTION_MIN(double d, BranchTbl tbl)
Select variable with lowest action with decay factor d.
Definition: var.hpp:146
BoolVarBranch BOOL_VAR_ACTION_MAX(double d, BranchTbl tbl)
Select variable with highest action with decay factor d.
Definition: var.hpp:424
IntVarBranch INT_VAR_AFC_SIZE_MIN(double d, BranchTbl tbl)
Select variable with smallest accumulated failure count divided by domain size with decay factor d...
Definition: var.hpp:226
IntVarBranch INT_VAR_REGRET_MAX_MIN(BranchTbl tbl)
Select variable with smallest max-regret.
Definition: var.hpp:296
BranchTbl tbl(void) const
Return tie-break limit function.
Definition: var.hpp:168
Select
Which variable selection.
Definition: int.hh:4510
With smallest action divided by domain size.
Definition: int.hh:4533
IntVarBranch INT_VAR_ACTION_SIZE_MIN(double d, BranchTbl tbl)
Select variable with smallest action divided by domain size with decay factor d.
Definition: var.hpp:246
IntVarBranch INT_VAR_MAX_MIN(BranchTbl tbl)
Select variable with smallest max.
Definition: var.hpp:196
Select select(void) const
Return selection strategy.
Definition: var.hpp:69
IntVarBranch INT_VAR_REGRET_MAX_MAX(BranchTbl tbl)
Select variable with largest max-regret.
Definition: var.hpp:301
Random (uniform, for tie breaking)
Definition: int.hh:4512
Select
Which variable selection.
Definition: int.hh:4596
With largest degree.
Definition: int.hh:4602
With smallest domain size.
Definition: int.hh:4527
Post propagator for SetVar x
Definition: set.hh:767
First unassigned.
Definition: int.hh:4597
BoolVarBranch BOOL_VAR_RND(Rnd r)
Select random variable (uniform distribution, for tie breaking)
Definition: var.hpp:369
IntVarBranch INT_VAR_CHB_MAX(IntCHB c, BranchTbl tbl)
Select variable with largest CHB Q-score.
Definition: var.hpp:176
Recording CHB for Boolean variables.
Definition: int.hh:4439
With highest merit.
Definition: int.hh:4514
With largest min.
Definition: int.hh:4524
Gecode toplevel namespace
With highest merit.
Definition: int.hh:4600
void expand(Home home, const BoolVarArgs &x)
Expand decay factor into AFC or action.
Definition: var.hpp:345
BoolVarBranch BOOL_VAR_CHB_MIN(BoolCHB c, BranchTbl tbl)
Select variable with lowest CHB Q-score.
Definition: var.hpp:434
BoolVarBranch BOOL_VAR_MERIT_MAX(BoolBranchMerit bm, BranchTbl tbl)
Select variable with highest merit according to branch merit function bm.
Definition: var.hpp:379
Random number generator.
Definition: rnd.hpp:42
IntVarBranch INT_VAR_DEGREE_SIZE_MIN(BranchTbl tbl)
Select variable with smallest degree divided by domain size.
Definition: var.hpp:216
Home class for posting propagators
Definition: core.hpp:853
std::function< double(const Space &home, IntVar x, int i)> IntBranchMerit
Branch merit function type for integer variables.
Definition: int.hh:4135
With largest max-regret.
Definition: int.hh:4560
struct Gecode::@593::NNF::@62::@64 a
For atomic nodes.
Recording actions for integer variables.
Definition: int.hh:4299
IntVarBranch INT_VAR_ACTION_SIZE_MAX(double d, BranchTbl tbl)
Select variable with largest action divided by domain size with decay factor d.
Definition: var.hpp:256
With smallest accumulated failure count divided by domain size.
Definition: int.hh:4531
BoolVarBranch(void)
Initialize with strategy SEL_NONE.
Definition: var.hpp:308