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

43 lines
2.0 KiB
MiniZinc

array [1..5] of var 0..1: d;
var 0..5: heapch;
array [1..5] of var int: m :: output_array([1..5]);
array [1..5] of var 1..5: n = [5, 4, 3, 2, 1];
array [1..5] of var int: s :: output_array([1..5]);
array [1..4] of var int: w;
array [1..20] of var 0..1: x;
constraint int_le(0, m[1]);
constraint int_le(0, m[2]);
constraint int_le(0, m[3]);
constraint int_le(0, m[4]);
constraint int_le(0, m[5]);
constraint int_le(0, s[1]);
constraint int_le(0, s[2]);
constraint int_le(0, s[3]);
constraint int_le(0, s[4]);
constraint int_le(0, s[5]);
constraint int_le(0, w[1]);
constraint int_le(0, w[2]);
constraint int_le(0, w[3]);
constraint int_le(0, w[4]);
constraint int_lin_eq([-1, -1], [m[1], s[1]], -5);
constraint int_lin_eq([-1, -1], [m[2], s[2]], -4);
constraint int_lin_eq([-1, -1], [m[3], s[3]], -3);
constraint int_lin_eq([-1, -1], [m[4], s[4]], -2);
constraint int_lin_eq([-1, -1], [m[5], s[5]], -1);
constraint int_lin_eq([-1, 1, 2, 4, 8], [m[1], x[1], x[2], x[3], x[4]], 0);
constraint int_lin_eq([-1, 1, 2, 4, 8], [m[2], x[5], x[6], x[7], x[8]], 0);
constraint int_lin_eq([-1, 1, 2, 4, 8], [m[3], x[9], x[10], x[11], x[12]], 0);
constraint int_lin_eq([-1, 1, 2, 4, 8], [m[4], x[13], x[14], x[15], x[16]], 0);
constraint int_lin_eq([-1, 1, 2, 4, 8], [m[5], x[17], x[18], x[19], x[20]], 0);
constraint int_lin_eq([-2, 1, 1, 1, 1, 1], [w[1], x[1], x[5], x[9], x[13], x[17]], 0);
constraint int_lin_eq([-2, 1, 1, 1, 1, 1], [w[2], x[2], x[6], x[10], x[14], x[18]], 0);
constraint int_lin_eq([-2, 1, 1, 1, 1, 1], [w[3], x[3], x[7], x[11], x[15], x[19]], 0);
constraint int_lin_eq([-2, 1, 1, 1, 1, 1], [w[4], x[4], x[8], x[12], x[16], x[20]], 0);
constraint int_lin_eq([-1, 1, 1, 1, 1, 1], [heapch, d[1], d[2], d[3], d[4], d[5]], 0);
constraint int_lin_le([-8, 1], [d[1], s[1]], 0);
constraint int_lin_le([-8, 1], [d[2], s[2]], 0);
constraint int_lin_le([-8, 1], [d[3], s[3]], 0);
constraint int_lin_le([-8, 1], [d[4], s[4]], 0);
constraint int_lin_le([-8, 1], [d[5], s[5]], 0);
solve minimize heapch;