83 lines
6.4 KiB
MiniZinc
83 lines
6.4 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 global_cardinality(array [int] of var int: x, array [int] of int: cover, array [int] of var int: counts);
|
|
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);
|
|
array [1..7] of int: d = [250, 255, 260, 500, 500, 800, 1100];
|
|
var bool: BOOL____00002 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00003 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00004 :: is_defined_var :: var_is_introduced;
|
|
var 204..408: INT____00008 :: is_defined_var :: var_is_introduced;
|
|
var 0..7344: INT____00009 :: is_defined_var :: var_is_introduced;
|
|
var 0..7344: INT____00010 :: is_defined_var :: var_is_introduced;
|
|
var 0..7344: INT____00011 :: is_defined_var :: var_is_introduced;
|
|
var 0..7344: INT____00012 :: is_defined_var :: var_is_introduced;
|
|
var 0..7344: INT____00013 :: is_defined_var :: var_is_introduced;
|
|
var 0..7344: INT____00014 :: is_defined_var :: var_is_introduced;
|
|
var 0..7344: INT____00015 :: is_defined_var :: var_is_introduced;
|
|
var 0..7344: INT____00016 :: is_defined_var :: var_is_introduced;
|
|
var 0..7344: INT____00017 :: is_defined_var :: var_is_introduced;
|
|
var 0..7344: INT____00018 :: is_defined_var :: var_is_introduced;
|
|
var 0..7344: INT____00019 :: is_defined_var :: var_is_introduced;
|
|
var 0..7344: INT____00020 :: is_defined_var :: var_is_introduced;
|
|
var 0..7344: INT____00021 :: is_defined_var :: var_is_introduced;
|
|
var 0..7344: INT____00022 :: is_defined_var :: var_is_introduced;
|
|
var 408..816: INT____00023 :: is_defined_var :: var_is_introduced;
|
|
var 408..816: Production :: output_var = INT____00023;
|
|
array [1..2] of var 1..816: R :: output_array([1..2]);
|
|
var 7..408: Surplus;
|
|
array [1..2] of var bool: b____00001;
|
|
array [1..14] of var 0..9: p :: output_array([1..7, 1..2]);
|
|
constraint array_bool_and([BOOL____00004, BOOL____00002], b____00001[1]);
|
|
constraint array_bool_or([BOOL____00003, b____00001[2]], BOOL____00004) :: defines_var(BOOL____00004);
|
|
constraint bool_eq(b____00001[1], true);
|
|
constraint int_div(Production, 2, INT____00008) :: defines_var(INT____00008);
|
|
constraint int_le(INT____00008, R[2]);
|
|
constraint int_le(R[1], INT____00008);
|
|
constraint int_le_reif(p[7], p[9], BOOL____00002) :: defines_var(BOOL____00002);
|
|
constraint int_le_reif(p[8], p[10], b____00001[2]);
|
|
constraint int_lin_eq([-1, 9], [Surplus, Production], 3665);
|
|
constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1], [p[1], p[3], p[5], p[7], p[9], p[11], p[13]], 9);
|
|
constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1], [p[2], p[4], p[6], p[8], p[10], p[12], p[14]], 9);
|
|
constraint int_lin_le([-1, -1], [INT____00009, INT____00011], -250);
|
|
constraint int_lin_le([-1, -1], [INT____00010, INT____00012], -255);
|
|
constraint int_lin_le([-1, -1], [INT____00013, INT____00014], -260);
|
|
constraint int_lin_le([-1, -1], [INT____00015, INT____00016], -500);
|
|
constraint int_lin_le([-1, -1], [INT____00017, INT____00018], -500);
|
|
constraint int_lin_le([-1, -1], [INT____00019, INT____00020], -800);
|
|
constraint int_lin_le([-1, -1], [INT____00021, INT____00022], -1100);
|
|
constraint int_lin_le([-1, 1, 1], [Surplus, INT____00009, INT____00011], 500);
|
|
constraint int_lin_le([-1, 1, 1], [Surplus, INT____00010, INT____00012], 510);
|
|
constraint int_lin_le([-1, 1, 1], [Surplus, INT____00013, INT____00014], 520);
|
|
constraint int_lin_le([-1, 1, 1], [Surplus, INT____00015, INT____00016], 1000);
|
|
constraint int_lin_le([-1, 1, 1], [Surplus, INT____00017, INT____00018], 1000);
|
|
constraint int_lin_le([-1, 1, 1], [Surplus, INT____00019, INT____00020], 1600);
|
|
constraint int_lin_le([-1, 1, 1], [Surplus, INT____00021, INT____00022], 2200);
|
|
constraint int_lin_le([1, -1, 1, -1], [INT____00009, INT____00010, INT____00011, INT____00012], -1);
|
|
constraint int_lin_le([1, 1, -1, -1], [INT____00010, INT____00012, INT____00013, INT____00014], -1);
|
|
constraint int_lin_le([1, 1, -1, -1], [INT____00013, INT____00014, INT____00015, INT____00016], -1);
|
|
constraint int_lin_le([1, 1, -1, -1], [INT____00017, INT____00018, INT____00019, INT____00020], -1);
|
|
constraint int_lin_le([1, 1, -1, -1], [INT____00019, INT____00020, INT____00021, INT____00022], -1);
|
|
constraint int_lin_le([-1, 1, 1, 1, 1], [Surplus, INT____00009, INT____00010, INT____00011, INT____00012], 1010);
|
|
constraint int_lin_le([-1, 1, 1, 1, 1, 1, 1], [Surplus, INT____00009, INT____00010, INT____00011, INT____00012, INT____00013, INT____00014], 1530);
|
|
constraint int_lin_le([-1, 1, 1, 1, 1, 1, 1, 1, 1], [Surplus, INT____00009, INT____00010, INT____00011, INT____00012, INT____00013, INT____00014, INT____00015, INT____00016], 2530);
|
|
constraint int_lin_le([-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [Surplus, INT____00009, INT____00010, INT____00011, INT____00012, INT____00013, INT____00014, INT____00015, INT____00016, INT____00017, INT____00018], 3530);
|
|
constraint int_lin_le([-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [Surplus, INT____00009, INT____00010, INT____00011, INT____00012, INT____00013, INT____00014, INT____00015, INT____00016, INT____00017, INT____00018, INT____00019, INT____00020], 5130);
|
|
constraint int_lt_reif(p[7], p[9], BOOL____00003) :: defines_var(BOOL____00003);
|
|
constraint int_plus(R[1], R[2], INT____00023) :: defines_var(INT____00023);
|
|
constraint int_times(p[1], R[1], INT____00009) :: defines_var(INT____00009);
|
|
constraint int_times(p[2], R[2], INT____00011) :: defines_var(INT____00011);
|
|
constraint int_times(p[3], R[1], INT____00010) :: defines_var(INT____00010);
|
|
constraint int_times(p[4], R[2], INT____00012) :: defines_var(INT____00012);
|
|
constraint int_times(p[5], R[1], INT____00013) :: defines_var(INT____00013);
|
|
constraint int_times(p[6], R[2], INT____00014) :: defines_var(INT____00014);
|
|
constraint int_times(p[7], R[1], INT____00015) :: defines_var(INT____00015);
|
|
constraint int_times(p[8], R[2], INT____00016) :: defines_var(INT____00016);
|
|
constraint int_times(p[9], R[1], INT____00017) :: defines_var(INT____00017);
|
|
constraint int_times(p[10], R[2], INT____00018) :: defines_var(INT____00018);
|
|
constraint int_times(p[11], R[1], INT____00019) :: defines_var(INT____00019);
|
|
constraint int_times(p[12], R[2], INT____00020) :: defines_var(INT____00020);
|
|
constraint int_times(p[13], R[1], INT____00021) :: defines_var(INT____00021);
|
|
constraint int_times(p[14], R[2], INT____00022) :: defines_var(INT____00022);
|
|
solve :: int_search([p[1], p[2], p[3], p[4], p[5], p[6], p[7], p[8], p[9], p[10], p[11], p[12], p[13], p[14], R[1], R[2]], input_order, indomain_min, complete) minimize INT____00023;
|