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 ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
#define GECODE_REWRITE(prop, post)
Rewrite propagator by executing post function.
Relation may hold or not.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
static ExecStatus post(Home home, V0 x0, V1 x1)
Post propagator .
ReEqDomInt(Space &home, bool share, ReEqDomInt &p)
Constructor for cloning p.
Inverse implication for reification.
virtual Actor * copy(Space &home, bool share)
Copy propagator during cloning.
union Gecode::@579::NNF::@61 u
Union depending on nodetype t.
static ExecStatus post(Home home, ViewArray< View > &x)
Post bounds consistent propagator .
static PropCost linear(PropCost::Mod m, unsigned int n)
Linear complexity for modifier pcm and size measure n.
Binary domain consistent equality propagator.
ExecStatus ES_SUBSUMED(Propagator &p)
const FloatNum max
Largest allowed float value.
RelTest rtest_eq_dom(VX x, VY y)
Test whether views x and y are equal (use full domain information)
Binary value propagation equality propagator.
T * alloc(long unsigned int n)
Allocate block of n objects of type T from region.
void max(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
bool assigned(void) const
Test whether view is assigned.
Reified binary propagator.
static ExecStatus post(Home home, View0 x0, View1 x1)
Post domain consistent propagator .
int ModEvent
Type for modification events.
Base-class for propagators.
NaryEqDom(Space &home, bool share, NaryEqDom< View > &p)
Constructor for cloning p.
n-ary domain consistent equality propagator
Propagation has computed fixpoint.
static PropCost unary(PropCost::Mod m)
Single variable for modifier pcm.
static ExecStatus post(Home home, View x, int c, CtrlView b)
Post bounds consistent propagator .
static ExecStatus post(Home home, View x0, View x1, CtrlView b)
Post bounds consistent propagator .
virtual Actor * copy(Space &home, bool share)
Copy propagator during cloning.
Base-class for both propagators and branchers.
EqBnd(Space &home, bool share, EqBnd< View0, View1 > &p)
Constructor for cloning p.
Range iterator for integer views.
static ExecStatus post(Home home, View0 x0, View1 x1)
Post bounds consistent propagator .
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
bool same(const CachedView< View > &x, const CachedView< View > &y)
Gecode::FloatVal c(-8, 8)
virtual Actor * copy(Space &home, bool share)
Copy propagator during cloning.
int p
Number of positive literals for node type.
const FloatNum min
Smallest allowed float value.
Gecode::IntArgs i(4, 1, 2, 3, 4)
virtual Actor * copy(Space &home, bool share)
Copy propagator during cloning.
virtual Actor * copy(Space &home, bool share)
Copy propagator during cloning.
int n
Number of negative literals for node type.
EqVal(Space &home, bool share, EqVal< View0, View1 > &p)
Constructor for cloning p.
Execution has resulted in failure.
const Gecode::PropCond PC_INT_BND
Propagate when minimum or maximum of a view changes.
const Gecode::ModEvent ME_INT_VAL
Domain operation has resulted in a value (assigned variable)
Reified binary domain consistent equality propagator.
virtual Actor * copy(Space &home, bool share)
Copy propagator during cloning.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
ReEqBndInt(Space &home, bool share, ReEqBndInt &p)
Constructor for cloning p.
struct Gecode::@579::NNF::@61::@62 b
For binary nodes (and, or, eqv)
Binary bounds consistent equality propagator.
const Gecode::PropCond PC_INT_DOM
Propagate when domain changes.
const Gecode::ModEvent ME_INT_BND
Domain operation has changed the minimum or maximum of the domain.
Reified binary bounds consistent equality propagator.
virtual Actor * copy(Space &home, bool share)
Copy propagator during cloning.
virtual Actor * copy(Space &home, bool share)
Copy propagator during cloning.
EqDom(Space &home, bool share, EqDom< View0, View1 > &p)
Constructor for cloning p.
static ExecStatus post(Home home, View x0, View x1, CtrlView b)
Post domain consistent propagator .
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
static ExecStatus post(Home home, View0 x0, View1 x1)
Post value propagation propagator .
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
#define GECODE_ME_CHECK(me)
Check whether modification event me is failed, and forward failure.
ExecStatus ES_FIX_PARTIAL(Propagator &p, const ModEventDelta &med)
Propagator p has computed partial fixpoint
RelTest rtest_eq_bnd(VX x, VY y)
Test whether views x and y are equal (use bounds information)
static ExecStatus post(Home home, View x, int c, CtrlView b)
Post domain consistent propagator .
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Post propagator for SetVar SetOpType SetVar SetRelType r
Reified bounds consistent equality with integer propagator.
void min(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
Range iterator for intersection of iterators.
const Gecode::ModEvent ME_INT_DOM
Domain operation has changed the domain.
bool assigned(View x, int v)
Whether x is assigned to value v.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Binary disequality propagator.
Post propagator for SetVar x
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
NaryEqBnd(Space &home, bool share, NaryEqBnd< View > &p)
Constructor for cloning p.
n-ary bounds consistent equality propagator
bool shared(const ConstView< ViewA > &, const ConstView< ViewB > &)
Test whether views share same variable.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
ReEqBnd(Space &home, bool share, ReEqBnd &p)
Constructor for cloning p.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function: low unary.
Gecode toplevel namespace
Implication for reification.
static ExecStatus post(Home home, ViewArray< View > &x)
Post domain consistent propagator .
int ModEventDelta
Modification event deltas.
Reified domain consistent equality with integer propagator.
Home class for posting propagators
virtual Actor * copy(Space &home, bool share)
Copy propagator during cloning.
static PropCost binary(PropCost::Mod m)
Two variables for modifier pcm.
#define GECODE_NEVER
Assert that this command is never executed.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
const Gecode::PropCond PC_INT_VAL
Propagate when a view becomes assigned (single value)
ReEqDom(Space &home, bool share, ReEqDom &p)
Constructor for cloning p.