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

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;