36 namespace Test {
namespace Int {
56 dsv(new Gecode::IntSetValues[static_cast<unsigned int>(
n)]) {
66 assert((
i>=0) && (
i<
n));
79 if (it.width() > skip)
80 return it.min() +
static_cast<int>(skip);
100 assert((
i>=0) && (
i<
n));
112 if (it.width() > skip)
113 return it.min() +
static_cast<int>(skip);
124 :
Assignment(n0+n1,d0),vals(new int[static_cast<size_t>(n0+n1)]),
125 a(a0),_n1(n1),_d1(
d1) {
126 for (
int i=n0;
i--; )
128 for (
int i=n1;
i--; )
139 assert((
i>=0) && (
i<
n));
169 reified(
r), rms((1 << Gecode::
RM_EQV) |
173 testsearch(true), testfix(true) {}
179 :
Base(
"Int::"+s), arity(
a), dom(
d),
180 reified(
r), rms((1 << Gecode::
RM_EQV) |
184 testsearch(true), testfix(true) {}
191 reified(
r), rms((1 << Gecode::
RM_EQV) |
195 testsearch(true), testfix(true) {}
201 reified(
r), rms((1 << Gecode::
RM_EQV) |
205 testsearch(true), testfix(true) {}
210 using namespace Gecode;
213 case IPL_VAL: s <<
"Val";
break;
214 case IPL_BND: s <<
"Bnd";
break;
215 case IPL_DOM: s <<
"Dom";
break;
216 default: s <<
"Def";
break;
226 using namespace Gecode;
242 using namespace Gecode;
278 for (
int i=0;
i<
x.size()-1;
i++)
279 s +=
str(
x[
i]) +
",";
280 return "[" + s +
str(
x[
x.size()-1]) +
"]";
286 using namespace Gecode;
struct Gecode::@602::NNF::@65::@66 b
For binary nodes (and, or, eqv)
int p
Number of positive literals for node type.
int n
Number of negative literals for node type.
Node * x
Pointer to corresponding Boolean expression node.
struct Gecode::@602::NNF::@65::@67 a
For atomic nodes.
Passing integer arguments.
Range iterator for integer sets.
unsigned int size(void) const
Return size (cardinality) of set.
int val(void) const
Return current value.
Base class for all tests to be run
static Gecode::Support::RandomGenerator rand
Random number generator.
Base class for assignments
Gecode::IntSet d
Domain for each variable.
int n
Number of variables.
virtual ~Assignment(void)
Destructor.
Assignment(int n0, const Gecode::IntSet &d0)
Initialize assignments for n0 variables and values d0.
int size(void) const
Return number of variables.
BoolOpTypes(void)
Initialize iterator.
bool operator()(void) const
Test whether iterator is done.
Gecode::BoolOpType bot(void) const
Return current operation type.
void operator++(void)
Increment to next operation type.
CpltAssignment(int n, const Gecode::IntSet &d)
Initialize assignments for n0 variables and values d0.
virtual int operator[](int i) const
Return value for variable i.
virtual ~CpltAssignment(void)
Destructor.
virtual bool operator()(void) const
Test whether all assignments have been iterated.
Gecode::IntSetValues * dsv
Iterator for each variable.
Gecode::IntPropLevel ipl(void) const
Return current level.
bool operator()(void) const
Test whether iterator is done.
IntPropBasicAdvanced(void)
Initialize iterator.
void operator++(void)
Increment to next level.
IntPropLevels(void)
Initialize iterator.
Gecode::IntPropLevel ipl(void) const
Return current level.
bool operator()(void) const
Test whether iterator is done.
void operator++(void)
Increment to next level.
void operator++(void)
Increment to next relation type.
bool operator()(void) const
Test whether iterator is done.
void reset(void)
Reset iterator.
IntRelTypes(void)
Initialize iterator.
Gecode::IntRelType irt(void) const
Return current relation type.
virtual int operator[](int i) const
Return value for variable i.
virtual ~RandomAssignment(void)
Destructor.
RandomAssignment(int n, const Gecode::IntSet &d, int a)
Initialize for a assignments for n0 variables and values d0.
int a
How many assigments still to be generated Generate new value according to domain.
int * vals
The current values for the variables.
virtual bool operator()(void) const
Test whether all assignments have been iterated.
RandomMixAssignment(int n0, const Gecode::IntSet &d0, int n1, const Gecode::IntSet &d1, int a0)
Initialize for a assignments for n0 variables and values d0.
Gecode::IntSet _d1
Domain for second set of variables Generate new value according to domain d.
virtual int operator[](int i) const
Return value for variable i.
virtual bool operator()(void) const
Test whether all assignments have been iterated.
virtual ~RandomMixAssignment(void)
Destructor.
int a
How many assigments still to be generated.
int * vals
The current values for the variables.
int randval(const Gecode::IntSet &d)
bool pmi(void) const
Test whether reverse implication as reification mode is supported.
bool reified
Does the constraint also exist as reified constraint.
int rms
Which reification modes are supported.
Test(const std::string &p, const std::string &s, int a, const Gecode::IntSet &d, bool r=false, Gecode::IntPropLevel i=Gecode::IPL_DEF)
Constructor.
Gecode::IntPropLevel ipl
Propagation level.
bool eqv(void) const
Test whether equivalence as reification mode is supported.
static std::string str(Gecode::IntPropLevel ipl)
Map integer propagation level to string.
static bool cmp(T x, Gecode::IntRelType r, T y)
Compare x and y with respect to r.
bool imp(void) const
Test whether implication as reification mode is supported.
Post propagator for SetVar SetOpType SetVar y
IntRelType
Relation types for integers.
BoolOpType
Operation types for Booleans.
IntPropLevel
Propagation levels for integer propagators.
@ IRT_GQ
Greater or equal ( )
@ IRT_LQ
Less or equal ( )
@ RM_IMP
Implication for reification.
@ RM_PMI
Inverse implication for reification.
@ RM_EQV
Equivalence for reification (default)
@ IPL_BASIC
Use basic propagation algorithm.
@ IPL_DOM
Domain propagation Options: basic versus advanced propagation.
@ IPL_VAL
Value propagation.
@ IPL_ADVANCED
Use advanced propagation algorithm.
@ IPL_BND
Bounds propagation.
IntPropLevel vbd(IntPropLevel ipl)
Extract value, bounds, or domain propagation from propagation level.
const FloatNum max
Largest allowed float value.
const FloatNum min
Smallest allowed float value.
Gecode::IntArgs i({1, 2, 3, 4})
@ CTL_NONE
No consistency-test.
@ CTL_DOMAIN
Test for domain-consistency.
#define GECODE_NEVER
Assert that this command is never executed.