190 lines
15 KiB
MiniZinc
190 lines
15 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);
|
|
array [1..4] of int: bridges = [2, 7, 10, 12];
|
|
array [1..20] of int: dist1 = [2, 7, 10, 12, 5, 8, 11, 13, 7, 4, 7, 9, 9, 4, 7, 9, 12, 7, 4, 6];
|
|
array [1..20] of int: dist2 = [9, 6, 9, 11, 3, 8, 11, 13, 10, 5, 4, 6, 15, 10, 7, 5, 13, 8, 5, 3];
|
|
array [1..20] of int: pos = [2, 4, 6, 4, 3, 2, 2, 2, 6, 3, 9, 2, 7, 2, 12, 4, 10, 2, 12, 2];
|
|
var bool: BOOL____00051 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00052 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00053 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00054 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00055 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00056 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00059 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00060 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00061 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00062 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00063 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00064 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00067 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00068 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00069 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00070 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00071 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00072 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00075 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00076 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00077 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00078 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00079 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00080 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00083 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00084 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00085 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00086 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00087 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00088 :: is_defined_var :: var_is_introduced;
|
|
var 2..13: INT____00001 :: is_defined_var :: var_is_introduced;
|
|
var 3..15: INT____00002 :: is_defined_var :: var_is_introduced;
|
|
var 2..13: INT____00003 :: is_defined_var :: var_is_introduced;
|
|
var 3..15: INT____00004 :: is_defined_var :: var_is_introduced;
|
|
var 6..29: INT____00005 :: is_defined_var :: var_is_introduced;
|
|
var 6..29: INT____00006 :: is_defined_var :: var_is_introduced;
|
|
var 6..29: INT____00007 :: is_defined_var :: var_is_introduced;
|
|
var 6..29: INT____00008 :: is_defined_var :: var_is_introduced;
|
|
var 5..8: INT____00009 :: is_defined_var :: var_is_introduced;
|
|
var 2..13: INT____00010 :: is_defined_var :: var_is_introduced;
|
|
var 3..15: INT____00011 :: is_defined_var :: var_is_introduced;
|
|
var 5..8: INT____00012 :: is_defined_var :: var_is_introduced;
|
|
var 2..13: INT____00013 :: is_defined_var :: var_is_introduced;
|
|
var 3..15: INT____00014 :: is_defined_var :: var_is_introduced;
|
|
var 6..29: INT____00015 :: is_defined_var :: var_is_introduced;
|
|
var 6..29: INT____00016 :: is_defined_var :: var_is_introduced;
|
|
var 6..29: INT____00017 :: is_defined_var :: var_is_introduced;
|
|
var 6..29: INT____00018 :: is_defined_var :: var_is_introduced;
|
|
var 9..12: INT____00019 :: is_defined_var :: var_is_introduced;
|
|
var 2..13: INT____00020 :: is_defined_var :: var_is_introduced;
|
|
var 3..15: INT____00021 :: is_defined_var :: var_is_introduced;
|
|
var 9..12: INT____00022 :: is_defined_var :: var_is_introduced;
|
|
var 2..13: INT____00023 :: is_defined_var :: var_is_introduced;
|
|
var 3..15: INT____00024 :: is_defined_var :: var_is_introduced;
|
|
var 6..29: INT____00025 :: is_defined_var :: var_is_introduced;
|
|
var 6..29: INT____00026 :: is_defined_var :: var_is_introduced;
|
|
var 6..29: INT____00027 :: is_defined_var :: var_is_introduced;
|
|
var 6..29: INT____00028 :: is_defined_var :: var_is_introduced;
|
|
var 13..16: INT____00029 :: is_defined_var :: var_is_introduced;
|
|
var 2..13: INT____00030 :: is_defined_var :: var_is_introduced;
|
|
var 3..15: INT____00031 :: is_defined_var :: var_is_introduced;
|
|
var 13..16: INT____00032 :: is_defined_var :: var_is_introduced;
|
|
var 2..13: INT____00033 :: is_defined_var :: var_is_introduced;
|
|
var 3..15: INT____00034 :: is_defined_var :: var_is_introduced;
|
|
var 6..29: INT____00035 :: is_defined_var :: var_is_introduced;
|
|
var 6..29: INT____00036 :: is_defined_var :: var_is_introduced;
|
|
var 6..29: INT____00037 :: is_defined_var :: var_is_introduced;
|
|
var 6..29: INT____00038 :: is_defined_var :: var_is_introduced;
|
|
var 17..20: INT____00039 :: is_defined_var :: var_is_introduced;
|
|
var 2..13: INT____00040 :: is_defined_var :: var_is_introduced;
|
|
var 3..15: INT____00041 :: is_defined_var :: var_is_introduced;
|
|
var 17..20: INT____00042 :: is_defined_var :: var_is_introduced;
|
|
var 2..13: INT____00043 :: is_defined_var :: var_is_introduced;
|
|
var 3..15: INT____00044 :: is_defined_var :: var_is_introduced;
|
|
var 6..29: INT____00045 :: is_defined_var :: var_is_introduced;
|
|
var 6..29: INT____00046 :: is_defined_var :: var_is_introduced;
|
|
var 6..29: INT____00047 :: is_defined_var :: var_is_introduced;
|
|
var 6..29: INT____00048 :: is_defined_var :: var_is_introduced;
|
|
var 30..145: INT____00049 :: is_defined_var :: var_is_introduced;
|
|
array [1..5] of var 1..4: b_ix :: output_array([1..5]);
|
|
var 1..4: min_b_ix____00050 = b_ix[1];
|
|
var 1..4: min_b_ix____00058 = b_ix[2];
|
|
var 1..4: min_b_ix____00066 = b_ix[3];
|
|
var 1..4: min_b_ix____00074 = b_ix[4];
|
|
var 1..4: min_b_ix____00082 = b_ix[5];
|
|
var 30..145: tot_dist :: output_var = INT____00049;
|
|
array [1..2] of var 1..4: x :: output_array([1..2]);
|
|
constraint fzn_all_different_int(x);
|
|
constraint array_bool_and([BOOL____00051, BOOL____00052], BOOL____00055) :: defines_var(BOOL____00055);
|
|
constraint array_bool_and([BOOL____00053, BOOL____00054], BOOL____00056) :: defines_var(BOOL____00056);
|
|
constraint array_bool_and([BOOL____00059, BOOL____00060], BOOL____00063) :: defines_var(BOOL____00063);
|
|
constraint array_bool_and([BOOL____00061, BOOL____00062], BOOL____00064) :: defines_var(BOOL____00064);
|
|
constraint array_bool_and([BOOL____00067, BOOL____00068], BOOL____00071) :: defines_var(BOOL____00071);
|
|
constraint array_bool_and([BOOL____00069, BOOL____00070], BOOL____00072) :: defines_var(BOOL____00072);
|
|
constraint array_bool_and([BOOL____00075, BOOL____00076], BOOL____00079) :: defines_var(BOOL____00079);
|
|
constraint array_bool_and([BOOL____00077, BOOL____00078], BOOL____00080) :: defines_var(BOOL____00080);
|
|
constraint array_bool_and([BOOL____00083, BOOL____00084], BOOL____00087) :: defines_var(BOOL____00087);
|
|
constraint array_bool_and([BOOL____00085, BOOL____00086], BOOL____00088) :: defines_var(BOOL____00088);
|
|
constraint array_bool_or([BOOL____00055, BOOL____00056], true);
|
|
constraint array_bool_or([BOOL____00063, BOOL____00064], true);
|
|
constraint array_bool_or([BOOL____00071, BOOL____00072], true);
|
|
constraint array_bool_or([BOOL____00079, BOOL____00080], true);
|
|
constraint array_bool_or([BOOL____00087, BOOL____00088], true);
|
|
constraint array_int_element(INT____00009, dist1, INT____00010) :: defines_var(INT____00010);
|
|
constraint array_int_element(INT____00009, dist2, INT____00011) :: defines_var(INT____00011);
|
|
constraint array_int_element(INT____00012, dist1, INT____00013) :: defines_var(INT____00013);
|
|
constraint array_int_element(INT____00012, dist2, INT____00014) :: defines_var(INT____00014);
|
|
constraint array_int_element(INT____00019, dist1, INT____00020) :: defines_var(INT____00020);
|
|
constraint array_int_element(INT____00019, dist2, INT____00021) :: defines_var(INT____00021);
|
|
constraint array_int_element(INT____00022, dist1, INT____00023) :: defines_var(INT____00023);
|
|
constraint array_int_element(INT____00022, dist2, INT____00024) :: defines_var(INT____00024);
|
|
constraint array_int_element(INT____00029, dist1, INT____00030) :: defines_var(INT____00030);
|
|
constraint array_int_element(INT____00029, dist2, INT____00031) :: defines_var(INT____00031);
|
|
constraint array_int_element(INT____00032, dist1, INT____00033) :: defines_var(INT____00033);
|
|
constraint array_int_element(INT____00032, dist2, INT____00034) :: defines_var(INT____00034);
|
|
constraint array_int_element(INT____00039, dist1, INT____00040) :: defines_var(INT____00040);
|
|
constraint array_int_element(INT____00039, dist2, INT____00041) :: defines_var(INT____00041);
|
|
constraint array_int_element(INT____00042, dist1, INT____00043) :: defines_var(INT____00043);
|
|
constraint array_int_element(INT____00042, dist2, INT____00044) :: defines_var(INT____00044);
|
|
constraint array_int_element(x[1], dist1, INT____00001) :: defines_var(INT____00001);
|
|
constraint array_int_element(x[1], dist2, INT____00002) :: defines_var(INT____00002);
|
|
constraint array_int_element(x[2], dist1, INT____00003) :: defines_var(INT____00003);
|
|
constraint array_int_element(x[2], dist2, INT____00004) :: defines_var(INT____00004);
|
|
constraint int_eq_reif(b_ix[1], 1, BOOL____00052) :: defines_var(BOOL____00052);
|
|
constraint int_eq_reif(b_ix[1], 2, BOOL____00054) :: defines_var(BOOL____00054);
|
|
constraint int_eq_reif(b_ix[2], 1, BOOL____00060) :: defines_var(BOOL____00060);
|
|
constraint int_eq_reif(b_ix[2], 2, BOOL____00062) :: defines_var(BOOL____00062);
|
|
constraint int_eq_reif(b_ix[3], 1, BOOL____00068) :: defines_var(BOOL____00068);
|
|
constraint int_eq_reif(b_ix[3], 2, BOOL____00070) :: defines_var(BOOL____00070);
|
|
constraint int_eq_reif(b_ix[4], 1, BOOL____00076) :: defines_var(BOOL____00076);
|
|
constraint int_eq_reif(b_ix[4], 2, BOOL____00078) :: defines_var(BOOL____00078);
|
|
constraint int_eq_reif(b_ix[5], 1, BOOL____00084) :: defines_var(BOOL____00084);
|
|
constraint int_eq_reif(b_ix[5], 2, BOOL____00086) :: defines_var(BOOL____00086);
|
|
constraint int_le(x[1], x[2]);
|
|
constraint int_lin_eq([-1, 1], [INT____00009, x[1]], -4) :: defines_var(INT____00009) :: domain;
|
|
constraint int_lin_eq([-1, 1], [INT____00012, x[2]], -4) :: defines_var(INT____00012) :: domain;
|
|
constraint int_lin_eq([-1, 1], [INT____00019, x[1]], -8) :: defines_var(INT____00019) :: domain;
|
|
constraint int_lin_eq([-1, 1], [INT____00022, x[2]], -8) :: defines_var(INT____00022) :: domain;
|
|
constraint int_lin_eq([-1, 1], [INT____00029, x[1]], -12) :: defines_var(INT____00029) :: domain;
|
|
constraint int_lin_eq([-1, 1], [INT____00032, x[2]], -12) :: defines_var(INT____00032) :: domain;
|
|
constraint int_lin_eq([-1, 1], [INT____00039, x[1]], -16) :: defines_var(INT____00039) :: domain;
|
|
constraint int_lin_eq([-1, 1], [INT____00042, x[2]], -16) :: defines_var(INT____00042) :: domain;
|
|
constraint int_lin_eq([-1, 1, 1], [INT____00005, INT____00001, INT____00002], -1) :: defines_var(INT____00005);
|
|
constraint int_lin_eq([-1, 1, 1], [INT____00007, INT____00003, INT____00004], -1) :: defines_var(INT____00007);
|
|
constraint int_lin_eq([-1, 1, 1], [INT____00015, INT____00010, INT____00011], -1) :: defines_var(INT____00015);
|
|
constraint int_lin_eq([-1, 1, 1], [INT____00017, INT____00013, INT____00014], -1) :: defines_var(INT____00017);
|
|
constraint int_lin_eq([-1, 1, 1], [INT____00025, INT____00020, INT____00021], -1) :: defines_var(INT____00025);
|
|
constraint int_lin_eq([-1, 1, 1], [INT____00027, INT____00023, INT____00024], -1) :: defines_var(INT____00027);
|
|
constraint int_lin_eq([-1, 1, 1], [INT____00035, INT____00030, INT____00031], -1) :: defines_var(INT____00035);
|
|
constraint int_lin_eq([-1, 1, 1], [INT____00037, INT____00033, INT____00034], -1) :: defines_var(INT____00037);
|
|
constraint int_lin_eq([-1, 1, 1], [INT____00045, INT____00040, INT____00041], -1) :: defines_var(INT____00045);
|
|
constraint int_lin_eq([-1, 1, 1], [INT____00047, INT____00043, INT____00044], -1) :: defines_var(INT____00047);
|
|
constraint int_lin_eq([-1, 1, 1, 1, 1, 1], [INT____00049, INT____00008, INT____00018, INT____00028, INT____00038, INT____00048], 0) :: defines_var(INT____00049);
|
|
constraint int_lin_eq_reif([1, 1, -1], [INT____00001, INT____00002, INT____00008], -1, BOOL____00051) :: defines_var(BOOL____00051);
|
|
constraint int_lin_eq_reif([1, 1, -1], [INT____00003, INT____00004, INT____00008], -1, BOOL____00053) :: defines_var(BOOL____00053);
|
|
constraint int_lin_eq_reif([1, 1, -1], [INT____00010, INT____00011, INT____00018], -1, BOOL____00059) :: defines_var(BOOL____00059);
|
|
constraint int_lin_eq_reif([1, 1, -1], [INT____00013, INT____00014, INT____00018], -1, BOOL____00061) :: defines_var(BOOL____00061);
|
|
constraint int_lin_eq_reif([1, 1, -1], [INT____00020, INT____00021, INT____00028], -1, BOOL____00067) :: defines_var(BOOL____00067);
|
|
constraint int_lin_eq_reif([1, 1, -1], [INT____00023, INT____00024, INT____00028], -1, BOOL____00069) :: defines_var(BOOL____00069);
|
|
constraint int_lin_eq_reif([1, 1, -1], [INT____00030, INT____00031, INT____00038], -1, BOOL____00075) :: defines_var(BOOL____00075);
|
|
constraint int_lin_eq_reif([1, 1, -1], [INT____00033, INT____00034, INT____00038], -1, BOOL____00077) :: defines_var(BOOL____00077);
|
|
constraint int_lin_eq_reif([1, 1, -1], [INT____00040, INT____00041, INT____00048], -1, BOOL____00083) :: defines_var(BOOL____00083);
|
|
constraint int_lin_eq_reif([1, 1, -1], [INT____00043, INT____00044, INT____00048], -1, BOOL____00085) :: defines_var(BOOL____00085);
|
|
constraint int_min(INT____00005, INT____00005, INT____00006) :: defines_var(INT____00006);
|
|
constraint int_min(INT____00007, INT____00006, INT____00008) :: defines_var(INT____00008);
|
|
constraint int_min(INT____00015, INT____00015, INT____00016) :: defines_var(INT____00016);
|
|
constraint int_min(INT____00017, INT____00016, INT____00018) :: defines_var(INT____00018);
|
|
constraint int_min(INT____00025, INT____00025, INT____00026) :: defines_var(INT____00026);
|
|
constraint int_min(INT____00027, INT____00026, INT____00028) :: defines_var(INT____00028);
|
|
constraint int_min(INT____00035, INT____00035, INT____00036) :: defines_var(INT____00036);
|
|
constraint int_min(INT____00037, INT____00036, INT____00038) :: defines_var(INT____00038);
|
|
constraint int_min(INT____00045, INT____00045, INT____00046) :: defines_var(INT____00046);
|
|
constraint int_min(INT____00047, INT____00046, INT____00048) :: defines_var(INT____00048);
|
|
solve minimize INT____00049;
|