Generated on Thu Jan 16 2025 00:00:00 for Gecode by doxygen 1.14.0
rel.hh
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 * Guido Tack <tack@gecode.org>
6 *
7 * Contributing authors:
8 * Gabor Szokoli <szokoli@gecode.org>
9 *
10 * Copyright:
11 * Christian Schulte, 2002
12 * Guido Tack, 2004
13 * Gabor Szokoli, 2003
14 *
15 * This file is part of Gecode, the generic constraint
16 * development environment:
17 * http://www.gecode.org
18 *
19 * Permission is hereby granted, free of charge, to any person obtaining
20 * a copy of this software and associated documentation files (the
21 * "Software"), to deal in the Software without restriction, including
22 * without limitation the rights to use, copy, modify, merge, publish,
23 * distribute, sublicense, and/or sell copies of the Software, and to
24 * permit persons to whom the Software is furnished to do so, subject to
25 * the following conditions:
26 *
27 * The above copyright notice and this permission notice shall be
28 * included in all copies or substantial portions of the Software.
29 *
30 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
31 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
32 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
33 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
34 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
35 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
36 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
37 *
38 */
39
40#ifndef __GECODE_INT_REL_HH__
41#define __GECODE_INT_REL_HH__
42
43#include <gecode/int.hh>
44
49
50namespace Gecode { namespace Int { namespace Rel {
51
52 /*
53 * Equality propagators
54 *
55 */
56
66 template<class View0,class View1>
67 class EqDom :
68 public MixBinaryPropagator<View0,PC_INT_DOM,View1,PC_INT_DOM> {
69 protected:
72
75 public:
77 EqDom(Home home, View0 x0, View1 x1);
79 EqDom(Space& home, Propagator& p, View0 x0, View1 x1);
81 virtual Actor* copy(Space& home);
89 virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
91 virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
93 static ExecStatus post(Home home, View0 x0, View1 x1);
94 };
95
102 template<class View0, class View1>
103 class EqVal :
104 public MixBinaryPropagator<View0,PC_INT_VAL,View1,PC_INT_VAL> {
105 protected:
108
110 EqVal(Space& home, EqVal<View0,View1>& p);
111 public:
113 EqVal(Home home, View0 x0, View1 x1);
115 EqVal(Space& home, Propagator& p, View0 x0, View1 x1);
117 virtual Actor* copy(Space& home);
119 virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
121 virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
123 static ExecStatus post(Home home, View0 x0, View1 x1);
124 };
125
132 template<class View0, class View1>
133 class EqBnd :
134 public MixBinaryPropagator<View0,PC_INT_BND,View1,PC_INT_BND> {
135 protected:
138
140 EqBnd(Space& home, EqBnd<View0,View1>& p);
141 public:
143 EqBnd(Home home, View0 x0, View1 x1);
145 EqBnd(Space& home, Propagator& p, View0 x0, View1 x1);
147 virtual Actor* copy(Space& home);
149 virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
151 static ExecStatus post(Home home, View0 x0, View1 x1);
152 };
153
163 template<class View>
164 class NaryEqDom : public NaryPropagator<View,PC_INT_DOM> {
165 protected:
167
172 public:
174 virtual Actor* copy(Space& home);
182 virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
184 virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
186 static ExecStatus post(Home home, ViewArray<View>& x);
187 };
188
195 template<class View>
196 class NaryEqBnd : public NaryPropagator<View,PC_INT_BND> {
197 protected:
199
204 public:
206 virtual Actor* copy(Space& home);
213 virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
215 virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
217 static ExecStatus post(Home home, ViewArray<View>& x);
218 };
219
229 template<class View, int o>
230 class NaryLqLe : public NaryPropagator<View,PC_INT_NONE> {
231 protected:
234 class Index : public Advisor {
235 public:
237 int i;
239 Index(Space& home, Propagator& p, Council<Index>& c, int i);
241 Index(Space& home, Index& a);
242 };
243
246 class Pos : public FreeList {
247 public:
249 int p;
250
252
253
254 Pos(int p, Pos* n);
256
258
259
260 Pos* next(void) const;
262
264
265
266 void dispose(Space& home);
267
269 static void* operator new(size_t s, Space& home);
271 static void operator delete(void* p);
273 static void operator delete(void* p, Space& home);
275 };
276
279 bool empty(void) const;
281 int pop(Space& home);
283 void push(Space& home, int p);
285 bool run;
289 static const int n_threshold = 7;
294 public:
296 virtual Actor* copy(Space& home);
298 virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
300 virtual void reschedule(Space& home);
302 virtual ExecStatus advise(Space& home, Advisor& a, const Delta& d);
304 virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
306 virtual size_t dispose(Space& home);
308 static ExecStatus post(Home home, ViewArray<View>& x);
309 };
310
317 template<class View>
318 class NaryNq : public NaryPropagator<View,PC_INT_VAL> {
319 protected:
324 NaryNq(Space& home, NaryNq<View>& p);
325 public:
327 virtual Actor* copy(Space& home);
329 virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
331 virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
333 static ExecStatus post(Home home, ViewArray<View>& x);
335 virtual size_t dispose(Space& home);
336 };
337
338
345 template<class View, class CtrlView, ReifyMode rm>
346 class ReEqDom : public ReBinaryPropagator<View,PC_INT_DOM,CtrlView> {
347 protected:
348 using ReBinaryPropagator<View,PC_INT_DOM,CtrlView>::x0;
349 using ReBinaryPropagator<View,PC_INT_DOM,CtrlView>::x1;
350 using ReBinaryPropagator<View,PC_INT_DOM,CtrlView>::b;
351
353 ReEqDom(Space& home, ReEqDom& p);
355 ReEqDom(Home home, View x0, View x1, CtrlView b);
356 public:
358 virtual Actor* copy(Space& home);
360 virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
362 static ExecStatus post(Home home, View x0, View x1, CtrlView b);
363 };
364
371 template<class View, class CtrlView, ReifyMode rm>
372 class ReEqBnd : public ReBinaryPropagator<View,PC_INT_BND,CtrlView> {
373 protected:
374 using ReBinaryPropagator<View,PC_INT_BND,CtrlView>::x0;
375 using ReBinaryPropagator<View,PC_INT_BND,CtrlView>::x1;
376 using ReBinaryPropagator<View,PC_INT_BND,CtrlView>::b;
377
379 ReEqBnd(Space& home, ReEqBnd& p);
381 ReEqBnd(Home home, View x0, View x1, CtrlView b);
382 public:
384 virtual Actor* copy(Space& home);
386 virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
388 static ExecStatus post(Home home, View x0, View x1, CtrlView b);
389 };
390
397 template<class View, class CtrlView, ReifyMode rm>
398 class ReEqDomInt : public ReUnaryPropagator<View,PC_INT_DOM,CtrlView> {
399 protected:
400 using ReUnaryPropagator<View,PC_INT_DOM,CtrlView>::x0;
401 using ReUnaryPropagator<View,PC_INT_DOM,CtrlView>::b;
402
404 int c;
406 ReEqDomInt(Space& home, ReEqDomInt& p);
408 ReEqDomInt(Home home, View x, int c, CtrlView b);
409 public:
411 virtual Actor* copy(Space& home);
413 virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
415 static ExecStatus post(Home home, View x, int c, CtrlView b);
416 };
417
424 template<class View, class CtrlView, ReifyMode rm>
425 class ReEqBndInt : public ReUnaryPropagator<View,PC_INT_BND,CtrlView> {
426 protected:
427 using ReUnaryPropagator<View,PC_INT_BND,CtrlView>::x0;
428 using ReUnaryPropagator<View,PC_INT_BND,CtrlView>::b;
429
431 int c;
433 ReEqBndInt(Space& home, ReEqBndInt& p);
435 ReEqBndInt(Home home, View x, int c, CtrlView b);
436 public:
438 virtual Actor* copy(Space& home);
440 virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
442 static ExecStatus post(Home home, View x, int c, CtrlView b);
443 };
444
445
446
447
448 /*
449 * Disequality propagators
450 *
451 */
452
459 template<class V0, class V1>
460 class Nq : public MixBinaryPropagator<V0,PC_INT_VAL,V1,PC_INT_VAL> {
461 protected:
464
466 Nq(Space& home, Nq<V0,V1>& p);
468 Nq(Home home, V0 x0, V1 x1);
469 public:
471 virtual Actor* copy(Space& home);
473 virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
475 virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
477 static ExecStatus post(Home home, V0 x0, V1 x1);
478 };
479
480 /*
481 * Order propagators
482 *
483 */
484
491
492 template<class V0, class V1>
493 class Lq : public MixBinaryPropagator<V0,PC_INT_BND,V1,PC_INT_BND> {
494 protected:
498 Lq(Space& home, Lq& p);
500 Lq(Home home, V0 x0, V1 x1);
501 public:
503 virtual Actor* copy(Space& home);
505 virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
507 static ExecStatus post(Home home, V0 x0, V1 x1);
508 };
509
516 template<class V0, class V1>
517 class Le : public MixBinaryPropagator<V0,PC_INT_BND,V1,PC_INT_BND> {
518 protected:
522 Le(Space& home, Le& p);
524 Le(Home home, V0 x0, V1 x1);
525 public:
527 virtual Actor* copy(Space& home);
529 virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
531 static ExecStatus post(Home home, V0 x0, V1 x1);
532 };
533
534
535 /*
536 * Reified order propagators
537 *
538 */
539
546
547 template<class View, class CtrlView, ReifyMode rm>
548 class ReLq : public ReBinaryPropagator<View,PC_INT_BND,CtrlView> {
549 protected:
550 using ReBinaryPropagator<View,PC_INT_BND,CtrlView>::x0;
551 using ReBinaryPropagator<View,PC_INT_BND,CtrlView>::x1;
552 using ReBinaryPropagator<View,PC_INT_BND,CtrlView>::b;
553
555 ReLq(Space& home, ReLq& p);
557 ReLq(Home home, View x0, View x1, CtrlView b);
558 public:
560 virtual Actor* copy(Space& home);
562 virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
564 static ExecStatus post(Home home, View x0, View x1, CtrlView b);
565 };
566
573
574 template<class View, class CtrlView, ReifyMode rm>
575 class ReLqInt : public ReUnaryPropagator<View,PC_INT_BND,CtrlView> {
576 protected:
577 using ReUnaryPropagator<View,PC_INT_BND,CtrlView>::x0;
578 using ReUnaryPropagator<View,PC_INT_BND,CtrlView>::b;
579
581 int c;
583 ReLqInt(Space& home, ReLqInt& p);
585 ReLqInt(Home home, View x, int c, CtrlView b);
586 public:
588 virtual Actor* copy(Space& home);
590 virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
592 static ExecStatus post(Home home, View x, int c, CtrlView b);
593 };
594
595
596
597
598
622 template<class VX, class VY>
623 class LexLqLe : public Propagator {
624 protected:
629 bool strict;
631 LexLqLe(Space& home, LexLqLe<VX,VY>& p);
634 public:
636 virtual Actor* copy(Space& home);
638 virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
640 virtual void reschedule(Space& home);
642 virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
645 bool strict);
647 virtual size_t dispose(Space& home);
648 };
649
656 template<class VX, class VY>
657 class LexNq : public Propagator {
658 protected:
660 VX x0;
662 VY y0;
664 VX x1;
666 VY y1;
673 RelTest rt, VX& x0, VY& y0, VX x1, VY y1);
677 LexNq(Space& home, LexNq<VX,VY>& p);
678 public:
680 virtual Actor* copy(Space& home);
682 virtual PropCost cost(const Space& home, const ModEventDelta& med) const;
684 virtual void reschedule(Space& home);
686 virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
690 virtual size_t dispose(Space& home);
691 };
692
693}}}
694
695#include <gecode/int/rel/eq.hpp>
696#include <gecode/int/rel/nq.hpp>
698#include <gecode/int/rel/lex.hpp>
699
700#endif
701
702
703// STATISTICS: int-prop
704
Advisor(Space &home, Propagator &p, Council< A > &c)
Constructor for creation.
Definition core.hpp:3838
friend class Council
Definition core.hpp:1296
Generic domain change information to be supplied to advisors.
Definition core.hpp:204
FreeList(void)
Use uninitialized.
Definition manager.hpp:241
Home class for posting propagators
Definition core.hpp:856
ReBinaryPropagator(Space &home, ReBinaryPropagator &p)
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition eq.hpp:137
EqBnd(Space &home, EqBnd< View0, View1 > &p)
Constructor for cloning p.
Definition eq.hpp:125
static ExecStatus post(Home home, View0 x0, View1 x1)
Post bounds consistent propagator .
Definition eq.hpp:108
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition eq.hpp:143
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition eq.hpp:206
static ExecStatus post(Home home, View0 x0, View1 x1)
Post domain consistent propagator .
Definition eq.hpp:176
EqDom(Space &home, EqDom< View0, View1 > &p)
Constructor for cloning p.
Definition eq.hpp:194
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
Definition eq.hpp:212
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition eq.hpp:223
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function: low unary.
Definition eq.hpp:79
static ExecStatus post(Home home, View0 x0, View1 x1)
Post value propagation propagator .
Definition eq.hpp:48
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition eq.hpp:73
EqVal(Space &home, EqVal< View0, View1 > &p)
Constructor for cloning p.
Definition eq.hpp:61
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition eq.hpp:85
Le(Space &home, Le &p)
Constructor for cloning p.
Definition lq-le.hpp:103
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition lq-le.hpp:108
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition lq-le.hpp:114
static ExecStatus post(Home home, V0 x0, V1 x1)
Post propagator .
Definition lq-le.hpp:91
virtual size_t dispose(Space &home)
Delete propagator and return its size.
Definition lex.hpp:77
ViewArray< VY > y
Definition rel.hh:627
ViewArray< VX > x
View arrays.
Definition rel.hh:626
static ExecStatus post(Home home, ViewArray< VX > &x, ViewArray< VY > &y, bool strict)
Post propagator for lexical order between x and y.
Definition lex.hpp:241
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low linear)
Definition lex.hpp:64
LexLqLe(Space &home, LexLqLe< VX, VY > &p)
Constructor for cloning p.
Definition lex.hpp:50
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition lex.hpp:87
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition lex.hpp:58
virtual void reschedule(Space &home)
Schedule function.
Definition lex.hpp:70
bool strict
Determines whether propagator is strict or not.
Definition rel.hh:629
VY y0
View currently subscribed to.
Definition rel.hh:662
ExecStatus resubscribe(Space &home, RelTest rt, VX &x0, VY &y0, VX x1, VY y1)
Update subscription.
Definition lex.hpp:376
virtual size_t dispose(Space &home)
Delete propagator and return its size.
Definition lex.hpp:367
VX x0
View currently subscribed to.
Definition rel.hh:660
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition lex.hpp:305
virtual void reschedule(Space &home)
Schedule function.
Definition lex.hpp:287
VX x1
View currently subscribed to.
Definition rel.hh:664
ViewArray< VX > x
Views not yet subscribed to.
Definition rel.hh:668
LexNq(Home home, ViewArray< VX > &x, ViewArray< VY > &y)
Constructor for posting.
Definition lex.hpp:266
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition lex.hpp:409
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
Definition lex.hpp:281
VY y1
View currently subscribed to.
Definition rel.hh:666
static ExecStatus post(Home home, ViewArray< VX > &x, ViewArray< VY > &y)
Post propagator .
Definition lex.hpp:332
ViewArray< VY > y
Views not yet subscribed to.
Definition rel.hh:670
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition lq-le.hpp:71
static ExecStatus post(Home home, V0 x0, V1 x1)
Post propagator .
Definition lq-le.hpp:50
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition lq-le.hpp:65
Lq(Space &home, Lq &p)
Constructor for cloning p.
Definition lq-le.hpp:60
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition eq.hpp:429
static ExecStatus post(Home home, ViewArray< View > &x)
Post bounds consistent propagator .
Definition eq.hpp:402
NaryEqBnd(Space &home, NaryEqBnd< View > &p)
Constructor for cloning p.
Definition eq.hpp:424
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition eq.hpp:444
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
Definition eq.hpp:435
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition eq.hpp:313
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
Definition eq.hpp:303
NaryEqDom(Space &home, NaryEqDom< View > &p)
Constructor for cloning p.
Definition eq.hpp:292
static ExecStatus post(Home home, ViewArray< View > &x)
Post domain consistent propagator .
Definition eq.hpp:270
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition eq.hpp:297
Index(Space &home, Propagator &p, Council< Index > &c, int i)
Create index advisor.
Definition lq-le.hpp:129
int i
The position of the view in the view array.
Definition rel.hh:237
Positions in view array that have to be propagated.
Definition rel.hh:246
int p
Position of view in view array.
Definition rel.hh:249
Pos(int p, Pos *n)
Initialize with position p and next position n.
Definition lq-le.hpp:142
void dispose(Space &home)
Free memory for this position.
Definition lq-le.hpp:169
Pos * next(void) const
Return next position.
Definition lq-le.hpp:147
bool empty(void) const
Whether no more positions must be propagated.
Definition lq-le.hpp:176
void push(Space &home, int p)
Push a new position p to be propagated.
Definition lq-le.hpp:181
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition lq-le.hpp:291
Council< Index > c
The advisor council.
Definition rel.hh:244
virtual size_t dispose(Space &home)
Delete propagator and return its size.
Definition lq-le.hpp:323
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
Definition lq-le.hpp:317
static const int n_threshold
Compact during cloning when more advisors than that are subsumed.
Definition rel.hh:289
bool run
Whether the propagator is currently running.
Definition rel.hh:285
int n_subsumed
Number of already subsumed advisors (or views)
Definition rel.hh:287
virtual void reschedule(Space &home)
Schedule function.
Definition lq-le.hpp:368
static ExecStatus post(Home home, ViewArray< View > &x)
Post propagator for .
Definition lq-le.hpp:208
virtual ExecStatus advise(Space &home, Advisor &a, const Delta &d)
Give advice to propagator.
Definition lq-le.hpp:336
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition lq-le.hpp:374
NaryLqLe(Space &home, NaryLqLe< View, o > &p)
Constructor for cloning p.
Definition lq-le.hpp:282
Pos * pos
Stack of positions.
Definition rel.hh:277
int pop(Space &home)
Pop a position to be propagated and return it.
Definition lq-le.hpp:189
virtual size_t dispose(Space &home)
Delete propagator and return its size.
Definition nq.hpp:151
NaryNq(Home home, ViewArray< View > &x)
Constructor for posting.
Definition nq.hpp:96
static ExecStatus post(Home home, ViewArray< View > &x)
Post propagator .
Definition nq.hpp:118
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition nq.hpp:112
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition nq.hpp:158
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
Definition nq.hpp:101
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low unary)
Definition nq.hpp:75
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition nq.hpp:81
static ExecStatus post(Home home, V0 x0, V1 x1)
Post propagator .
Definition nq.hpp:49
Nq(Space &home, Nq< V0, V1 > &p)
Constructor for cloning p.
Definition nq.hpp:64
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition nq.hpp:69
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition eq.hpp:751
int c
Integer constant to check.
Definition rel.hh:431
static ExecStatus post(Home home, View x, int c, CtrlView b)
Post bounds consistent propagator .
Definition eq.hpp:721
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition eq.hpp:757
ReEqBndInt(Space &home, ReEqBndInt &p)
Constructor for cloning p.
Definition eq.hpp:746
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition eq.hpp:601
static ExecStatus post(Home home, View x0, View x1, CtrlView b)
Post bounds consistent propagator .
Definition eq.hpp:568
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition eq.hpp:595
ReEqBnd(Space &home, ReEqBnd &p)
Constructor for cloning p.
Definition eq.hpp:590
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition eq.hpp:680
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition eq.hpp:674
static ExecStatus post(Home home, View x, int c, CtrlView b)
Post domain consistent propagator .
Definition eq.hpp:644
ReEqDomInt(Space &home, ReEqDomInt &p)
Constructor for cloning p.
Definition eq.hpp:669
int c
Integer constant to check.
Definition rel.hh:404
ReEqDom(Space &home, ReEqDom &p)
Constructor for cloning p.
Definition eq.hpp:516
static ExecStatus post(Home home, View x0, View x1, CtrlView b)
Post domain consistent propagator .
Definition eq.hpp:494
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition eq.hpp:527
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition eq.hpp:521
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition lq-le.hpp:542
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition lq-le.hpp:536
ReLqInt(Space &home, ReLqInt &p)
Constructor for cloning p.
Definition lq-le.hpp:531
int c
Integer constant to check.
Definition rel.hh:581
static ExecStatus post(Home home, View x, int c, CtrlView b)
Post propagator for .
Definition lq-le.hpp:502
ReLq(Space &home, ReLq &p)
Constructor for cloning p.
Definition lq-le.hpp:454
static ExecStatus post(Home home, View x0, View x1, CtrlView b)
Post propagator for .
Definition lq-le.hpp:420
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Definition lq-le.hpp:459
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Definition lq-le.hpp:465
NaryPropagator(Space &home, NaryPropagator &p)
Propagation cost.
Definition core.hpp:486
friend class Space
Definition core.hpp:1068
friend class Advisor
Definition core.hpp:1070
friend class Council
Definition core.hpp:1071
ModEventDelta med
A set of modification events (used during propagation)
Definition core.hpp:1077
Propagator(Home home)
Constructor for posting.
Definition core.hpp:3505
View arrays.
Definition array.hpp:253
int ModEventDelta
Modification event deltas.
Definition core.hpp:89
Simple relation propagators.
Finite domain integers.
const Gecode::PropCond PC_INT_VAL
Propagate when a view becomes assigned (single value)
Definition var-type.hpp:82
const Gecode::PropCond PC_INT_BND
Propagate when minimum or maximum of a view changes.
Definition var-type.hpp:91
const Gecode::PropCond PC_INT_NONE
Propagation condition to be ignored (convenience)
Definition var-type.hpp:74
const Gecode::PropCond PC_INT_DOM
Propagate when domain changes.
Definition var-type.hpp:100
RelTest
Result of testing relation.
Definition view.hpp:1734
Gecode toplevel namespace
ExecStatus
Definition core.hpp:472
Post propagator for SetVar x
Definition set.hh:773