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) {
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.
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 .
void reschedule(Space &home, Propagator &p, IntSet &y)
struct Gecode::@554::NNF::@60::@61 b
For binary nodes (and, or, eqv)
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.