37 namespace Test {
namespace Int {
55 :
Test(
"Circuit::" +
str(ipl) +
"::" +
str(n) +
"::" +
str(off),
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)))
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++)
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++)
255 path(home, c, y, x[n], x[n+1], x[n+2],
ipl);
269 :
Test(
"Circuit::FullCost::" +
str(ipl)+
"::"+
str(n)+
"::"+
str(off),
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++)
327 for (
int i=1;
i<=6;
i++) {
333 for (
int i=1;
i<=4;
i++) {
static std::string str(Gecode::IntPropLevel ipl)
Map integer propagation level to string.
Create(void)
Perform creation and registration.
virtual void post(Gecode::Space &home, Gecode::IntVarArray &x)
Post circuit constraint on x.
Simple test for circuit constraint with full cost information.
int size(void) const
Return size of array (number of elements)
const FloatNum max
Largest allowed float value.
int size(void) const
Return number of variables.
Help class to create and register tests.
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.
void path(Home home, int offset, const IntVarArgs &x, IntVar s, IntVar e, IntPropLevel ipl)
Post propagator such that x forms a Hamiltonian path.
virtual bool solution(const Assignment &x) const
Check whether x is solution.
virtual bool solution(const Assignment &x) const
Check whether x is solution.
void circuit(Home home, int offset, const IntVarArgs &x, IntPropLevel ipl)
Post propagator such that x forms a circuit.
Simple test for path constraint with total cost.
ConTestLevel contest
Whether to test for certain consistency.
virtual void post(Gecode::Space &home, Gecode::IntVarArray &x)
Post circuit constraint on x.
Circuit(int n, int min, int max, int off, Gecode::IntPropLevel ipl)
Create and register test.
const FloatNum min
Smallest allowed float value.
int n
Number of negative literals for node type.
Simple test for Hamiltonian path constraint.
CircuitFullCost(int n, int min, int max, int off, Gecode::IntPropLevel ipl)
Create and register test.
Gecode::IntArgs i({1, 2, 3, 4})
void path(Home home, const IntArgs &c, const IntVarArgs &x, IntVar s, IntVar e, IntVar z, IntPropLevel ipl)
Post propagator such that x forms a Hamiltonian path with cost z.
Post propagator for SetVar SetOpType SetVar SetRelType SetVar z
virtual void post(Gecode::Space &home, Gecode::IntVarArray &x)
Post path constraint on x.
Simple test for circuit constraint with total cost.
Gecode::IntPropLevel ipl
Propagation level.
Passing integer variables.
virtual void post(Gecode::Space &home, Gecode::IntVarArray &x)
Post circuit constraint on x.
Passing integer arguments.
BoolVar expr(Home home, const BoolExpr &e, IntPropLevel ipl)
Post Boolean expression and return its value.
bool testfix
Whether to perform fixpoint test.
IntPropLevel
Propagation levels for integer propagators.
virtual bool solution(const Assignment &x) const
Check whether x is solution.
Post propagator for SetVar SetOpType SetVar y
Node * x
Pointer to corresponding Boolean expression node.
Base class for assignments
PathCost(int n, int min, int max, int off, Gecode::IntPropLevel ipl)
Create and register test.
Domain propagation Options: basic versus advanced propagation.
Gecode toplevel namespace
Path(int n, int min, int max, int off, Gecode::IntPropLevel ipl)
Create and register test.
void circuit(Home home, const IntArgs &c, const IntVarArgs &x, IntVar z, IntPropLevel ipl)
Post propagator such that x forms a circuit with cost z.
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.