max_flow_taha.fzn 2.65 KB
Newer Older
Valentin Platzgummer's avatar
Valentin Platzgummer committed
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
array [1..25] of int: c = [0, 20, 30, 10, 0, 0, 0, 40, 0, 30, 0, 0, 0, 10, 20, 0, 0, 5, 0, 20, 0, 0, 0, 0, 0];
var int: INT____00001 :: is_defined_var :: var_is_introduced;
array [1..5] of var int: inFlow;
array [1..5] of var int: outFlow;
var int: total :: output_var = INT____00001;
array [1..25] of var int: x :: output_array([1..5, 1..5]);
constraint int_eq(inFlow[1], 0);
constraint int_eq(outFlow[5], 0);
constraint int_le(0, x[1]);
constraint int_le(0, x[2]);
constraint int_le(0, x[3]);
constraint int_le(0, x[4]);
constraint int_le(0, x[5]);
constraint int_le(0, x[6]);
constraint int_le(0, x[7]);
constraint int_le(0, x[8]);
constraint int_le(0, x[9]);
constraint int_le(0, x[10]);
constraint int_le(0, x[11]);
constraint int_le(0, x[12]);
constraint int_le(0, x[13]);
constraint int_le(0, x[14]);
constraint int_le(0, x[15]);
constraint int_le(0, x[16]);
constraint int_le(0, x[17]);
constraint int_le(0, x[18]);
constraint int_le(0, x[19]);
constraint int_le(0, x[20]);
constraint int_le(0, x[21]);
constraint int_le(0, x[22]);
constraint int_le(0, x[23]);
constraint int_le(0, x[24]);
constraint int_le(0, x[25]);
constraint int_le(x[1], 0);
constraint int_le(x[2], 20);
constraint int_le(x[3], 30);
constraint int_le(x[4], 10);
constraint int_le(x[5], 0);
constraint int_le(x[6], 0);
constraint int_le(x[7], 0);
constraint int_le(x[8], 40);
constraint int_le(x[9], 0);
constraint int_le(x[10], 30);
constraint int_le(x[11], 0);
constraint int_le(x[12], 0);
constraint int_le(x[13], 0);
constraint int_le(x[14], 10);
constraint int_le(x[15], 20);
constraint int_le(x[16], 0);
constraint int_le(x[17], 0);
constraint int_le(x[18], 5);
constraint int_le(x[19], 0);
constraint int_le(x[20], 20);
constraint int_le(x[21], 0);
constraint int_le(x[22], 0);
constraint int_le(x[23], 0);
constraint int_le(x[24], 0);
constraint int_le(x[25], 0);
constraint int_lin_eq([-1, 1], [inFlow[2], outFlow[2]], 0);
constraint int_lin_eq([-1, 1], [inFlow[3], outFlow[3]], 0);
constraint int_lin_eq([-1, 1], [inFlow[4], outFlow[4]], 0);
constraint int_lin_eq([1, -1], [inFlow[2], x[2]], 0);
constraint int_lin_eq([1, -1, -1], [inFlow[4], x[4], x[14]], 0);
constraint int_lin_eq([1, -1, -1], [outFlow[2], x[8], x[10]], 0);
constraint int_lin_eq([1, -1, -1], [outFlow[3], x[14], x[15]], 0);
constraint int_lin_eq([1, -1, -1], [outFlow[4], x[18], x[20]], 0);
constraint int_lin_eq([-1, 1, 1, 1], [INT____00001, x[2], x[3], x[4]], 0) :: defines_var(INT____00001);
constraint int_lin_eq([1, -1, -1, -1], [inFlow[3], x[3], x[8], x[18]], 0);
constraint int_lin_eq([1, -1, -1, -1], [inFlow[5], x[10], x[15], x[20]], 0);
constraint int_lin_eq([1, -1, -1, -1], [outFlow[1], x[2], x[3], x[4]], 0);
solve maximize INT____00001;