Go to the documentation of this file.
38 namespace Gecode {
namespace Int {
namespace Rel {
45 template<
class View0,
class View1>
50 template<
class View0,
class View1>
55 }
else if (x1.assigned()) {
57 }
else if (!
same(x0,x1)) {
63 template<
class View0,
class View1>
68 template<
class View0,
class View1>
75 template<
class View0,
class View1>
81 template<
class View0,
class View1>
87 template<
class View0,
class View1>
93 assert(x1.assigned());
105 template<
class View0,
class View1>
110 template<
class View0,
class View1>
115 }
else if (x1.assigned()) {
117 }
else if (!
same(x0,x1)) {
127 template<
class View0,
class View1>
132 template<
class View0,
class View1>
139 template<
class View0,
class View1>
145 template<
class View0,
class View1>
150 }
else if (x1.assigned()) {
156 }
while (x0.min() != x1.min());
160 }
while (x0.max() != x1.max());
164 assert(x0.assigned() && x1.assigned());
173 template<
class View0,
class View1>
178 template<
class View0,
class View1>
183 }
else if (x1.assigned()) {
185 }
else if (!
same(x0,x1)) {
196 template<
class View0,
class View1>
201 template<
class View0,
class View1>
208 template<
class View0,
class View1>
214 template<
class View0,
class View1>
225 template<
class View0,
class View1>
240 }
while (x0.min() != x1.min());
244 }
while (x0.max() != x1.max());
247 if (x0.range() && x1.range())
278 }
else if (
x.size() > 2) {
281 for (
int i=
x.size();
i-- > 1; ) {
285 for (
int i=
x.size();
i--; ) {
318 assert(
x.size() > 2);
323 for (
int i = 0; ;
i++)
327 for (
int j =
x.size(); j--; )
339 for (
int i =
x.size();
i--; ) {
341 if (mn <
x[
i].
min()) {
351 for (
int i =
x.size();
i--; ) {
353 if (mx >
x[
i].
max()) {
368 for (
int i =
n;
i--; ) {
379 for (
int i =
n;
i--; ) {
384 for (
int i =
n;
i--; ) {
410 }
else if (
x.size() > 2) {
413 for (
int i=
x.size();
i-- > 1; ) {
417 for (
int i=
x.size();
i--; ) {
449 assert(
x.size() > 2);
452 for (
int i = 0; ;
i++)
456 for (
int j =
x.size(); j--; )
465 for (
int i =
x.size();
i--; ) {
467 if (mn <
x[
i].
min()) {
474 for (
int i =
x.size();
i--; ) {
476 if (mx >
x[
i].
max()) {
491 template<
class View,
class CtrlView, ReifyMode rm>
496 template<
class View,
class CtrlView, ReifyMode rm>
510 (void)
new (home)
ReEqDom(home,x0,x1,
b);
511 }
else if (rm !=
RM_IMP) {
518 template<
class View,
class CtrlView, ReifyMode rm>
523 template<
class View,
class CtrlView, ReifyMode rm>
529 template<
class View,
class CtrlView, ReifyMode rm>
565 template<
class View,
class CtrlView, ReifyMode rm>
570 template<
class View,
class CtrlView, ReifyMode rm>
584 (void)
new (home)
ReEqBnd(home,x0,x1,
b);
585 }
else if (rm !=
RM_IMP) {
592 template<
class View,
class CtrlView, ReifyMode rm>
597 template<
class View,
class CtrlView, ReifyMode rm>
603 template<
class View,
class CtrlView, ReifyMode rm>
640 template<
class View,
class CtrlView, ReifyMode rm>
646 template<
class View,
class CtrlView, ReifyMode rm>
652 }
else if (
b.zero()) {
671 template<
class View,
class CtrlView, ReifyMode rm>
677 template<
class View,
class CtrlView, ReifyMode rm>
683 template<
class View,
class CtrlView, ReifyMode rm>
689 }
else if (
b.zero()) {
718 template<
class View,
class CtrlView, ReifyMode rm>
724 template<
class View,
class CtrlView, ReifyMode rm>
730 }
else if (
b.zero()) {
749 template<
class View,
class CtrlView, ReifyMode rm>
754 template<
class View,
class CtrlView, ReifyMode rm>
760 template<
class View,
class CtrlView, ReifyMode rm>
766 }
else if (
b.zero()) {
virtual Actor * copy(Space &home, bool share)
Copy propagator during cloning.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Post propagator for SetVar x
static ExecStatus post(Home home, ViewArray< View > &x)
Post bounds consistent propagator .
@ RM_PMI
Inverse implication for reification.
static ExecStatus post(Home home, View x, int c, CtrlView b)
Post domain consistent propagator .
void max(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
ExecStatus ES_SUBSUMED(Propagator &p)
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Reified domain consistent equality with integer propagator.
static ExecStatus post(Home home, V0 x0, V1 x1)
Post propagator .
RelTest rtest_eq_bnd(VX x, VY y)
Test whether views x and y are equal (use bounds information)
ReEqBndInt(Space &home, bool share, ReEqBndInt &p)
Constructor for cloning p.
static PropCost binary(PropCost::Mod m)
Two variables for modifier pcm.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
bool assigned(View x, int v)
Whether x is assigned to value v.
@ RM_IMP
Implication for reification.
Gecode::IntArgs i(4, 1, 2, 3, 4)
bool same(const CachedView< View > &x, const CachedView< View > &y)
T * alloc(long unsigned int n)
Allocate block of n objects of type T from region.
static ExecStatus post(Home home, View x0, View x1, CtrlView b)
Post domain consistent propagator .
const FloatNum min
Smallest allowed float value.
static ExecStatus post(Home home, View0 x0, View1 x1)
Post domain consistent propagator .
static PropCost linear(PropCost::Mod m, unsigned int n)
Linear complexity for modifier pcm and size measure n.
Base-class for both propagators and branchers.
virtual Actor * copy(Space &home, bool share)
Copy propagator during cloning.
@ RT_TRUE
Relation does hold.
virtual Actor * copy(Space &home, bool share)
Copy propagator during cloning.
virtual Actor * copy(Space &home, bool share)
Copy propagator during cloning.
bool assigned(void) const
Test whether view is assigned.
union Gecode::@579::NNF::@61 u
Union depending on nodetype t.
n-ary domain consistent equality propagator
Binary disequality propagator.
const Gecode::ModEvent ME_INT_VAL
Domain operation has resulted in a value (assigned variable)
NaryEqDom(Space &home, bool share, NaryEqDom< View > &p)
Constructor for cloning p.
static ExecStatus post(Home home, View x0, View x1, CtrlView b)
Post bounds consistent propagator .
Gecode toplevel namespace
EqVal(Space &home, bool share, EqVal< View0, View1 > &p)
Constructor for cloning p.
Base-class for propagators.
EqBnd(Space &home, bool share, EqBnd< View0, View1 > &p)
Constructor for cloning p.
@ RT_MAYBE
Relation may hold or not.
Range iterator for integer views.
static ExecStatus post(Home home, View0 x0, View1 x1)
Post bounds consistent propagator .
NaryEqBnd(Space &home, bool share, NaryEqBnd< View > &p)
Constructor for cloning p.
Binary domain consistent equality propagator.
Reified binary bounds consistent equality propagator.
RelTest rtest_eq_dom(VX x, VY y)
Test whether views x and y are equal (use full domain information)
@ RT_FALSE
Relation does not hold.
virtual Actor * copy(Space &home, bool share)
Copy propagator during cloning.
Binary value propagation equality propagator.
Home class for posting propagators
struct Gecode::@579::NNF::@61::@62 b
For binary nodes (and, or, eqv)
const Gecode::ModEvent ME_INT_BND
Domain operation has changed the minimum or maximum of the domain.
static PropCost unary(PropCost::Mod m)
Single variable for modifier pcm.
ReEqDom(Space &home, bool share, ReEqDom &p)
Constructor for cloning p.
Reified binary propagator.
Post propagator for SetVar SetOpType SetVar SetRelType r
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
virtual Actor * copy(Space &home, bool share)
Copy propagator during cloning.
ReEqBnd(Space &home, bool share, ReEqBnd &p)
Constructor for cloning p.
ReEqDomInt(Space &home, bool share, ReEqDomInt &p)
Constructor for cloning p.
static ExecStatus post(Home home, View0 x0, View1 x1)
Post value propagation propagator .
static ExecStatus post(Home home, ViewArray< View > &x)
Post domain consistent propagator .
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
EqDom(Space &home, bool share, EqDom< View0, View1 > &p)
Constructor for cloning p.
#define GECODE_NEVER
Assert that this command is never executed.
const Gecode::PropCond PC_INT_BND
Propagate when minimum or maximum of a view changes.
int ModEvent
Type for modification events.
static ExecStatus post(Home home, View x, int c, CtrlView b)
Post bounds consistent propagator .
const Gecode::PropCond PC_INT_VAL
Propagate when a view becomes assigned (single value)
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
bool shared(const IntSet &, VX)
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
@ ES_FIX
Propagation has computed fixpoint.
virtual Actor * copy(Space &home, bool share)
Copy propagator during cloning.
Reified binary domain consistent equality propagator.
Reified bounds consistent equality with integer propagator.
Binary bounds consistent equality propagator.
Range iterator for intersection of iterators.
virtual Actor * copy(Space &home, bool share)
Copy propagator during cloning.
#define GECODE_ME_CHECK(me)
Check whether modification event me is failed, and forward failure.
void min(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
n-ary bounds consistent equality propagator
Gecode::FloatVal c(-8, 8)
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function: low unary.
int n
Number of negative literals for node type.
@ ES_FAILED
Execution has resulted in failure.
ExecStatus ES_FIX_PARTIAL(Propagator &p, const ModEventDelta &med)
Propagator p has computed partial fixpoint
const Gecode::PropCond PC_INT_DOM
Propagate when domain changes.
int ModEventDelta
Modification event deltas.
const Gecode::ModEvent ME_INT_DOM
Domain operation has changed the domain.
#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.
const FloatNum max
Largest allowed float value.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
virtual Actor * copy(Space &home, bool share)
Copy propagator during cloning.