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

232 lines
19 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 0..4: INT____00003 :: is_defined_var :: var_is_introduced;
var 1..5: INT____00004 :: is_defined_var :: var_is_introduced;
var 6..10: INT____00006 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00007 :: is_defined_var :: var_is_introduced;
var 1..5: INT____00008 :: is_defined_var :: var_is_introduced;
var 11..15: INT____00010 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00011 :: is_defined_var :: var_is_introduced;
var 1..5: INT____00012 :: is_defined_var :: var_is_introduced;
var 16..20: INT____00014 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00015 :: is_defined_var :: var_is_introduced;
var 1..5: INT____00016 :: is_defined_var :: var_is_introduced;
var 21..25: INT____00018 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00019 :: is_defined_var :: var_is_introduced;
var 6..10: INT____00020 :: is_defined_var :: var_is_introduced;
var 1..5: INT____00022 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00023 :: is_defined_var :: var_is_introduced;
var 6..10: INT____00024 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00026 :: is_defined_var :: var_is_introduced;
var 6..10: INT____00027 :: is_defined_var :: var_is_introduced;
var 11..15: INT____00029 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00030 :: is_defined_var :: var_is_introduced;
var 6..10: INT____00031 :: is_defined_var :: var_is_introduced;
var 16..20: INT____00033 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00034 :: is_defined_var :: var_is_introduced;
var 6..10: INT____00035 :: is_defined_var :: var_is_introduced;
var 21..25: INT____00037 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00038 :: is_defined_var :: var_is_introduced;
var 11..15: INT____00039 :: is_defined_var :: var_is_introduced;
var 1..5: INT____00041 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00042 :: is_defined_var :: var_is_introduced;
var 11..15: INT____00043 :: is_defined_var :: var_is_introduced;
var 6..10: INT____00045 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00046 :: is_defined_var :: var_is_introduced;
var 11..15: INT____00047 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00049 :: is_defined_var :: var_is_introduced;
var 11..15: INT____00050 :: is_defined_var :: var_is_introduced;
var 16..20: INT____00052 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00053 :: is_defined_var :: var_is_introduced;
var 11..15: INT____00054 :: is_defined_var :: var_is_introduced;
var 21..25: INT____00056 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00057 :: is_defined_var :: var_is_introduced;
var 16..20: INT____00058 :: is_defined_var :: var_is_introduced;
var 1..5: INT____00060 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00061 :: is_defined_var :: var_is_introduced;
var 16..20: INT____00062 :: is_defined_var :: var_is_introduced;
var 6..10: INT____00064 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00065 :: is_defined_var :: var_is_introduced;
var 16..20: INT____00066 :: is_defined_var :: var_is_introduced;
var 11..15: INT____00068 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00069 :: is_defined_var :: var_is_introduced;
var 16..20: INT____00070 :: 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 21..25: INT____00075 :: is_defined_var :: var_is_introduced;
var 0..4: INT____00076 :: is_defined_var :: var_is_introduced;
var 21..25: INT____00077 :: is_defined_var :: var_is_introduced;
var 1..5: 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 6..10: 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 11..15: 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 16..20: 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 0..4: INT____00095 :: is_defined_var :: var_is_introduced;
array [1..25] of var 0..4: quasiGroup :: output_array([0..4, 0..4]);
array [1..25] of var 0..4: quasiGroupColumns :: 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 fzn_all_different_int([quasiGroupColumns[1], quasiGroupColumns[2], quasiGroupColumns[3], quasiGroupColumns[4], quasiGroupColumns[5]]);
constraint fzn_all_different_int([quasiGroupColumns[1], quasiGroupColumns[6], quasiGroupColumns[11], quasiGroupColumns[16], quasiGroupColumns[21]]);
constraint fzn_all_different_int([quasiGroupColumns[2], quasiGroupColumns[7], quasiGroupColumns[12], quasiGroupColumns[17], quasiGroupColumns[22]]);
constraint fzn_all_different_int([quasiGroupColumns[3], quasiGroupColumns[8], quasiGroupColumns[13], quasiGroupColumns[18], quasiGroupColumns[23]]);
constraint fzn_all_different_int([quasiGroupColumns[4], quasiGroupColumns[9], quasiGroupColumns[14], quasiGroupColumns[19], quasiGroupColumns[24]]);
constraint fzn_all_different_int([quasiGroupColumns[5], quasiGroupColumns[10], quasiGroupColumns[15], quasiGroupColumns[20], quasiGroupColumns[25]]);
constraint fzn_all_different_int([quasiGroupColumns[6], quasiGroupColumns[7], quasiGroupColumns[8], quasiGroupColumns[9], quasiGroupColumns[10]]);
constraint fzn_all_different_int([quasiGroupColumns[11], quasiGroupColumns[12], quasiGroupColumns[13], quasiGroupColumns[14], quasiGroupColumns[15]]);
constraint fzn_all_different_int([quasiGroupColumns[16], quasiGroupColumns[17], quasiGroupColumns[18], quasiGroupColumns[19], quasiGroupColumns[20]]);
constraint fzn_all_different_int([quasiGroupColumns[21], quasiGroupColumns[22], quasiGroupColumns[23], quasiGroupColumns[24], quasiGroupColumns[25]]);
constraint array_var_int_element(INT____00001, quasiGroup, INT____00003);
constraint array_var_int_element(INT____00001, quasiGroupColumns, INT____00003) :: defines_var(INT____00003);
constraint array_var_int_element(INT____00004, quasiGroup, INT____00007);
constraint array_var_int_element(INT____00006, quasiGroupColumns, INT____00007) :: defines_var(INT____00007);
constraint array_var_int_element(INT____00008, quasiGroup, INT____00011);
constraint array_var_int_element(INT____00010, quasiGroupColumns, INT____00011) :: defines_var(INT____00011);
constraint array_var_int_element(INT____00012, quasiGroup, INT____00015);
constraint array_var_int_element(INT____00014, quasiGroupColumns, INT____00015) :: defines_var(INT____00015);
constraint array_var_int_element(INT____00016, quasiGroup, INT____00019);
constraint array_var_int_element(INT____00018, quasiGroupColumns, INT____00019) :: defines_var(INT____00019);
constraint array_var_int_element(INT____00020, quasiGroup, INT____00023);
constraint array_var_int_element(INT____00022, quasiGroupColumns, INT____00023) :: defines_var(INT____00023);
constraint array_var_int_element(INT____00024, quasiGroup, INT____00026);
constraint array_var_int_element(INT____00024, quasiGroupColumns, INT____00026) :: defines_var(INT____00026);
constraint array_var_int_element(INT____00027, quasiGroup, INT____00030);
constraint array_var_int_element(INT____00029, quasiGroupColumns, INT____00030) :: defines_var(INT____00030);
constraint array_var_int_element(INT____00031, quasiGroup, INT____00034);
constraint array_var_int_element(INT____00033, quasiGroupColumns, INT____00034) :: defines_var(INT____00034);
constraint array_var_int_element(INT____00035, quasiGroup, INT____00038);
constraint array_var_int_element(INT____00037, quasiGroupColumns, INT____00038) :: defines_var(INT____00038);
constraint array_var_int_element(INT____00039, quasiGroup, INT____00042);
constraint array_var_int_element(INT____00041, quasiGroupColumns, INT____00042) :: defines_var(INT____00042);
constraint array_var_int_element(INT____00043, quasiGroup, INT____00046);
constraint array_var_int_element(INT____00045, quasiGroupColumns, INT____00046) :: defines_var(INT____00046);
constraint array_var_int_element(INT____00047, quasiGroup, INT____00049);
constraint array_var_int_element(INT____00047, quasiGroupColumns, INT____00049) :: defines_var(INT____00049);
constraint array_var_int_element(INT____00050, quasiGroup, INT____00053);
constraint array_var_int_element(INT____00052, quasiGroupColumns, INT____00053) :: defines_var(INT____00053);
constraint array_var_int_element(INT____00054, quasiGroup, INT____00057);
constraint array_var_int_element(INT____00056, quasiGroupColumns, INT____00057) :: defines_var(INT____00057);
constraint array_var_int_element(INT____00058, quasiGroup, INT____00061);
constraint array_var_int_element(INT____00060, quasiGroupColumns, INT____00061) :: defines_var(INT____00061);
constraint array_var_int_element(INT____00062, quasiGroup, INT____00065);
constraint array_var_int_element(INT____00064, quasiGroupColumns, INT____00065) :: defines_var(INT____00065);
constraint array_var_int_element(INT____00066, quasiGroup, INT____00069);
constraint array_var_int_element(INT____00068, quasiGroupColumns, INT____00069) :: defines_var(INT____00069);
constraint array_var_int_element(INT____00070, quasiGroup, INT____00072);
constraint array_var_int_element(INT____00070, quasiGroupColumns, INT____00072) :: defines_var(INT____00072);
constraint array_var_int_element(INT____00073, quasiGroup, INT____00076);
constraint array_var_int_element(INT____00075, quasiGroupColumns, INT____00076) :: defines_var(INT____00076);
constraint array_var_int_element(INT____00077, quasiGroup, INT____00080);
constraint array_var_int_element(INT____00079, quasiGroupColumns, INT____00080) :: defines_var(INT____00080);
constraint array_var_int_element(INT____00081, quasiGroup, INT____00084);
constraint array_var_int_element(INT____00083, quasiGroupColumns, INT____00084) :: defines_var(INT____00084);
constraint array_var_int_element(INT____00085, quasiGroup, INT____00088);
constraint array_var_int_element(INT____00087, quasiGroupColumns, INT____00088) :: defines_var(INT____00088);
constraint array_var_int_element(INT____00089, quasiGroup, INT____00092);
constraint array_var_int_element(INT____00091, quasiGroupColumns, INT____00092) :: defines_var(INT____00092);
constraint array_var_int_element(INT____00093, quasiGroup, INT____00095);
constraint array_var_int_element(INT____00093, quasiGroupColumns, INT____00095) :: defines_var(INT____00095);
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_eq(quasiGroupColumns[1], quasiGroup[1]);
constraint int_eq(quasiGroupColumns[2], quasiGroup[6]);
constraint int_eq(quasiGroupColumns[3], quasiGroup[11]);
constraint int_eq(quasiGroupColumns[4], quasiGroup[16]);
constraint int_eq(quasiGroupColumns[5], quasiGroup[21]);
constraint int_eq(quasiGroupColumns[6], quasiGroup[2]);
constraint int_eq(quasiGroupColumns[7], quasiGroup[7]);
constraint int_eq(quasiGroupColumns[8], quasiGroup[12]);
constraint int_eq(quasiGroupColumns[9], quasiGroup[17]);
constraint int_eq(quasiGroupColumns[10], quasiGroup[22]);
constraint int_eq(quasiGroupColumns[11], quasiGroup[3]);
constraint int_eq(quasiGroupColumns[12], quasiGroup[8]);
constraint int_eq(quasiGroupColumns[13], quasiGroup[13]);
constraint int_eq(quasiGroupColumns[14], quasiGroup[18]);
constraint int_eq(quasiGroupColumns[15], quasiGroup[23]);
constraint int_eq(quasiGroupColumns[16], quasiGroup[4]);
constraint int_eq(quasiGroupColumns[17], quasiGroup[9]);
constraint int_eq(quasiGroupColumns[18], quasiGroup[14]);
constraint int_eq(quasiGroupColumns[19], quasiGroup[19]);
constraint int_eq(quasiGroupColumns[20], quasiGroup[24]);
constraint int_eq(quasiGroupColumns[21], quasiGroup[5]);
constraint int_eq(quasiGroupColumns[22], quasiGroup[10]);
constraint int_eq(quasiGroupColumns[23], quasiGroup[15]);
constraint int_eq(quasiGroupColumns[24], quasiGroup[20]);
constraint int_eq(quasiGroupColumns[25], quasiGroup[25]);
constraint int_lin_eq([-1, 1], [INT____00001, quasiGroup[1]], -1) :: defines_var(INT____00001) :: domain;
constraint int_lin_eq([-1, 1], [INT____00004, quasiGroup[2]], -1) :: defines_var(INT____00004) :: domain;
constraint int_lin_eq([-1, 1], [INT____00006, quasiGroup[2]], -6) :: defines_var(INT____00006) :: domain;
constraint int_lin_eq([-1, 1], [INT____00008, quasiGroup[3]], -1) :: defines_var(INT____00008) :: domain;
constraint int_lin_eq([-1, 1], [INT____00010, quasiGroup[3]], -11) :: defines_var(INT____00010) :: domain;
constraint int_lin_eq([-1, 1], [INT____00012, quasiGroup[4]], -1) :: defines_var(INT____00012) :: domain;
constraint int_lin_eq([-1, 1], [INT____00014, quasiGroup[4]], -16) :: defines_var(INT____00014) :: domain;
constraint int_lin_eq([-1, 1], [INT____00016, quasiGroup[5]], -1) :: defines_var(INT____00016) :: domain;
constraint int_lin_eq([-1, 1], [INT____00018, quasiGroup[5]], -21) :: defines_var(INT____00018) :: domain;
constraint int_lin_eq([-1, 1], [INT____00020, quasiGroup[6]], -6) :: defines_var(INT____00020) :: domain;
constraint int_lin_eq([-1, 1], [INT____00022, quasiGroup[6]], -1) :: defines_var(INT____00022) :: domain;
constraint int_lin_eq([-1, 1], [INT____00024, quasiGroup[7]], -6) :: defines_var(INT____00024) :: domain;
constraint int_lin_eq([-1, 1], [INT____00027, quasiGroup[8]], -6) :: defines_var(INT____00027) :: domain;
constraint int_lin_eq([-1, 1], [INT____00029, quasiGroup[8]], -11) :: defines_var(INT____00029) :: domain;
constraint int_lin_eq([-1, 1], [INT____00031, quasiGroup[9]], -6) :: defines_var(INT____00031) :: domain;
constraint int_lin_eq([-1, 1], [INT____00033, quasiGroup[9]], -16) :: defines_var(INT____00033) :: domain;
constraint int_lin_eq([-1, 1], [INT____00035, quasiGroup[10]], -6) :: defines_var(INT____00035) :: domain;
constraint int_lin_eq([-1, 1], [INT____00037, quasiGroup[10]], -21) :: defines_var(INT____00037) :: domain;
constraint int_lin_eq([-1, 1], [INT____00039, quasiGroup[11]], -11) :: defines_var(INT____00039) :: domain;
constraint int_lin_eq([-1, 1], [INT____00041, quasiGroup[11]], -1) :: defines_var(INT____00041) :: domain;
constraint int_lin_eq([-1, 1], [INT____00043, quasiGroup[12]], -11) :: defines_var(INT____00043) :: domain;
constraint int_lin_eq([-1, 1], [INT____00045, quasiGroup[12]], -6) :: defines_var(INT____00045) :: domain;
constraint int_lin_eq([-1, 1], [INT____00047, quasiGroup[13]], -11) :: defines_var(INT____00047) :: domain;
constraint int_lin_eq([-1, 1], [INT____00050, quasiGroup[14]], -11) :: defines_var(INT____00050) :: domain;
constraint int_lin_eq([-1, 1], [INT____00052, quasiGroup[14]], -16) :: defines_var(INT____00052) :: domain;
constraint int_lin_eq([-1, 1], [INT____00054, quasiGroup[15]], -11) :: defines_var(INT____00054) :: domain;
constraint int_lin_eq([-1, 1], [INT____00056, quasiGroup[15]], -21) :: defines_var(INT____00056) :: domain;
constraint int_lin_eq([-1, 1], [INT____00058, quasiGroup[16]], -16) :: defines_var(INT____00058) :: domain;
constraint int_lin_eq([-1, 1], [INT____00060, quasiGroup[16]], -1) :: defines_var(INT____00060) :: domain;
constraint int_lin_eq([-1, 1], [INT____00062, quasiGroup[17]], -16) :: defines_var(INT____00062) :: domain;
constraint int_lin_eq([-1, 1], [INT____00064, quasiGroup[17]], -6) :: defines_var(INT____00064) :: domain;
constraint int_lin_eq([-1, 1], [INT____00066, quasiGroup[18]], -16) :: defines_var(INT____00066) :: domain;
constraint int_lin_eq([-1, 1], [INT____00068, quasiGroup[18]], -11) :: defines_var(INT____00068) :: domain;
constraint int_lin_eq([-1, 1], [INT____00070, quasiGroup[19]], -16) :: defines_var(INT____00070) :: domain;
constraint int_lin_eq([-1, 1], [INT____00073, quasiGroup[20]], -16) :: defines_var(INT____00073) :: domain;
constraint int_lin_eq([-1, 1], [INT____00075, quasiGroup[20]], -21) :: defines_var(INT____00075) :: domain;
constraint int_lin_eq([-1, 1], [INT____00077, quasiGroup[21]], -21) :: defines_var(INT____00077) :: domain;
constraint int_lin_eq([-1, 1], [INT____00079, quasiGroup[21]], -1) :: defines_var(INT____00079) :: domain;
constraint int_lin_eq([-1, 1], [INT____00081, quasiGroup[22]], -21) :: defines_var(INT____00081) :: domain;
constraint int_lin_eq([-1, 1], [INT____00083, quasiGroup[22]], -6) :: defines_var(INT____00083) :: domain;
constraint int_lin_eq([-1, 1], [INT____00085, quasiGroup[23]], -21) :: defines_var(INT____00085) :: domain;
constraint int_lin_eq([-1, 1], [INT____00087, quasiGroup[23]], -11) :: defines_var(INT____00087) :: domain;
constraint int_lin_eq([-1, 1], [INT____00089, quasiGroup[24]], -21) :: defines_var(INT____00089) :: domain;
constraint int_lin_eq([-1, 1], [INT____00091, quasiGroup[24]], -16) :: defines_var(INT____00091) :: domain;
constraint int_lin_eq([-1, 1], [INT____00093, quasiGroup[25]], -21) :: defines_var(INT____00093) :: 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;