37namespace Test {
namespace Int {
56 n,min,max,false,
ipl), offset(off) {
62 for (
int i=
x.
size(); i--; )
63 if ((
x[i] < 0) || (
x[i] >
x.size()-1))
68 for (
int i=
x.
size(); i--; ) {
69 j=
x[j]; reachable |= (1 << j);
72 for (
int i=
x.
size(); i--; )
73 if (!(reachable & (1 << i)))
81 for (
int i=
x.
size(); i--;)
99 n+2,min,max,false,
ipl), offset(off) {
105 int n =
x.size() - 2;
108 if ((s < 0) || (s >
n) || (e < 0) || (e >
n) || (
x[e] !=
n))
111 if ((i != e) && ((
x[i] < 0) || (
x[i] >
n)))
113 int reachable = (1 << s);
116 for (
int i=
n; i--; ) {
117 j=
x[j]; reachable |= (1 << j);
121 if (!(reachable & (1 << i)))
127 int n =
x.size() - 2;
152 n+1,min,max,false,
ipl), offset(off) {
160 if ((
x[i] < 0) || (
x[i] >
n-1))
165 for (
int i=
n; i--; ) {
166 j=
x[j]; reachable |= (1 << j);
170 if (!(reachable & (1 << i)))
182 for (
int i=0; i<
n; i++)
183 for (
int j=0; j<
n; j++)
191 for (
int i=0; i<
n; i++)
193 circuit(home,
c, y,
x[
n],
ipl);
207 n+3,min,max,false,
ipl), offset(off) {
213 int n =
x.size() - 3;
217 if ((s < 0) || (s >
n) || (e < 0) || (e >
n) || (
x[e] !=
n))
220 if ((i != e) && ((
x[i] < 0) || (
x[i] >
n)))
222 int reachable = (1 << s);
225 for (
int i=
n; i--; ) {
226 j=
x[j]; reachable |= (1 << j);
230 if (!(reachable & (1 << i)))
241 for (
int i=0; i<
n; i++)
242 for (
int j=0; j<
n; j++)
248 path(home,
c, offset, y,
249 expr(home,
x[
n]+offset),
250 expr(home,
x[
n+1]+offset),
253 for (
int i=0; i<
n; i++)
270 2*
n+1,min,max,false,
ipl), offset(off) {
276 int n=(
x.size()-1) / 2;
278 if ((
x[i] < 0) || (
x[i] >
n-1))
283 for (
int i=
n; i--; ) {
284 j=
x[j]; reachable |= (1 << j);
288 if (!(reachable & (1 << i)))
291 if ((
x[i]/2) !=
x[
n+i])
301 int n=(
x.size()-1)/2;
303 for (
int i=0; i<
n; i++)
304 for (
int j=0; j<
n; j++)
307 for (
int i=0; i<
n; i++) {
315 for (
int i=0; i<
n; i++)
317 circuit(home,
c, y, z,
x[2*
n],
ipl);
327 for (
int i=1; i<=6; i++) {
333 for (
int i=1; i<=4; i++) {
int n
Number of negative literals for node type.
Node * x
Pointer to corresponding Boolean expression node.
int size(void) const
Return size of array (number of elements)
Passing integer arguments.
Passing integer variables.
Base class for assignments
Simple test for circuit constraint with total cost.
virtual void post(Gecode::Space &home, Gecode::IntVarArray &x)
Post circuit constraint on x.
CircuitCost(int n, int min, int max, int off, Gecode::IntPropLevel ipl)
Create and register test.
virtual bool solution(const Assignment &x) const
Check whether x is solution.
Simple test for circuit constraint with full cost information.
CircuitFullCost(int n, int min, int max, int off, Gecode::IntPropLevel ipl)
Create and register test.
virtual bool solution(const Assignment &x) const
Check whether x is solution.
virtual void post(Gecode::Space &home, Gecode::IntVarArray &x)
Post circuit constraint on x.
Simple test for circuit constraint.
Circuit(int n, int min, int max, int off, Gecode::IntPropLevel ipl)
Create and register test.
virtual void post(Gecode::Space &home, Gecode::IntVarArray &x)
Post circuit constraint on x.
virtual bool solution(const Assignment &x) const
Check whether x is solution.
Help class to create and register tests.
Create(void)
Perform creation and registration.
Simple test for path constraint with total cost.
virtual bool solution(const Assignment &x) const
Check whether x is solution.
PathCost(int n, int min, int max, int off, Gecode::IntPropLevel ipl)
Create and register test.
virtual void post(Gecode::Space &home, Gecode::IntVarArray &x)
Post circuit constraint on x.
Simple test for Hamiltonian path constraint.
virtual void post(Gecode::Space &home, Gecode::IntVarArray &x)
Post path constraint on x.
Path(int n, int min, int max, int off, Gecode::IntPropLevel ipl)
Create and register test.
virtual bool solution(const Assignment &x) const
Check whether x is solution.
bool testfix
Whether to perform fixpoint test.
Gecode::IntPropLevel ipl
Propagation level.
static std::string str(Gecode::IntPropLevel ipl)
Map integer propagation level to string.
ConTestLevel contest
Whether to test for certain consistency.
IntPropLevel
Propagation levels for integer propagators.
@ IPL_DOM
Domain propagation Options: basic versus advanced propagation.
@ IPL_VAL
Value propagation.
Gecode toplevel namespace
IntVar expr(Home home, const LinIntExpr &e, const IntPropLevels &ipls=IntPropLevels::def)
Post linear expression and return its value.
void path(Home home, const IntVarArgs &x, IntVar s, IntVar e, IntPropLevel ipl=IPL_DEF)
Post propagator such that x forms a Hamiltonian path.
void circuit(Home home, const IntVarArgs &x, IntPropLevel ipl=IPL_DEF)
Post propagator such that x forms a circuit.
@ CTL_NONE
No consistency-test.