34 namespace Gecode {
namespace Int {
namespace Linear {
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>
68 return PropCost::binary(PropCost::LO);
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);
83 (void) Propagator::dispose(home);
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>
114 return PropCost::binary(PropCost::LO);
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);
131 (void) Propagator::dispose(home);
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) {
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
GqBin(Space &home, GqBin &p)
Constructor for cloning p.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
bool one(void) const
Test whether view is assigned to be one.
virtual Actor * copy(Space &home)
Create copy during cloning.
static ExecStatus post(Home home, A x0, B x1, Val c, BoolView b)
Post propagator for .
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
NqBin(Space &home, NqBin &p)
Constructor for cloning p.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Base-class for binary linear propagators.
Base-class for both propagators and branchers.
ReLqBin(Space &home, ReLqBin &p)
Constructor for cloning p.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low unary)
LqBin(Space &home, LqBin &p)
Constructor for cloning p.
Gecode::FloatVal c(-8, 8)
int p
Number of positive literals for node type.
virtual Actor * copy(Space &home)
Create copy during cloning.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
ModEvent zero_none(Space &home)
Assign not yet assigned view to zero.
virtual Actor * copy(Space &home)
Create copy during cloning.
const Gecode::PropCond PC_INT_BND
Propagate when minimum or maximum of a view changes.
Propagator for bounds consistent binary linear less or equal
struct Gecode::@593::NNF::@62::@63 b
For binary nodes (and, or, eqv)
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)
Create copy during cloning.
ReEqBin(Space &home, ReEqBin &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.
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 .
Ctrl b
Control view for reification.
LinBin(Space &home, LinBin &p)
Constructor for cloning p.
Propagator for reified bounds consistent binary linear equality
EqBin(Space &home, EqBin &p)
Constructor for cloning p.
Gecode toplevel namespace
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 .
void reschedule(Space &home, Propagator &p, IntSet &y)
int ModEventDelta
Modification event deltas.
static ExecStatus post(Home home, A x0, B x1, Val c)
Post propagator for .
Home class for posting propagators
virtual Actor * copy(Space &home)
Create copy during cloning.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
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.