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.cancel(home,*
this,pc);
79 x1.cancel(home,*
this,pc);
80 (void) Propagator::dispose(home);
89 template<
class Val,
class A,
class B, PropCond pc,
class Ctrl>
93 x0.subscribe(home,*
this,pc);
94 x1.subscribe(home,*
this,pc);
98 template<
class Val,
class A,
class B, PropCond pc,
class Ctrl>
103 x0.update(home,share,p.
x0);
104 x1.update(home,share,p.
x1);
105 b.update(home,share,p.
b);
108 template<
class Val,
class A,
class B, PropCond pc,
class Ctrl>
111 return PropCost::binary(PropCost::LO);
114 template<
class Val,
class A,
class B, PropCond pc,
class Ctrl>
117 x0.cancel(home,*
this,pc);
118 x1.cancel(home,*
this,pc);
120 (void) Propagator::dispose(home);
121 return sizeof(*this);
129 template<
class Val,
class A,
class B>
134 template<
class Val,
class A,
class B>
142 template<
class Val,
class A,
class B>
147 template<
class Val,
class A,
class B>
153 template<
class Val,
class A,
class B>
168 #define GECODE_INT_PV(CASE,TELL,UPDATE) \ 170 bm -= (CASE); ModEvent me = (TELL); \ 171 if (me_failed(me)) return ES_FAILED; \ 172 if (me_modified(me)) bm |= (UPDATE); \ 175 template<
class Val,
class A,
class B>
199 template<
class Val,
class A,
class B,
class Ctrl, ReifyMode rm>
204 template<
class Val,
class A,
class B,
class Ctrl, ReifyMode rm>
212 template<
class Val,
class A,
class B,
class Ctrl, ReifyMode rm>
218 template<
class Val,
class A,
class B,
class Ctrl, ReifyMode rm>
224 template<
class Val,
class A,
class B,
class Ctrl, ReifyMode rm>
237 if ((
x0.min() +
x1.min() >
c) || (
x0.max() +
x1.max() <
c)) {
242 if (
x0.assigned() &&
x1.assigned()) {
243 assert(
x0.val() +
x1.val() ==
c);
258 template<
class Val,
class A,
class B>
263 template<
class Val,
class A,
class B>
271 template<
class Val,
class A,
class B>
276 template<
class Val,
class A,
class B>
282 template<
class Val,
class A,
class B>
290 template<
class Val,
class A,
class B>
296 template<
class Val,
class A,
class B>
302 assert(
x1.assigned());
314 template<
class Val,
class A,
class B>
319 template<
class Val,
class A,
class B>
327 template<
class Val,
class A,
class B>
332 template<
class Val,
class A,
class B>
338 template<
class Val,
class A,
class B>
344 template<
class Val,
class A,
class B>
360 template<
class Val,
class A,
class B>
365 template<
class Val,
class A,
class B>
373 template<
class Val,
class A,
class B>
378 template<
class Val,
class A,
class B>
384 template<
class Val,
class A,
class B>
390 template<
class Val,
class A,
class B>
406 template<
class Val,
class A,
class B, ReifyMode rm>
411 template<
class Val,
class A,
class B, ReifyMode rm>
419 template<
class Val,
class A,
class B, ReifyMode rm>
424 template<
class Val,
class A,
class B, ReifyMode rm>
430 template<
class Val,
class A,
class B, ReifyMode rm>
443 if (
x0.max() +
x1.max() <=
c) {
448 if (
x0.min() +
x1.min() >
c) {
virtual Actor * copy(Space &home, bool share)
Create copy during cloning.
Propagator for bounds consistent binary linear disequality
#define GECODE_REWRITE(prop, post)
Rewrite propagator by executing post function.
BinMod
Describe which view has been modified how.
bool zero(void) const
Test whether view is assigned to be zero.
Inverse implication for reification.
ExecStatus ES_SUBSUMED(Propagator &p)
Propagator for bounds consistent binary linear greater or equal
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
bool one(void) const
Test whether view is assigned to be one.
static ExecStatus post(Home home, A x0, B x1, Val c, BoolView b)
Post propagator for .
LqBin(Space &home, bool share, LqBin &p)
Constructor for cloning p.
GqBin(Space &home, bool share, GqBin &p)
Constructor for cloning p.
Base-class for propagators.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
#define GECODE_INT_PV(CASE, TELL, UPDATE)
Propagation has computed fixpoint.
static PropCost unary(PropCost::Mod m)
Single variable for modifier pcm.
Propagator for bounds consistent binary linear equality
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Base-class for binary linear propagators.
Base-class for both propagators and branchers.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low unary)
Gecode::FloatVal c(-8, 8)
int p
Number of positive literals for node type.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
ModEvent zero_none(Space &home)
Assign not yet assigned view to zero.
const Gecode::PropCond PC_INT_BND
Propagate when minimum or maximum of a view changes.
virtual Actor * copy(Space &home, bool share)
Create copy during cloning.
Propagator for bounds consistent binary linear less or equal
static ExecStatus post(Home home, A x0, B x1, Val c, Ctrl b)
Post propagator for .
#define GECODE_ME_CHECK(me)
Check whether modification event me is failed, and forward failure.
Propagator for reified bounds consistent binary linear less or equal
virtual Actor * copy(Space &home, bool share)
Create copy during cloning.
struct Gecode::@519::NNF::@60::@61 b
For binary nodes (and, or, eqv)
static ExecStatus post(Home home, A x0, B x1, Val c)
Post propagator for .
Base-class for reified binary linear propagators.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
static ExecStatus post(Home home, A x0, B x1, Val c)
Post propagator for .
virtual Actor * copy(Space &home, bool share)
Create copy during cloning.
Ctrl b
Control view for reification.
Propagator for reified bounds consistent binary linear equality
virtual Actor * copy(Space &home, bool share)
Create copy during cloning.
virtual Actor * copy(Space &home, bool share)
Create copy during cloning.
LinBin(Space &home, bool share, LinBin &p)
Constructor for cloning p.
Gecode toplevel namespace
NqBin(Space &home, bool share, NqBin &p)
Constructor for cloning p.
Implication for reification.
ModEvent one_none(Space &home)
Assign not yet assigned view to one.
static ExecStatus post(Home home, A x0, B x1, Val c)
Post propagator for .
int ModEventDelta
Modification event deltas.
static ExecStatus post(Home home, A x0, B x1, Val c)
Post propagator for .
ReLqBin(Space &home, bool share, ReLqBin &p)
Constructor for cloning p.
Home class for posting propagators
ReEqBin(Space &home, bool share, ReEqBin &p)
Constructor for cloning p.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
EqBin(Space &home, bool share, EqBin &p)
Constructor for cloning p.
const Gecode::PropCond PC_INT_VAL
Propagate when a view becomes assigned (single value)
const Gecode::PropCond PC_BOOL_VAL
Propagate when a view becomes assigned (single value)
Boolean view for Boolean variables.