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>
75 template<
class Val,
class A,
class B, PropCond pc>
78 x0.cancel(home,*
this,pc);
79 x1.cancel(home,*
this,pc);
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>
114 template<
class Val,
class A,
class B, PropCond pc,
class Ctrl>
117 x0.cancel(home,*
this,pc);
118 x1.cancel(home,*
this,pc);
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.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low binary)
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.
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.
Gecode::FloatVal c(-8, 8)
int p
Number of positive literals for node type.
virtual size_t dispose(Space &home)
Delete propagator and return its size.
virtual size_t dispose(Space &home)
Delete propagator and return its size.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
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
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low binary)
ReLinBin(Space &home, bool share, ReLinBin &p)
Constructor for cloning p.
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.
static ExecStatus post(Home home, A x0, B x1, Val c)
Post propagator for .
virtual size_t dispose(Space &home)
Delete actor and return its size.
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.
struct Gecode::@518::NNF::@57::@58 b
For binary nodes (and, or, eqv)
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.
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 .
friend FloatVal max(const FloatVal &x, const FloatVal &y)
int ModEventDelta
Modification event deltas.
friend FloatVal min(const FloatVal &x, const FloatVal &y)
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.
static PropCost binary(PropCost::Mod m)
Two variables for modifier pcm.
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.