bpp.fzn 2.77 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
array [1..6] of int: w = [50, 60, 30, 70, 50, 40];
var 0..6: INT____00001 :: is_defined_var :: var_is_introduced;
array [1..6] of var 0..100: bin_total :: output_array([1..6]);
var 0..6: obj :: output_var = INT____00001;
array [1..6] of var 0..1: used :: output_array([1..6]);
array [1..36] of var 0..1: x :: output_array([1..6, 1..6]);
constraint int_lin_eq([1, 1, 1, 1, 1, 1], [x[1], x[2], x[3], x[4], x[5], x[6]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1], [x[7], x[8], x[9], x[10], x[11], x[12]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1], [x[13], x[14], x[15], x[16], x[17], x[18]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1], [x[19], x[20], x[21], x[22], x[23], x[24]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1], [x[25], x[26], x[27], x[28], x[29], x[30]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1], [x[31], x[32], x[33], x[34], x[35], x[36]], 1);
constraint int_lin_eq([-1, 1, 1, 1, 1, 1, 1], [INT____00001, used[1], used[2], used[3], used[4], used[5], used[6]], 0) :: defines_var(INT____00001);
constraint int_lin_eq([1, -50, -60, -30, -70, -50, -40], [bin_total[1], x[1], x[7], x[13], x[19], x[25], x[31]], 0);
constraint int_lin_eq([1, -50, -60, -30, -70, -50, -40], [bin_total[2], x[2], x[8], x[14], x[20], x[26], x[32]], 0);
constraint int_lin_eq([1, -50, -60, -30, -70, -50, -40], [bin_total[3], x[3], x[9], x[15], x[21], x[27], x[33]], 0);
constraint int_lin_eq([1, -50, -60, -30, -70, -50, -40], [bin_total[4], x[4], x[10], x[16], x[22], x[28], x[34]], 0);
constraint int_lin_eq([1, -50, -60, -30, -70, -50, -40], [bin_total[5], x[5], x[11], x[17], x[23], x[29], x[35]], 0);
constraint int_lin_eq([1, -50, -60, -30, -70, -50, -40], [bin_total[6], x[6], x[12], x[18], x[24], x[30], x[36]], 0);
constraint int_lin_le([-100, 50, 60, 30, 70, 50, 40], [used[1], x[1], x[7], x[13], x[19], x[25], x[31]], 0);
constraint int_lin_le([-100, 50, 60, 30, 70, 50, 40], [used[2], x[2], x[8], x[14], x[20], x[26], x[32]], 0);
constraint int_lin_le([-100, 50, 60, 30, 70, 50, 40], [used[3], x[3], x[9], x[15], x[21], x[27], x[33]], 0);
constraint int_lin_le([-100, 50, 60, 30, 70, 50, 40], [used[4], x[4], x[10], x[16], x[22], x[28], x[34]], 0);
constraint int_lin_le([-100, 50, 60, 30, 70, 50, 40], [used[5], x[5], x[11], x[17], x[23], x[29], x[35]], 0);
constraint int_lin_le([-100, 50, 60, 30, 70, 50, 40], [used[6], x[6], x[12], x[18], x[24], x[30], x[36]], 0);
solve  :: int_search([x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15], x[16], x[17], x[18], x[19], x[20], x[21], x[22], x[23], x[24], x[25], x[26], x[27], x[28], x[29], x[30], x[31], x[32], x[33], x[34], x[35], x[36], used[1], used[2], used[3], used[4], used[5], used[6], bin_total[1], bin_total[2], bin_total[3], bin_total[4], bin_total[5], bin_total[6]], first_fail, indomain, complete) minimize INT____00001;