Files
ortools-clone/examples/flatzinc/marathon.fzn
2012-09-03 18:26:36 +00:00

31 lines
3.0 KiB
MiniZinc

array [1..36] of var 0..1: arrive :: output_array([1..6, 1..6]);
array [1..6] of var 1..6: place :: output_array([1..6]);
constraint int_eq(arrive[24], 0);
constraint int_lin_eq([1, 1], [arrive[1], arrive[2]], 1);
constraint int_lin_eq([1, 1], [arrive[4], arrive[10]], 0);
constraint int_lin_eq([1, 1], [arrive[8], arrive[9]], 0);
constraint int_lin_eq([1, 1, 1], [arrive[13], arrive[14], arrive[15]], 0);
constraint int_lin_eq([1, 1, 1], [arrive[34], arrive[35], arrive[36]], 0);
constraint int_lin_eq([1, 1, 1, 1], [arrive[25], arrive[26], arrive[27], arrive[28]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1], [arrive[1], arrive[2], arrive[3], arrive[4], arrive[5], arrive[6]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1], [arrive[1], arrive[7], arrive[13], arrive[19], arrive[25], arrive[31]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1], [arrive[2], arrive[8], arrive[14], arrive[20], arrive[26], arrive[32]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1], [arrive[3], arrive[9], arrive[15], arrive[21], arrive[27], arrive[33]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1], [arrive[4], arrive[10], arrive[16], arrive[22], arrive[28], arrive[34]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1], [arrive[5], arrive[6], arrive[11], arrive[12], arrive[35], arrive[36]], 0);
constraint int_lin_eq([1, 1, 1, 1, 1, 1], [arrive[5], arrive[11], arrive[17], arrive[23], arrive[29], arrive[35]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1], [arrive[6], arrive[12], arrive[18], arrive[24], arrive[30], arrive[36]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1], [arrive[7], arrive[8], arrive[9], arrive[10], arrive[11], arrive[12]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1], [arrive[13], arrive[14], arrive[15], arrive[16], arrive[17], arrive[18]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1], [arrive[13], arrive[14], arrive[15], arrive[19], arrive[20], arrive[21]], 0);
constraint int_lin_eq([1, 1, 1, 1, 1, 1], [arrive[19], arrive[20], arrive[21], arrive[22], arrive[23], arrive[24]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1], [arrive[25], arrive[26], arrive[27], arrive[28], arrive[29], arrive[30]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1], [arrive[31], arrive[32], arrive[33], arrive[34], arrive[35], arrive[36]], 1);
constraint int_lin_eq([-1, -2, -3, -4, -5, -6, 1], [arrive[1], arrive[2], arrive[3], arrive[4], arrive[5], arrive[6], place[1]], 0);
constraint int_lin_eq([-1, -2, -3, -4, -5, -6, 1], [arrive[7], arrive[8], arrive[9], arrive[10], arrive[11], arrive[12], place[2]], 0);
constraint int_lin_eq([-1, -2, -3, -4, -5, -6, 1], [arrive[13], arrive[14], arrive[15], arrive[16], arrive[17], arrive[18], place[3]], 0);
constraint int_lin_eq([-1, -2, -3, -4, -5, -6, 1], [arrive[19], arrive[20], arrive[21], arrive[22], arrive[23], arrive[24], place[4]], 0);
constraint int_lin_eq([-1, -2, -3, -4, -5, -6, 1], [arrive[25], arrive[26], arrive[27], arrive[28], arrive[29], arrive[30], place[5]], 0);
constraint int_lin_eq([-1, -2, -3, -4, -5, -6, 1], [arrive[31], arrive[32], arrive[33], arrive[34], arrive[35], arrive[36], place[6]], 0);
solve satisfy;