WUT_Computer_Science/NotProgramming/MOM/implementacja2.mod

72 lines
1.8 KiB
Modula-2

set Z;
set S; set S1; set S2;
set G1;
set H1;
set P; set P2;
set O2;
set D;
set W;
set N; set Nz; set Nw; set Nzw;
param r{w in W};
param u{i in N, j in N};
param m{p in P, d in D};
var f{i in N, j in N}, >= 0, integer; #a
var a1, >= 0, integer; #e
var a2, >= 0, integer; #f
var a3, >= 0, integer; #g
var a4, >= 0, integer; #h
var bp1, >= 0, integer;
var cp1, >= 0, <=337, integer; #m
var cp2, >= 0, integer;
var co2, >= 0, integer;
var e, >= 0, <=1, integer;
var l, >= 0, integer;
maximize Q: (sum {i in N, w in W} r[w] * f[i,w])
- 10 * (sum {z in Z, s1 in S1} f[z,s1]) - 9 * (sum {z in Z, s2 in S2} f[z,s2])
+ 3 * a1 + 2 * a2 - 2 * a3 - 4 * a4 - 1070 * cp1 - 730 * bp1
- 1500 * (cp2 + co2) - 2 * 200 * l - 43 * (sum {s2 in S2, o2 in O2} f[s2,o2]);
subject to
Ogr_a_c_d{i in N, j in N}:
f[i,j] <= u[i,j];
Ogr_b{k in Nzw}:
sum {i in Nz} f[k,i] = sum {j in Nw} f[j,k];
Ogr_i{z in Z, s1 in S1}:
a1 <= f[z,s1] - 2056;
Ogr_j{z in Z, s1 in S1}:
a2 <= f[z,s1] - 4834;
Ogr_k{z in Z, s2 in S2}:
a3 >= f[z,s2] - 1968;
Ogr_l{z in Z, s2 in S2}:
a4 >= f[z,s2] - 4417;
Ogr_n:
bp1 <= cp1;
Ogr_o{s1 in S1, g1 in G1}:
cp1 >= f[s1,g1] / 20;
Ogr_p{s1 in S1, h1 in H1}:
bp1 >= f[s1,h1] / 14;
Ogr_q{s2 in S2, p2 in P2}:
cp2 >= f[s2,p2] / 25;
Ogr_r:
sum {i in N, p in P} f[i,p] <= 13600;
Ogr_s{p in P, d in D}:
(sum {i in N} f[i,p]) * m[p,d] = f[p,d];
Ogr_t:
l >= (sum {i in N, p in P} f[i,p])/200;
Ogr_u{s2 in S2, o2 in O2}:
co2 >= f[s2,o2] / 25;
Ogr_v{s2 in S2, o2 in O2}:
f[s2,o2] <= 6000 * e;
Ogr_w{s2 in S2, o2 in O2}:
f[s2,o2] - 2000 * e >= 0;
Ogr_x{w in W}:
sum {i in N} f[i,w] >= 4250;
solve;
display {i in N, j in N: f[i,j] > 0}: f[i,j];
display: a1; display: a2; display: a3; display: a4; display: bp1;
display: cp1; display: cp2; display: co2; display:
e; display: l;