Generated on Tue Jul 18 2017 18:41:42 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  * Last modified:
10  * $Date: 2017-03-08 11:58:56 +0100 (Wed, 08 Mar 2017) $ by $Author: schulte $
11  * $Revision: 15562 $
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 
42  : s(SEL_NONE) {}
43 
46  : VarBranch<IntVar>(t), s(s0) {}
47 
50  : VarBranch<IntVar>(r), s(SEL_RND) {}
51 
54  : VarBranch<IntVar>(d,t), s(s0) {}
55 
58  : VarBranch<IntVar>(a,t), s(s0) {}
59 
62  : VarBranch<IntVar>(a,t), s(s0) {}
63 
66  : VarBranch<IntVar>(c,t), s(s0) {}
67 
70  : VarBranch<IntVar>(mf,t), s(s0) {}
71 
73  IntVarBranch::select(void) const {
74  return s;
75  }
76 
77  forceinline void
79  switch (select()) {
80  case SEL_AFC_MIN: case SEL_AFC_MAX:
82  if (!_afc)
83  _afc = IntAFC(home,x,decay());
84  break;
85  case SEL_ACTION_MIN: case SEL_ACTION_MAX:
87  if (!_act)
88  _act = IntAction(home,x,decay());
89  break;
90  case SEL_CHB_MIN: case SEL_CHB_MAX:
92  if (!_chb)
93  _chb = IntCHB(home,x);
94  break;
95  default: ;
96  }
97  }
98 
99  inline IntVarBranch
100  INT_VAR_NONE(void) {
101  return IntVarBranch(IntVarBranch::SEL_NONE,nullptr);
102  }
103 
104  inline IntVarBranch
106  return IntVarBranch(r);
107  }
108 
109  inline IntVarBranch
112  }
113 
114  inline IntVarBranch
117  }
118 
119  inline IntVarBranch
122  }
123 
124  inline IntVarBranch
127  }
128 
129  inline IntVarBranch
132  }
133 
134  inline IntVarBranch
137  }
138 
139  inline IntVarBranch
142  }
143 
144  inline IntVarBranch
147  }
148 
149  inline IntVarBranch
152  }
153 
154  inline IntVarBranch
157  }
158 
159  inline IntVarBranch
162  }
163 
164  inline IntVarBranch
167  }
168 
169  inline IntVarBranch
172  }
173 
174  inline IntVarBranch
177  }
178 
179  inline IntVarBranch
182  }
183 
184  inline IntVarBranch
187  }
188 
189  inline IntVarBranch
192  }
193 
194  inline IntVarBranch
197  }
198 
199  inline IntVarBranch
202  }
203 
204  inline IntVarBranch
207  }
208 
209  inline IntVarBranch
212  }
213 
214  inline IntVarBranch
217  }
218 
219  inline IntVarBranch
222  }
223 
224  inline IntVarBranch
227  }
228 
229  inline IntVarBranch
232  }
233 
234  inline IntVarBranch
237  }
238 
239  inline IntVarBranch
242  }
243 
244  inline IntVarBranch
247  }
248 
249  inline IntVarBranch
252  }
253 
254  inline IntVarBranch
257  }
258 
259  inline IntVarBranch
262  }
263 
264  inline IntVarBranch
267  }
268 
269  inline IntVarBranch
272  }
273 
274  inline IntVarBranch
277  }
278 
279  inline IntVarBranch
282  }
283 
284  inline IntVarBranch
287  }
288 
289  inline IntVarBranch
292  }
293 
294  inline IntVarBranch
297  }
298 
299  inline IntVarBranch
302  }
303 
304  inline IntVarBranch
307  }
308 
309 
310 
313  : s(SEL_NONE) {}
314 
317  : VarBranch<BoolVar>(t), s(s0) {}
318 
321  : VarBranch<BoolVar>(r), s(SEL_RND) {}
322 
325  : VarBranch<BoolVar>(d,t), s(s0) {}
326 
329  : VarBranch<BoolVar>(a,t), s(s0) {}
330 
333  : VarBranch<BoolVar>(a,t), s(s0) {}
334 
337  : VarBranch<BoolVar>(c,t), s(s0) {}
338 
341  : VarBranch<BoolVar>(mf,t), s(s0) {}
342 
344  BoolVarBranch::select(void) const {
345  return s;
346  }
347 
348  forceinline void
350  switch (select()) {
351  case SEL_AFC_MIN: case SEL_AFC_MAX:
352  if (!_afc)
353  _afc = BoolAFC(home,x,decay());
354  break;
355  case SEL_ACTION_MIN: case SEL_ACTION_MAX:
356  if (!_act)
357  _act = BoolAction(home,x,decay());
358  break;
359  case SEL_CHB_MIN: case SEL_CHB_MAX:
360  if (!_chb)
361  _chb = BoolCHB(home,x);
362  break;
363  default: ;
364  }
365  }
366 
367  inline BoolVarBranch
369  return BoolVarBranch(BoolVarBranch::SEL_NONE,nullptr);
370  }
371 
372  inline BoolVarBranch
374  return BoolVarBranch(r);
375  }
376 
377  inline BoolVarBranch
380  }
381 
382  inline BoolVarBranch
385  }
386 
387  inline BoolVarBranch
390  }
391 
392  inline BoolVarBranch
395  }
396 
397  inline BoolVarBranch
400  }
401 
402  inline BoolVarBranch
405  }
406 
407  inline BoolVarBranch
410  }
411 
412  inline BoolVarBranch
415  }
416 
417  inline BoolVarBranch
420  }
421 
422  inline BoolVarBranch
425  }
426 
427  inline BoolVarBranch
430  }
431 
432  inline BoolVarBranch
435  }
436 
437  inline BoolVarBranch
440  }
441 
442  inline BoolVarBranch
445  }
446 
447  inline BoolVarBranch
450  }
451 
452  inline BoolVarBranch
455  }
456 
457 }
458 
459 // STATISTICS: int-branch
std::function< double(const Space &home, BoolVar x, int i)> BoolBranchMerit
Branch merit function type for Boolean variables.
Definition: int.hh:3876
With smallest accumulated failure count.
Definition: int.hh:4229
IntVarBranch INT_VAR_DEGREE_SIZE_MAX(BranchTbl tbl)
Select variable with largest degree divided by domain size.
Definition: var.hpp:225
NodeType t
Type of node.
Definition: bool-expr.cpp:234
IntVarBranch INT_VAR_CHB_SIZE_MAX(IntCHB c, BranchTbl tbl)
Select variable with largest CHB Q-score divided by domain size.
Definition: var.hpp:280
IntVarBranch INT_VAR_NONE(void)
Select first unassigned variable.
Definition: var.hpp:100
Select s
Which variable to select.
Definition: int.hh:4276
BoolVarBranch BOOL_VAR_NONE(void)
Select first unassigned variable.
Definition: var.hpp:368
CHB _chb
CHB information.
Definition: branch-var.hpp:75
BoolVarBranch BOOL_VAR_AFC_MIN(double d, BranchTbl tbl)
Select variable with smallest accumulated failure count with decay factor d.
Definition: var.hpp:398
With largest min-regret.
Definition: int.hh:4260
With smallest accumulated failure count.
Definition: int.hh:4315
With smallest degree.
Definition: int.hh:4227
IntVarBranch INT_VAR_SIZE_MAX(BranchTbl tbl)
Select variable with largest domain size.
Definition: var.hpp:215
Which integer variable to select for branching.
Definition: int.hh:4219
With largest accumulated failure count.
Definition: int.hh:4230
AFC _afc
AFC information.
Definition: branch-var.hpp:71
IntVarBranch INT_VAR_REGRET_MIN_MIN(BranchTbl tbl)
Select variable with smallest min-regret.
Definition: var.hpp:290
IntVarBranch INT_VAR_DEGREE_MAX(BranchTbl tbl)
Select variable with largest degree.
Definition: var.hpp:125
BoolVarBranch BOOL_VAR_ACTION_MIN(double d, BranchTbl tbl)
Select variable with lowest action with decay factor d.
Definition: var.hpp:418
With largest accumulated failure count divided by domain size.
Definition: int.hh:4244
First unassigned.
Definition: int.hh:4223
IntVarBranch INT_VAR_AFC_MIN(double d, BranchTbl tbl)
Select variable with smallest accumulated failure count with decay factor d.
Definition: var.hpp:130
With highest action.
Definition: int.hh:4318
IntVarBranch INT_VAR_CHB_SIZE_MIN(IntCHB c, BranchTbl tbl)
Select variable with smallest CHB Q-score divided by domain size.
Definition: var.hpp:270
IntVarBranch INT_VAR_MERIT_MAX(IntBranchMerit bm, BranchTbl tbl)
Select variable with highest merit according to branch merit function bm.
Definition: var.hpp:115
BoolVarBranch BOOL_VAR_MERIT_MIN(BoolBranchMerit bm, BranchTbl tbl)
Select variable with least merit according to branch merit function bm.
Definition: var.hpp:378
IntVarBranch INT_VAR_REGRET_MIN_MAX(BranchTbl tbl)
Select variable with largest min-regret.
Definition: var.hpp:295
Action _act
Action information.
Definition: branch-var.hpp:73
With largest accumulated failure count.
Definition: int.hh:4316
With lowest action.
Definition: int.hh:4317
With smallest min.
Definition: int.hh:4235
IntVarBranch(void)
Initialize with strategy SEL_NONE.
Definition: var.hpp:41
With lowest action.
Definition: int.hh:4231
Random (uniform, for tie breaking)
Definition: int.hh:4310
Gecode::IntSet d(v, 7)
IntVarBranch INT_VAR_MAX_MAX(BranchTbl tbl)
Select variable with largest max.
Definition: var.hpp:205
Select s
Which variable to select.
Definition: int.hh:4324
struct Gecode::@579::NNF::@61::@63 a
For atomic nodes.
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:160
With smallest max-regret.
Definition: int.hh:4266
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:240
With smallest degree.
Definition: int.hh:4313
With smallest min-regret.
Definition: int.hh:4254
With largest action divided by domain size.
Definition: int.hh:4246
IntVarBranch INT_VAR_MIN_MIN(BranchTbl tbl)
Select variable with smallest min.
Definition: var.hpp:190
double decay(void) const
Return decay factor.
Definition: branch-var.hpp:184
BoolVarBranch BOOL_VAR_DEGREE_MIN(BranchTbl tbl)
Select variable with smallest degree.
Definition: var.hpp:388
IntVarBranch INT_VAR_MERIT_MIN(IntBranchMerit bm, BranchTbl tbl)
Select variable with least merit according to branch merit function bm.
Definition: var.hpp:110
Recording AFC information for integer variables.
Definition: int.hh:3943
Select select(void) const
Return selection strategy.
Definition: var.hpp:344
BoolVarBranch BOOL_VAR_CHB_MAX(BoolCHB c, BranchTbl tbl)
Select variable with largest CHB Q-score.
Definition: var.hpp:448
std::function< double(const Space &home, double w, double b)> BranchTbl
Tie-break limit function.
Definition: branch-var.hpp:52
With largest max.
Definition: int.hh:4238
IntVarBranch INT_VAR_RND(Rnd r)
Select random variable (uniform distribution, for tie breaking)
Definition: var.hpp:105
With largest domain size.
Definition: int.hh:4240
Recording AFC information for Boolean variables.
Definition: int.hh:3974
Recording actions for Boolean variables.
Definition: int.hh:4056
Which Boolean variable to select for branching.
Definition: int.hh:4305
IntVarBranch INT_VAR_AFC_MAX(double d, BranchTbl tbl)
Select variable with largest accumulated failure count with decay factor d.
Definition: var.hpp:140
With largest CHB Q-score divided by domain size.
Definition: int.hh:4248
Recording CHB for integer variables.
Definition: int.hh:4107
With largest degree divided by domain size.
Definition: int.hh:4242
Passing integer variables.
Definition: int.hh:639
Passing Boolean variables.
Definition: int.hh:693
With highest action.
Definition: int.hh:4232
With smallest CHB Q-score divided by domain size.
Definition: int.hh:4247
With largest degree.
Definition: int.hh:4228
Boolean integer variables.
Definition: int.hh:494
With highest CHB.
Definition: int.hh:4320
Post propagator for SetVar SetOpType SetVar SetRelType r
Definition: set.hh:784
IntVarBranch INT_VAR_DEGREE_MIN(BranchTbl tbl)
Select variable with smallest degree.
Definition: var.hpp:120
With smallest degree divided by domain size.
Definition: int.hh:4241
With smallest max.
Definition: int.hh:4237
IntVarBranch INT_VAR_CHB_MIN(IntCHB c, BranchTbl tbl)
Select variable with lowest CHB Q-score.
Definition: var.hpp:170
IntVarBranch INT_VAR_SIZE_MIN(BranchTbl tbl)
Select variable with smallest domain size.
Definition: var.hpp:210
BoolVarBranch BOOL_VAR_AFC_MAX(double d, BranchTbl tbl)
Select variable with largest accumulated failure count with decay factor d.
Definition: var.hpp:408
Variable branching information.
Definition: branch-var.hpp:59
void expand(Home home, const IntVarArgs &x)
Expand AFC, action, and CHB.
Definition: var.hpp:78
BoolVarBranch BOOL_VAR_DEGREE_MAX(BranchTbl tbl)
Select variable with largest degree.
Definition: var.hpp:393
With highest CHB Q-score.
Definition: int.hh:4234
IntVarBranch INT_VAR_MIN_MAX(BranchTbl tbl)
Select variable with largest min.
Definition: var.hpp:195
Integer variables.
Definition: int.hh:353
With lowest CHB Q-score.
Definition: int.hh:4233
IntVarBranch INT_VAR_ACTION_MIN(double d, BranchTbl tbl)
Select variable with lowest action with decay factor d.
Definition: var.hpp:150
BoolVarBranch BOOL_VAR_ACTION_MAX(double d, BranchTbl tbl)
Select variable with highest action with decay factor d.
Definition: var.hpp:428
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:230
#define forceinline
Definition: config.hpp:173
IntVarBranch INT_VAR_REGRET_MAX_MIN(BranchTbl tbl)
Select variable with smallest max-regret.
Definition: var.hpp:300
BranchTbl tbl(void) const
Return tie-break limit function.
Definition: branch-var.hpp:172
Select
Which variable selection.
Definition: int.hh:4222
With smallest action divided by domain size.
Definition: int.hh:4245
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:250
IntVarBranch INT_VAR_MAX_MIN(BranchTbl tbl)
Select variable with smallest max.
Definition: var.hpp:200
Select select(void) const
Return selection strategy.
Definition: var.hpp:73
IntVarBranch INT_VAR_REGRET_MAX_MAX(BranchTbl tbl)
Select variable with largest max-regret.
Definition: var.hpp:305
Random (uniform, for tie breaking)
Definition: int.hh:4224
Select
Which variable selection.
Definition: int.hh:4308
With largest degree.
Definition: int.hh:4314
With smallest domain size.
Definition: int.hh:4239
Post propagator for SetVar x
Definition: set.hh:784
First unassigned.
Definition: int.hh:4309
BoolVarBranch BOOL_VAR_RND(Rnd r)
Select random variable (uniform distribution, for tie breaking)
Definition: var.hpp:373
IntVarBranch INT_VAR_CHB_MAX(IntCHB c, BranchTbl tbl)
Select variable with largest CHB Q-score.
Definition: var.hpp:180
Recording CHB for Boolean variables.
Definition: int.hh:4151
With highest merit.
Definition: int.hh:4226
With largest min.
Definition: int.hh:4236
Gecode toplevel namespace
With highest merit.
Definition: int.hh:4312
void expand(Home home, const BoolVarArgs &x)
Expand decay factor into AFC or action.
Definition: var.hpp:349
BoolVarBranch BOOL_VAR_CHB_MIN(BoolCHB c, BranchTbl tbl)
Select variable with lowest CHB Q-score.
Definition: var.hpp:438
BoolVarBranch BOOL_VAR_MERIT_MAX(BoolBranchMerit bm, BranchTbl tbl)
Select variable with highest merit according to branch merit function bm.
Definition: var.hpp:383
Random number generator.
Definition: rnd.hpp:46
IntVarBranch INT_VAR_DEGREE_SIZE_MIN(BranchTbl tbl)
Select variable with smallest degree divided by domain size.
Definition: var.hpp:220
Home class for posting propagators
Definition: core.hpp:922
std::function< double(const Space &home, IntVar x, int i)> IntBranchMerit
Branch merit function type for integer variables.
Definition: int.hh:3865
With largest max-regret.
Definition: int.hh:4272
Recording actions for integer variables.
Definition: int.hh:4011
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:260
With smallest accumulated failure count divided by domain size.
Definition: int.hh:4243
BoolVarBranch(void)
Initialize with strategy SEL_NONE.
Definition: var.hpp:312