mirror of
https://github.com/kuhyx/WUT_Computer_Science.git
synced 2026-07-04 18:23:15 +02:00
115 lines
3.2 KiB
Modula-2
115 lines
3.2 KiB
Modula-2
# PARAMETRY
|
|
# Stan poczatkowy
|
|
set Z;
|
|
# Zakupione surowce, s1 i s2
|
|
set S; set S1; set S2;
|
|
# Surowiec S1 zaladowany do wagonow
|
|
set G1;
|
|
# Surowce w przygotowywalni
|
|
set P; set P1; set P2;
|
|
# Surowiec S2 w zakladzie obrobki cieplnej
|
|
set O2;
|
|
# Polprodukty
|
|
set D; set D1; set D2;
|
|
# Wyroby
|
|
set W; set W1; set W2;
|
|
# Stany surowcow, zakupione, wyroby, obrobka cieplna
|
|
set N; set Nz; set Nw; set Nzw;
|
|
|
|
# Cena sprzedazy wyrobu
|
|
param r{w in W};
|
|
# Przepustowosc przeplwyu z jednego stanu do drugiego
|
|
param u{i in N, j in N};
|
|
# Mnoznik definijujacy przepwy ze stanu surowiec
|
|
# w przygotowalni do stanu polprodukt
|
|
param m{p in P, d in D};
|
|
|
|
# ZMIENNE DECYZYJNE
|
|
# przeplyw pomiedzy stanem i a stanem j
|
|
var f{i in N, j in N}, >= 0, integer; # Ograniczenie 1
|
|
|
|
# Zmienne pomocnicze
|
|
# liczba zakupionego surowca S1 powyzej 2387 ton
|
|
var a1, >= 0, integer; # Ograniczenie 5
|
|
# liczba zakupionego surowca S1 powyzej 6659 ton
|
|
var a2, >= 0, integer; # Ograniczenie 6
|
|
# liczba zakupionego surowca S2 powyzej 2090 ton
|
|
var b1, >= 0, integer; # Ograniczenie 7
|
|
# liczba zakupionego surowca S2 powyzej 4349 ton
|
|
var b2, >= 0, integer; # Ograniczenie 8
|
|
# liczba wynajetych lokomotyw
|
|
var wl, >= 0, integer;
|
|
# liczba wagonow transportujacych surowiec S1 do przygotowalni
|
|
var cp1, >= 0, integer;
|
|
# liczba ciezarowek transportujacych surowiec S2 do przygotowalni
|
|
var ep2, >= 0, integer;
|
|
# liczba ciezarowek transportujacych surowiec S2
|
|
# do zakladu obrobki cieplnej
|
|
var eo2, >= 0, integer;
|
|
var e1, >= 0, <=1, integer;
|
|
var e2, >= 0, <=1, integer;
|
|
# Liczba pracownikow
|
|
var l, >= 0, integer;
|
|
|
|
maximize Q: (sum {i in N, w in W} r[w] * f[i,w])
|
|
- (19* (sum {z in Z, s1 in S1} f[z, s1] )
|
|
- 5*a1
|
|
- 4*a2
|
|
+ 11* sum {z in Z, s2 in S2} (f[z, s2])
|
|
+ 2*b1
|
|
+ 2*b2
|
|
+ 1290*cp1
|
|
+ 1500*ep2
|
|
+ 1500*eo2
|
|
+ 160*l
|
|
+ 10000*e1
|
|
+ 40000*e2);
|
|
|
|
# OGRANICZENIA
|
|
subject to
|
|
# Ogolne i Dostepne surowce
|
|
Ogr_1_3_4{i in N, j in N}:
|
|
f[i,j] <= u[i,j];
|
|
Ogr_2{k in Nzw}:
|
|
sum {i in Nz} f[k,i] = sum {j in Nw} f[j,k];
|
|
# Koszt zakupu surowcow
|
|
Ogr_9{z in Z, s1 in S1}:
|
|
a1 <= f[z,s1] - 2387;
|
|
Ogr_10{z in Z, s1 in S1}:
|
|
a2 <= f[z,s1] - 6659;
|
|
Ogr_11{z in Z, s2 in S2}:
|
|
b1 >= f[z,s2] - 2090;
|
|
Ogr_l2{z in Z, s2 in S2}:
|
|
b2 >= f[z,s2] - 4349;
|
|
# Transport surowca S1
|
|
Ogr_13{s1 in S1, g1 in G1}:
|
|
cp1 >= f[s1,g1] / 18;
|
|
# Transport surowca S2
|
|
Ogr_14{s2 in S2, p2 in P2}:
|
|
ep2 >= f[s2,p2] / 25;
|
|
# Praca przygotowalni
|
|
Ogr_15:
|
|
sum {i in N, p in P} f[i,p] <= 16000;
|
|
Ogr_16{p in P, d in D}:
|
|
(sum {i in N} f[i,p]) * m[p,d] = f[p,d];
|
|
# Koszt pracy przygotowalni
|
|
Ogr_17:
|
|
l >= (sum {i in N, p in P} f[i,p])/150;
|
|
# Transprot S2 do obrobki cieplnej
|
|
Ogr_18{s2 in S2, o2 in O2}:
|
|
eo2 >= f[s2,o2] / 25;
|
|
# Praca zakladu obrobki cieplnej
|
|
Ogr_19{s2 in S2, o2 in O2}:
|
|
f[s2,o2] <= 6000;
|
|
# Minimalna dostarczona ilosc wyrobow
|
|
Ogr_20{w in W}:
|
|
sum {i in N} f[i,w] >= 5000;
|
|
# Na jedna lokomotywe przypada co najwyzej 12 wagonow
|
|
Ogr_21:
|
|
12 * wl >= cp1;
|
|
|
|
solve;
|
|
display {i in N, j in N: f[i,j] > 0}: f[i,j];
|
|
display: a1; display: a2; display: b1; display: b2; display: wl;
|
|
display: cp1; display: ep2; display: eo2; display:
|
|
e1; display: l; |