63 lines
2.9 KiB
MiniZinc
63 lines
2.9 KiB
MiniZinc
array [1..36] of int: d = [0, 4, 3, 9999, 9999, 9999, 9999, 0, 9999, 3, 2, 9999, 9999, 9999, 0, 9999, 3, 9999, 9999, 9999, 9999, 0, 9999, 2, 9999, 9999, 9999, 9999, 0, 2, 9999, 9999, 9999, 9999, 9999, 0];
|
|
var 0..19: INT____00001 :: is_defined_var :: var_is_introduced;
|
|
array [1..6] of var 0..1: inFlow :: output_array([1..6]);
|
|
array [1..6] of var 0..1: outFlow :: output_array([1..6]);
|
|
array [1..6] of var -1..1: rhs;
|
|
var 0..19: total_cost :: output_var = INT____00001;
|
|
array [1..36] of var 0..1: x :: output_array([1..6, 1..6]);
|
|
constraint int_eq(rhs[1], 1);
|
|
constraint int_eq(rhs[2], 0);
|
|
constraint int_eq(rhs[3], 0);
|
|
constraint int_eq(rhs[4], 0);
|
|
constraint int_eq(rhs[5], 0);
|
|
constraint int_eq(rhs[6], -1);
|
|
constraint int_eq(x[1], 0);
|
|
constraint int_eq(x[4], 0);
|
|
constraint int_eq(x[5], 0);
|
|
constraint int_eq(x[6], 0);
|
|
constraint int_eq(x[7], 0);
|
|
constraint int_eq(x[8], 0);
|
|
constraint int_eq(x[9], 0);
|
|
constraint int_eq(x[12], 0);
|
|
constraint int_eq(x[13], 0);
|
|
constraint int_eq(x[14], 0);
|
|
constraint int_eq(x[15], 0);
|
|
constraint int_eq(x[16], 0);
|
|
constraint int_eq(x[18], 0);
|
|
constraint int_eq(x[19], 0);
|
|
constraint int_eq(x[20], 0);
|
|
constraint int_eq(x[21], 0);
|
|
constraint int_eq(x[22], 0);
|
|
constraint int_eq(x[23], 0);
|
|
constraint int_eq(x[25], 0);
|
|
constraint int_eq(x[26], 0);
|
|
constraint int_eq(x[27], 0);
|
|
constraint int_eq(x[28], 0);
|
|
constraint int_eq(x[29], 0);
|
|
constraint int_eq(x[31], 0);
|
|
constraint int_eq(x[32], 0);
|
|
constraint int_eq(x[33], 0);
|
|
constraint int_eq(x[34], 0);
|
|
constraint int_eq(x[35], 0);
|
|
constraint int_eq(x[36], 0);
|
|
constraint int_lin_eq([1, -1], [inFlow[1], x[1]], 0);
|
|
constraint int_lin_eq([1, -1], [outFlow[6], x[36]], 0);
|
|
constraint int_lin_eq([-1, 1, -1], [inFlow[1], outFlow[1], rhs[1]], 0);
|
|
constraint int_lin_eq([-1, 1, -1], [inFlow[2], outFlow[2], rhs[2]], 0);
|
|
constraint int_lin_eq([-1, 1, -1], [inFlow[3], outFlow[3], rhs[3]], 0);
|
|
constraint int_lin_eq([-1, 1, -1], [inFlow[4], outFlow[4], rhs[4]], 0);
|
|
constraint int_lin_eq([-1, 1, -1], [inFlow[5], outFlow[5], rhs[5]], 0);
|
|
constraint int_lin_eq([-1, 1, -1], [inFlow[6], outFlow[6], rhs[6]], 0);
|
|
constraint int_lin_eq([1, -1, -1], [inFlow[2], x[2], x[8]], 0);
|
|
constraint int_lin_eq([1, -1, -1], [inFlow[3], x[3], x[15]], 0);
|
|
constraint int_lin_eq([1, -1, -1], [inFlow[4], x[10], x[22]], 0);
|
|
constraint int_lin_eq([1, -1, -1], [outFlow[3], x[15], x[17]], 0);
|
|
constraint int_lin_eq([1, -1, -1], [outFlow[4], x[22], x[24]], 0);
|
|
constraint int_lin_eq([1, -1, -1], [outFlow[5], x[29], x[30]], 0);
|
|
constraint int_lin_eq([1, -1, -1, -1], [inFlow[5], x[11], x[17], x[29]], 0);
|
|
constraint int_lin_eq([1, -1, -1, -1], [inFlow[6], x[24], x[30], x[36]], 0);
|
|
constraint int_lin_eq([1, -1, -1, -1], [outFlow[1], x[1], x[2], x[3]], 0);
|
|
constraint int_lin_eq([1, -1, -1, -1], [outFlow[2], x[8], x[10], x[11]], 0);
|
|
constraint int_lin_eq([-1, 4, 3, 3, 2, 3, 2, 2], [INT____00001, x[2], x[3], x[10], x[11], x[17], x[24], x[30]], 0) :: defines_var(INT____00001);
|
|
solve minimize INT____00001;
|