Go to the documentation of this file.
38 namespace Gecode {
namespace Int {
namespace Linear {
44 template<
class Val,
class A,
class B, PropCond pc>
48 x0.subscribe(home,*
this,pc);
49 x1.subscribe(home,*
this,pc);
52 template<
class Val,
class A,
class B, PropCond pc>
56 x0.update(home,share,
p.x0);
57 x1.update(home,share,
p.x1);
60 template<
class Val,
class A,
class B, PropCond pc>
65 x0.update(home,share,y0);
66 x1.update(home,share,y1);
69 template<
class Val,
class A,
class B, PropCond pc>
72 return PropCost::binary(PropCost::LO);
75 template<
class Val,
class A,
class B, PropCond pc>
78 x0.reschedule(home,*
this,pc);
79 x1.reschedule(home,*
this,pc);
82 template<
class Val,
class A,
class B, PropCond pc>
85 x0.cancel(home,*
this,pc);
86 x1.cancel(home,*
this,pc);
87 (void) Propagator::dispose(home);
96 template<
class Val,
class A,
class B, PropCond pc,
class Ctrl>
100 x0.subscribe(home,*
this,pc);
101 x1.subscribe(home,*
this,pc);
105 template<
class Val,
class A,
class B, PropCond pc,
class Ctrl>
110 x0.update(home,share,
p.x0);
111 x1.update(home,share,
p.x1);
112 b.update(home,share,
p.b);
115 template<
class Val,
class A,
class B, PropCond pc,
class Ctrl>
118 return PropCost::binary(PropCost::LO);
121 template<
class Val,
class A,
class B, PropCond pc,
class Ctrl>
124 x0.reschedule(home,*
this,pc);
125 x1.reschedule(home,*
this,pc);
129 template<
class Val,
class A,
class B, PropCond pc,
class Ctrl>
132 x0.cancel(home,*
this,pc);
133 x1.cancel(home,*
this,pc);
135 (void) Propagator::dispose(home);
136 return sizeof(*this);
144 template<
class Val,
class A,
class B>
149 template<
class Val,
class A,
class B>
157 template<
class Val,
class A,
class B>
162 template<
class Val,
class A,
class B>
168 template<
class Val,
class A,
class B>
183 #define GECODE_INT_PV(CASE,TELL,UPDATE) \
185 bm -= (CASE); ModEvent me = (TELL); \
186 if (me_failed(me)) return ES_FAILED; \
187 if (me_modified(me)) bm |= (UPDATE); \
190 template<
class Val,
class A,
class B>
214 template<
class Val,
class A,
class B,
class Ctrl, ReifyMode rm>
219 template<
class Val,
class A,
class B,
class Ctrl, ReifyMode rm>
227 template<
class Val,
class A,
class B,
class Ctrl, ReifyMode rm>
233 template<
class Val,
class A,
class B,
class Ctrl, ReifyMode rm>
239 template<
class Val,
class A,
class B,
class Ctrl, ReifyMode rm>
252 if ((x0.min() + x1.min() >
c) || (x0.max() + x1.max() <
c)) {
257 if (x0.assigned() && x1.assigned()) {
258 assert(x0.val() + x1.val() ==
c);
273 template<
class Val,
class A,
class B>
278 template<
class Val,
class A,
class B>
286 template<
class Val,
class A,
class B>
291 template<
class Val,
class A,
class B>
297 template<
class Val,
class A,
class B>
305 template<
class Val,
class A,
class B>
311 template<
class Val,
class A,
class B>
317 assert(x1.assigned());
329 template<
class Val,
class A,
class B>
334 template<
class Val,
class A,
class B>
342 template<
class Val,
class A,
class B>
347 template<
class Val,
class A,
class B>
353 template<
class Val,
class A,
class B>
359 template<
class Val,
class A,
class B>
375 template<
class Val,
class A,
class B>
380 template<
class Val,
class A,
class B>
388 template<
class Val,
class A,
class B>
393 template<
class Val,
class A,
class B>
399 template<
class Val,
class A,
class B>
405 template<
class Val,
class A,
class B>
421 template<
class Val,
class A,
class B, ReifyMode rm>
426 template<
class Val,
class A,
class B, ReifyMode rm>
434 template<
class Val,
class A,
class B, ReifyMode rm>
439 template<
class Val,
class A,
class B, ReifyMode rm>
445 template<
class Val,
class A,
class B, ReifyMode rm>
458 if (x0.max() + x1.max() <=
c) {
463 if (x0.min() + x1.min() >
c) {
static ExecStatus post(Home home, A x0, B x1, Val c, Ctrl b)
Post propagator for .
virtual Actor * copy(Space &home, bool share)
Create copy during cloning.
Propagator for bounds consistent binary linear less or equal
const Gecode::PropCond PC_BOOL_VAL
Propagate when a view becomes assigned (single value)
friend FloatVal max(const FloatVal &x, const FloatVal &y)
virtual Actor * copy(Space &home, bool share)
Create copy during cloning.
@ RM_PMI
Inverse implication for reification.
ExecStatus ES_SUBSUMED(Propagator &p)
friend FloatVal min(const FloatVal &x, const FloatVal &y)
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
@ RM_IMP
Implication for reification.
virtual Actor * copy(Space &home, bool share)
Create copy during cloning.
NqBin(Space &home, bool share, NqBin &p)
Constructor for cloning p.
static ExecStatus post(Home home, A x0, B x1, Val c)
Post propagator for .
Base-class for both propagators and branchers.
LqBin(Space &home, bool share, LqBin &p)
Constructor for cloning p.
Base-class for binary linear propagators.
virtual Actor * copy(Space &home, bool share)
Create copy during cloning.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Boolean view for Boolean variables.
Gecode toplevel namespace
Base-class for propagators.
Base-class for reified binary linear propagators.
void reschedule(Space &home, Propagator &p, IntSet &y)
Home class for posting propagators
ReLqBin(Space &home, bool share, ReLqBin &p)
Constructor for cloning p.
ReEqBin(Space &home, bool share, ReEqBin &p)
Constructor for cloning p.
struct Gecode::@579::NNF::@61::@62 b
For binary nodes (and, or, eqv)
static ExecStatus post(Home home, A x0, B x1, Val c)
Post propagator for .
static ExecStatus post(Home home, A x0, B x1, Val c)
Post propagator for .
static PropCost unary(PropCost::Mod m)
Single variable for modifier pcm.
BinMod
Describe which view has been modified how.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
#define GECODE_INT_PV(CASE, TELL, UPDATE)
Propagator for bounds consistent binary linear disequality
EqBin(Space &home, bool share, EqBin &p)
Constructor for cloning p.
IntSet * A
Position of a piece in a square board.
Propagator for reified bounds consistent binary linear equality
virtual Actor * copy(Space &home, bool share)
Create copy during cloning.
static ExecStatus post(Home home, A x0, B x1, Val c, BoolView b)
Post propagator for .
const Gecode::PropCond PC_INT_BND
Propagate when minimum or maximum of a view changes.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low unary)
Propagator for bounds consistent binary linear greater or equal
const Gecode::PropCond PC_INT_VAL
Propagate when a view becomes assigned (single value)
@ ES_FIX
Propagation has computed fixpoint.
LinBin(Space &home, bool share, LinBin &p)
Constructor for cloning p.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
GqBin(Space &home, bool share, GqBin &p)
Constructor for cloning p.
Propagator for reified bounds consistent binary linear less or equal
virtual Actor * copy(Space &home, bool share)
Create copy during cloning.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Propagator for bounds consistent binary linear equality
#define GECODE_ME_CHECK(me)
Check whether modification event me is failed, and forward failure.
Gecode::FloatVal c(-8, 8)
int ModEventDelta
Modification event deltas.
#define GECODE_REWRITE(prop, post)
Rewrite propagator by executing post function.
@ ES_OK
Execution is okay.
int p
Number of positive literals for node type.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
static ExecStatus post(Home home, A x0, B x1, Val c)
Post propagator for .