40 template<
class Val,
class A,
class B, PropCond pc>
44 x0.subscribe(home,*
this,pc);
45 x1.subscribe(home,*
this,pc);
48 template<
class Val,
class A,
class B, PropCond pc>
56 template<
class Val,
class A,
class B, PropCond pc>
65 template<
class Val,
class A,
class B, PropCond pc>
71 template<
class Val,
class A,
class B, PropCond pc>
74 x0.reschedule(home,*
this,pc);
75 x1.reschedule(home,*
this,pc);
78 template<
class Val,
class A,
class B, PropCond pc>
81 x0.cancel(home,*
this,pc);
82 x1.cancel(home,*
this,pc);
92 template<
class Val,
class A,
class B, PropCond pc,
class Ctrl>
96 x0.subscribe(home,*
this,pc);
97 x1.subscribe(home,*
this,pc);
101 template<
class Val,
class A,
class B, PropCond pc,
class Ctrl>
106 x0.update(home,p.
x0);
107 x1.update(home,p.
x1);
111 template<
class Val,
class A,
class B, PropCond pc,
class Ctrl>
117 template<
class Val,
class A,
class B, PropCond pc,
class Ctrl>
120 x0.reschedule(home,*
this,pc);
121 x1.reschedule(home,*
this,pc);
125 template<
class Val,
class A,
class B, PropCond pc,
class Ctrl>
128 x0.cancel(home,*
this,pc);
129 x1.cancel(home,*
this,pc);
132 return sizeof(*this);
140 template<
class Val,
class A,
class B>
145 template<
class Val,
class A,
class B>
153 template<
class Val,
class A,
class B>
158 template<
class Val,
class A,
class B>
164 template<
class Val,
class A,
class B>
179#define GECODE_INT_PV(CASE,TELL,UPDATE) \
181 bm -= (CASE); ModEvent me = (TELL); \
182 if (me_failed(me)) return ES_FAILED; \
183 if (me_modified(me)) bm |= (UPDATE); \
186 template<
class Val,
class A,
class B>
210 template<
class Val,
class A,
class B,
class Ctrl, ReifyMode rm>
215 template<
class Val,
class A,
class B,
class Ctrl, ReifyMode rm>
223 template<
class Val,
class A,
class B,
class Ctrl, ReifyMode rm>
229 template<
class Val,
class A,
class B,
class Ctrl, ReifyMode rm>
235 template<
class Val,
class A,
class B,
class Ctrl, ReifyMode rm>
248 if ((
x0.min() +
x1.min() >
c) || (
x0.max() +
x1.max() <
c)) {
253 if (
x0.assigned() &&
x1.assigned()) {
254 assert(
x0.val() +
x1.val() ==
c);
269 template<
class Val,
class A,
class B>
274 template<
class Val,
class A,
class B>
282 template<
class Val,
class A,
class B>
287 template<
class Val,
class A,
class B>
293 template<
class Val,
class A,
class B>
301 template<
class Val,
class A,
class B>
307 template<
class Val,
class A,
class B>
313 assert(
x1.assigned());
325 template<
class Val,
class A,
class B>
330 template<
class Val,
class A,
class B>
338 template<
class Val,
class A,
class B>
343 template<
class Val,
class A,
class B>
349 template<
class Val,
class A,
class B>
355 template<
class Val,
class A,
class B>
371 template<
class Val,
class A,
class B>
376 template<
class Val,
class A,
class B>
384 template<
class Val,
class A,
class B>
389 template<
class Val,
class A,
class B>
395 template<
class Val,
class A,
class B>
401 template<
class Val,
class A,
class B>
417 template<
class Val,
class A,
class B, ReifyMode rm>
422 template<
class Val,
class A,
class B, ReifyMode rm>
430 template<
class Val,
class A,
class B, ReifyMode rm>
435 template<
class Val,
class A,
class B, ReifyMode rm>
441 template<
class Val,
class A,
class B, ReifyMode rm>
454 if (
x0.max() +
x1.max() <=
c) {
459 if (
x0.min() +
x1.min() >
c) {
Base-class for both propagators and branchers.
virtual size_t dispose(Space &home)
Delete actor and return its size.
Home class for posting propagators
Boolean view for Boolean variables.
Propagator for bounds consistent binary linear equality
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
EqBin(Space &home, EqBin &p)
Constructor for cloning p.
static ExecStatus post(Home home, A x0, B x1, Val c)
Post propagator for .
virtual Actor * copy(Space &home)
Create copy during cloning.
Propagator for bounds consistent binary linear greater or equal
static ExecStatus post(Home home, A x0, B x1, Val c)
Post propagator for .
virtual Actor * copy(Space &home)
Create copy during cloning.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
GqBin(Space &home, GqBin &p)
Constructor for cloning p.
Base-class for binary linear propagators.
virtual size_t dispose(Space &home)
Delete propagator and return its size.
virtual void reschedule(Space &home)
Schedule function.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low binary)
LinBin(Space &home, LinBin &p)
Constructor for cloning p.
Propagator for bounds consistent binary linear less or equal
static ExecStatus post(Home home, A x0, B x1, Val c)
Post propagator for .
LqBin(Space &home, LqBin &p)
Constructor for cloning p.
virtual Actor * copy(Space &home)
Create copy during cloning.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Propagator for bounds consistent binary linear disequality
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
NqBin(Space &home, NqBin &p)
Constructor for cloning p.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low unary)
static ExecStatus post(Home home, A x0, B x1, Val c)
Post propagator for .
virtual Actor * copy(Space &home)
Create copy during cloning.
Propagator for reified bounds consistent binary linear equality
static ExecStatus post(Home home, A x0, B x1, Val c, Ctrl b)
Post propagator for .
ReEqBin(Space &home, ReEqBin &p)
Constructor for cloning p.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
virtual Actor * copy(Space &home)
Create copy during cloning.
Base-class for reified binary linear propagators.
Ctrl b
Control view for reification.
virtual size_t dispose(Space &home)
Delete propagator and return its size.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low binary)
ReLinBin(Space &home, ReLinBin &p)
Constructor for cloning p.
virtual void reschedule(Space &home)
Schedule function.
Propagator for reified bounds consistent binary linear less or equal
static ExecStatus post(Home home, A x0, B x1, Val c, BoolView b)
Post propagator for .
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
virtual Actor * copy(Space &home)
Create copy during cloning.
ReLqBin(Space &home, ReLqBin &p)
Constructor for cloning p.
static PropCost unary(PropCost::Mod m)
Single variable for modifier pcm.
static PropCost binary(PropCost::Mod m)
Two variables for modifier pcm.
Base-class for propagators.
Propagator(Home home)
Constructor for posting.
ExecStatus ES_SUBSUMED(Propagator &p)
Propagator p is subsumed
int ModEventDelta
Modification event deltas.
#define GECODE_ME_CHECK(me)
Check whether modification event me is failed, and forward failure.
#define GECODE_REWRITE(prop, post)
Rewrite propagator by executing post function.
@ RM_IMP
Implication for reification.
@ RM_PMI
Inverse implication for reification.
#define GECODE_INT_PV(CASE, TELL, UPDATE)
BinMod
Describe which view has been modified how.
const Gecode::PropCond PC_INT_VAL
Propagate when a view becomes assigned (single value)
const Gecode::PropCond PC_INT_BND
Propagate when minimum or maximum of a view changes.
const Gecode::PropCond PC_BOOL_VAL
Propagate when a view becomes assigned (single value)
Gecode toplevel namespace
@ ES_OK
Execution is okay.
@ ES_FIX
Propagation has computed fixpoint.