Files
ortools-clone/examples/flatzinc/quasiGroup7.fzn

206 lines
17 KiB
MiniZinc

predicate fzn_all_different_int(array [int] of var int: x);
predicate count(array [int] of var int: x, var int: y, var int: c);
predicate fixed_fzn_cumulative(array [int] of var int: s, array [int] of int: d, array [int] of int: r, int: b);
predicate global_cardinality(array [int] of var int: x, array [int] of int: cover, array [int] of var int: counts);
predicate maximum_int(var int: m, array [int] of var int: x);
predicate minimum_int(var int: m, array [int] of var int: x);
predicate sliding_sum(int: low, int: up, int: seq, array [int] of var int: vs);
predicate sort(array [int] of var int: x, array [int] of var int: y);
predicate table_bool(array [int] of var bool: x, array [int, int] of bool: t);
predicate table_int(array [int] of var int: x, array [int, int] of int: t);
predicate var_fzn_cumulative(array [int] of var int: s, array [int] of int: d, array [int] of int: r, var int: b);
var 1..5: INT____00001 :: is_defined_var :: var_is_introduced;
var 1..21: INT____00003 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00004 :: is_defined_var :: var_is_introduced;
var 1..5: INT____00005 :: is_defined_var :: var_is_introduced;
var 2..22: INT____00007 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00008 :: is_defined_var :: var_is_introduced;
var 1..5: INT____00009 :: is_defined_var :: var_is_introduced;
var 3..23: INT____00011 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00012 :: is_defined_var :: var_is_introduced;
var 1..5: INT____00013 :: is_defined_var :: var_is_introduced;
var 4..24: INT____00015 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00016 :: is_defined_var :: var_is_introduced;
var 1..5: INT____00017 :: is_defined_var :: var_is_introduced;
var 5..25: INT____00019 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00020 :: is_defined_var :: var_is_introduced;
var 6..10: INT____00021 :: is_defined_var :: var_is_introduced;
var 1..21: INT____00023 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00024 :: is_defined_var :: var_is_introduced;
var 6..10: INT____00025 :: is_defined_var :: var_is_introduced;
var 2..22: INT____00027 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00028 :: is_defined_var :: var_is_introduced;
var 6..10: INT____00029 :: is_defined_var :: var_is_introduced;
var 3..23: INT____00031 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00032 :: is_defined_var :: var_is_introduced;
var 6..10: INT____00033 :: is_defined_var :: var_is_introduced;
var 4..24: INT____00035 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00036 :: is_defined_var :: var_is_introduced;
var 6..10: INT____00037 :: is_defined_var :: var_is_introduced;
var 5..25: INT____00039 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00040 :: is_defined_var :: var_is_introduced;
var 11..15: INT____00041 :: is_defined_var :: var_is_introduced;
var 1..21: INT____00043 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00044 :: is_defined_var :: var_is_introduced;
var 11..15: INT____00045 :: is_defined_var :: var_is_introduced;
var 2..22: INT____00047 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00048 :: is_defined_var :: var_is_introduced;
var 11..15: INT____00049 :: is_defined_var :: var_is_introduced;
var 3..23: INT____00051 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00052 :: is_defined_var :: var_is_introduced;
var 11..15: INT____00053 :: is_defined_var :: var_is_introduced;
var 4..24: INT____00055 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00056 :: is_defined_var :: var_is_introduced;
var 11..15: INT____00057 :: is_defined_var :: var_is_introduced;
var 5..25: INT____00059 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00060 :: is_defined_var :: var_is_introduced;
var 16..20: INT____00061 :: is_defined_var :: var_is_introduced;
var 1..21: INT____00063 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00064 :: is_defined_var :: var_is_introduced;
var 16..20: INT____00065 :: is_defined_var :: var_is_introduced;
var 2..22: INT____00067 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00068 :: is_defined_var :: var_is_introduced;
var 16..20: INT____00069 :: is_defined_var :: var_is_introduced;
var 3..23: INT____00071 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00072 :: is_defined_var :: var_is_introduced;
var 16..20: INT____00073 :: is_defined_var :: var_is_introduced;
var 4..24: INT____00075 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00076 :: is_defined_var :: var_is_introduced;
var 16..20: INT____00077 :: is_defined_var :: var_is_introduced;
var 5..25: INT____00079 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00080 :: is_defined_var :: var_is_introduced;
var 21..25: INT____00081 :: is_defined_var :: var_is_introduced;
var 1..21: INT____00083 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00084 :: is_defined_var :: var_is_introduced;
var 21..25: INT____00085 :: is_defined_var :: var_is_introduced;
var 2..22: INT____00087 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00088 :: is_defined_var :: var_is_introduced;
var 21..25: INT____00089 :: is_defined_var :: var_is_introduced;
var 3..23: INT____00091 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00092 :: is_defined_var :: var_is_introduced;
var 21..25: INT____00093 :: is_defined_var :: var_is_introduced;
var 4..24: INT____00095 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00096 :: is_defined_var :: var_is_introduced;
var 21..25: INT____00097 :: is_defined_var :: var_is_introduced;
var 5..25: INT____00099 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00100 :: is_defined_var :: var_is_introduced;
array [1..25] of var 0..4: quasiGroup :: output_array([0..4, 0..4]);
constraint fzn_all_different_int([quasiGroup[1], quasiGroup[2], quasiGroup[3], quasiGroup[4], quasiGroup[5]]);
constraint fzn_all_different_int([quasiGroup[1], quasiGroup[6], quasiGroup[11], quasiGroup[16], quasiGroup[21]]);
constraint fzn_all_different_int([quasiGroup[2], quasiGroup[7], quasiGroup[12], quasiGroup[17], quasiGroup[22]]);
constraint fzn_all_different_int([quasiGroup[3], quasiGroup[8], quasiGroup[13], quasiGroup[18], quasiGroup[23]]);
constraint fzn_all_different_int([quasiGroup[4], quasiGroup[9], quasiGroup[14], quasiGroup[19], quasiGroup[24]]);
constraint fzn_all_different_int([quasiGroup[5], quasiGroup[10], quasiGroup[15], quasiGroup[20], quasiGroup[25]]);
constraint fzn_all_different_int([quasiGroup[6], quasiGroup[7], quasiGroup[8], quasiGroup[9], quasiGroup[10]]);
constraint fzn_all_different_int([quasiGroup[11], quasiGroup[12], quasiGroup[13], quasiGroup[14], quasiGroup[15]]);
constraint fzn_all_different_int([quasiGroup[16], quasiGroup[17], quasiGroup[18], quasiGroup[19], quasiGroup[20]]);
constraint fzn_all_different_int([quasiGroup[21], quasiGroup[22], quasiGroup[23], quasiGroup[24], quasiGroup[25]]);
constraint array_var_int_element(INT____00001, quasiGroup, INT____00004);
constraint array_var_int_element(INT____00003, quasiGroup, INT____00004) :: defines_var(INT____00004);
constraint array_var_int_element(INT____00005, quasiGroup, INT____00008);
constraint array_var_int_element(INT____00007, quasiGroup, INT____00008) :: defines_var(INT____00008);
constraint array_var_int_element(INT____00009, quasiGroup, INT____00012);
constraint array_var_int_element(INT____00011, quasiGroup, INT____00012) :: defines_var(INT____00012);
constraint array_var_int_element(INT____00013, quasiGroup, INT____00016);
constraint array_var_int_element(INT____00015, quasiGroup, INT____00016) :: defines_var(INT____00016);
constraint array_var_int_element(INT____00017, quasiGroup, INT____00020);
constraint array_var_int_element(INT____00019, quasiGroup, INT____00020) :: defines_var(INT____00020);
constraint array_var_int_element(INT____00021, quasiGroup, INT____00024);
constraint array_var_int_element(INT____00023, quasiGroup, INT____00024) :: defines_var(INT____00024);
constraint array_var_int_element(INT____00025, quasiGroup, INT____00028);
constraint array_var_int_element(INT____00027, quasiGroup, INT____00028) :: defines_var(INT____00028);
constraint array_var_int_element(INT____00029, quasiGroup, INT____00032);
constraint array_var_int_element(INT____00031, quasiGroup, INT____00032) :: defines_var(INT____00032);
constraint array_var_int_element(INT____00033, quasiGroup, INT____00036);
constraint array_var_int_element(INT____00035, quasiGroup, INT____00036) :: defines_var(INT____00036);
constraint array_var_int_element(INT____00037, quasiGroup, INT____00040);
constraint array_var_int_element(INT____00039, quasiGroup, INT____00040) :: defines_var(INT____00040);
constraint array_var_int_element(INT____00041, quasiGroup, INT____00044);
constraint array_var_int_element(INT____00043, quasiGroup, INT____00044) :: defines_var(INT____00044);
constraint array_var_int_element(INT____00045, quasiGroup, INT____00048);
constraint array_var_int_element(INT____00047, quasiGroup, INT____00048) :: defines_var(INT____00048);
constraint array_var_int_element(INT____00049, quasiGroup, INT____00052);
constraint array_var_int_element(INT____00051, quasiGroup, INT____00052) :: defines_var(INT____00052);
constraint array_var_int_element(INT____00053, quasiGroup, INT____00056);
constraint array_var_int_element(INT____00055, quasiGroup, INT____00056) :: defines_var(INT____00056);
constraint array_var_int_element(INT____00057, quasiGroup, INT____00060);
constraint array_var_int_element(INT____00059, quasiGroup, INT____00060) :: defines_var(INT____00060);
constraint array_var_int_element(INT____00061, quasiGroup, INT____00064);
constraint array_var_int_element(INT____00063, quasiGroup, INT____00064) :: defines_var(INT____00064);
constraint array_var_int_element(INT____00065, quasiGroup, INT____00068);
constraint array_var_int_element(INT____00067, quasiGroup, INT____00068) :: defines_var(INT____00068);
constraint array_var_int_element(INT____00069, quasiGroup, INT____00072);
constraint array_var_int_element(INT____00071, quasiGroup, INT____00072) :: defines_var(INT____00072);
constraint array_var_int_element(INT____00073, quasiGroup, INT____00076);
constraint array_var_int_element(INT____00075, quasiGroup, INT____00076) :: defines_var(INT____00076);
constraint array_var_int_element(INT____00077, quasiGroup, INT____00080);
constraint array_var_int_element(INT____00079, quasiGroup, INT____00080) :: defines_var(INT____00080);
constraint array_var_int_element(INT____00081, quasiGroup, INT____00084);
constraint array_var_int_element(INT____00083, quasiGroup, INT____00084) :: defines_var(INT____00084);
constraint array_var_int_element(INT____00085, quasiGroup, INT____00088);
constraint array_var_int_element(INT____00087, quasiGroup, INT____00088) :: defines_var(INT____00088);
constraint array_var_int_element(INT____00089, quasiGroup, INT____00092);
constraint array_var_int_element(INT____00091, quasiGroup, INT____00092) :: defines_var(INT____00092);
constraint array_var_int_element(INT____00093, quasiGroup, INT____00096);
constraint array_var_int_element(INT____00095, quasiGroup, INT____00096) :: defines_var(INT____00096);
constraint array_var_int_element(INT____00097, quasiGroup, INT____00100);
constraint array_var_int_element(INT____00099, quasiGroup, INT____00100) :: defines_var(INT____00100);
constraint int_eq(quasiGroup[1], 0);
constraint int_eq(quasiGroup[7], 1);
constraint int_eq(quasiGroup[13], 2);
constraint int_eq(quasiGroup[19], 3);
constraint int_eq(quasiGroup[25], 4);
constraint int_lin_eq([-1, 1], [INT____00001, quasiGroup[1]], -1) :: defines_var(INT____00001) :: domain;
constraint int_lin_eq([-1, 1], [INT____00005, quasiGroup[6]], -1) :: defines_var(INT____00005) :: domain;
constraint int_lin_eq([-1, 1], [INT____00009, quasiGroup[11]], -1) :: defines_var(INT____00009) :: domain;
constraint int_lin_eq([-1, 1], [INT____00013, quasiGroup[16]], -1) :: defines_var(INT____00013) :: domain;
constraint int_lin_eq([-1, 1], [INT____00017, quasiGroup[21]], -1) :: defines_var(INT____00017) :: domain;
constraint int_lin_eq([-1, 1], [INT____00021, quasiGroup[2]], -6) :: defines_var(INT____00021) :: domain;
constraint int_lin_eq([-1, 1], [INT____00025, quasiGroup[7]], -6) :: defines_var(INT____00025) :: domain;
constraint int_lin_eq([-1, 1], [INT____00029, quasiGroup[12]], -6) :: defines_var(INT____00029) :: domain;
constraint int_lin_eq([-1, 1], [INT____00033, quasiGroup[17]], -6) :: defines_var(INT____00033) :: domain;
constraint int_lin_eq([-1, 1], [INT____00037, quasiGroup[22]], -6) :: defines_var(INT____00037) :: domain;
constraint int_lin_eq([-1, 1], [INT____00041, quasiGroup[3]], -11) :: defines_var(INT____00041) :: domain;
constraint int_lin_eq([-1, 1], [INT____00045, quasiGroup[8]], -11) :: defines_var(INT____00045) :: domain;
constraint int_lin_eq([-1, 1], [INT____00049, quasiGroup[13]], -11) :: defines_var(INT____00049) :: domain;
constraint int_lin_eq([-1, 1], [INT____00053, quasiGroup[18]], -11) :: defines_var(INT____00053) :: domain;
constraint int_lin_eq([-1, 1], [INT____00057, quasiGroup[23]], -11) :: defines_var(INT____00057) :: domain;
constraint int_lin_eq([-1, 1], [INT____00061, quasiGroup[4]], -16) :: defines_var(INT____00061) :: domain;
constraint int_lin_eq([-1, 1], [INT____00065, quasiGroup[9]], -16) :: defines_var(INT____00065) :: domain;
constraint int_lin_eq([-1, 1], [INT____00069, quasiGroup[14]], -16) :: defines_var(INT____00069) :: domain;
constraint int_lin_eq([-1, 1], [INT____00073, quasiGroup[19]], -16) :: defines_var(INT____00073) :: domain;
constraint int_lin_eq([-1, 1], [INT____00077, quasiGroup[24]], -16) :: defines_var(INT____00077) :: domain;
constraint int_lin_eq([-1, 1], [INT____00081, quasiGroup[5]], -21) :: defines_var(INT____00081) :: domain;
constraint int_lin_eq([-1, 1], [INT____00085, quasiGroup[10]], -21) :: defines_var(INT____00085) :: domain;
constraint int_lin_eq([-1, 1], [INT____00089, quasiGroup[15]], -21) :: defines_var(INT____00089) :: domain;
constraint int_lin_eq([-1, 1], [INT____00093, quasiGroup[20]], -21) :: defines_var(INT____00093) :: domain;
constraint int_lin_eq([-1, 1], [INT____00097, quasiGroup[25]], -21) :: defines_var(INT____00097) :: domain;
constraint int_lin_eq([-1, 5], [INT____00003, quasiGroup[1]], -1) :: defines_var(INT____00003) :: domain;
constraint int_lin_eq([-1, 5], [INT____00007, quasiGroup[6]], -2) :: defines_var(INT____00007) :: domain;
constraint int_lin_eq([-1, 5], [INT____00011, quasiGroup[11]], -3) :: defines_var(INT____00011) :: domain;
constraint int_lin_eq([-1, 5], [INT____00015, quasiGroup[16]], -4) :: defines_var(INT____00015) :: domain;
constraint int_lin_eq([-1, 5], [INT____00019, quasiGroup[21]], -5) :: defines_var(INT____00019) :: domain;
constraint int_lin_eq([-1, 5], [INT____00023, quasiGroup[2]], -1) :: defines_var(INT____00023) :: domain;
constraint int_lin_eq([-1, 5], [INT____00027, quasiGroup[7]], -2) :: defines_var(INT____00027) :: domain;
constraint int_lin_eq([-1, 5], [INT____00031, quasiGroup[12]], -3) :: defines_var(INT____00031) :: domain;
constraint int_lin_eq([-1, 5], [INT____00035, quasiGroup[17]], -4) :: defines_var(INT____00035) :: domain;
constraint int_lin_eq([-1, 5], [INT____00039, quasiGroup[22]], -5) :: defines_var(INT____00039) :: domain;
constraint int_lin_eq([-1, 5], [INT____00043, quasiGroup[3]], -1) :: defines_var(INT____00043) :: domain;
constraint int_lin_eq([-1, 5], [INT____00047, quasiGroup[8]], -2) :: defines_var(INT____00047) :: domain;
constraint int_lin_eq([-1, 5], [INT____00051, quasiGroup[13]], -3) :: defines_var(INT____00051) :: domain;
constraint int_lin_eq([-1, 5], [INT____00055, quasiGroup[18]], -4) :: defines_var(INT____00055) :: domain;
constraint int_lin_eq([-1, 5], [INT____00059, quasiGroup[23]], -5) :: defines_var(INT____00059) :: domain;
constraint int_lin_eq([-1, 5], [INT____00063, quasiGroup[4]], -1) :: defines_var(INT____00063) :: domain;
constraint int_lin_eq([-1, 5], [INT____00067, quasiGroup[9]], -2) :: defines_var(INT____00067) :: domain;
constraint int_lin_eq([-1, 5], [INT____00071, quasiGroup[14]], -3) :: defines_var(INT____00071) :: domain;
constraint int_lin_eq([-1, 5], [INT____00075, quasiGroup[19]], -4) :: defines_var(INT____00075) :: domain;
constraint int_lin_eq([-1, 5], [INT____00079, quasiGroup[24]], -5) :: defines_var(INT____00079) :: domain;
constraint int_lin_eq([-1, 5], [INT____00083, quasiGroup[5]], -1) :: defines_var(INT____00083) :: domain;
constraint int_lin_eq([-1, 5], [INT____00087, quasiGroup[10]], -2) :: defines_var(INT____00087) :: domain;
constraint int_lin_eq([-1, 5], [INT____00091, quasiGroup[15]], -3) :: defines_var(INT____00091) :: domain;
constraint int_lin_eq([-1, 5], [INT____00095, quasiGroup[20]], -4) :: defines_var(INT____00095) :: domain;
constraint int_lin_eq([-1, 5], [INT____00099, quasiGroup[25]], -5) :: defines_var(INT____00099) :: domain;
constraint int_lin_le([-1], [quasiGroup[20]], -1);
constraint int_lin_le([-1], [quasiGroup[25]], -2);
solve :: int_search([quasiGroup[1], quasiGroup[2], quasiGroup[3], quasiGroup[4], quasiGroup[5], quasiGroup[6], quasiGroup[7], quasiGroup[8], quasiGroup[9], quasiGroup[10], quasiGroup[11], quasiGroup[12], quasiGroup[13], quasiGroup[14], quasiGroup[15], quasiGroup[16], quasiGroup[17], quasiGroup[18], quasiGroup[19], quasiGroup[20], quasiGroup[21], quasiGroup[22], quasiGroup[23], quasiGroup[24], quasiGroup[25]], first_fail, indomain, complete) satisfy;