\section{Implementacja modelu} \begin{lstlisting}[caption= plik mod] # 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; \end{lstlisting} \begin{lstlisting}[caption= plik dat] data; set Z := z; set S := s1, s2; set S1 := s1; set S2 := s2; set G1 := g1; set P := p1, p2; set P2 := p2; set O2 := o2; set D := d1, d2; set W := w1, w2; set N := z, s1, s2, g1, p1, p2, o2, d1, d2, w1, w2; set Nz := s1, s2, g1, p1, p2, o2, d1, d2, w1, w2; set Nw := z, s1, s2, g1, p1, p2, o2, d1, d2; set Nzw := s1, s2, g1, p1, p2, o2, d1, d2; param r := w1 467 w2 480; param u := z z 0 z s1 12000 z s2 8000 z g1 0 z p1 0 z p2 0 z o2 0 z d1 0 z d2 0 z w1 0 z w2 0 s1 z 0 s1 s1 0 s1 s2 0 s1 g1 99999 s1 p1 0 s1 p2 0 s1 o2 0 s1 d1 0 s1 d2 0 s1 w1 0 s1 w2 0 s2 z 0 s2 s1 0 s2 s2 0 s2 g1 0 s2 p1 0 s2 p2 99999 s2 o2 99999 s2 d1 0 s2 d2 0 s2 w1 0 s2 w2 0 g1 z 0 g1 s1 0 g1 s2 0 g1 g1 0 g1 p1 99999 g1 p2 0 g1 o2 0 g1 d1 0 g1 d2 0 g1 w1 0 g1 w2 0 p1 z 0 p1 s1 0 p1 s2 0 p1 g1 0 p1 p1 0 p1 p2 0 p1 o2 0 p1 d1 99999 p1 d2 99999 p1 w1 0 p1 w2 0 p2 z 0 p2 s1 0 p2 s2 0 p2 g1 0 p2 p1 0 p2 p2 0 p2 o2 0 p2 d1 99999 p2 d2 99999 p2 w1 0 p2 w2 0 o2 z 0 o2 s1 0 o2 s2 0 o2 g1 0 o2 p1 0 o2 p2 0 o2 o2 0 o2 d1 0 o2 d2 0 o2 w1 0 o2 w2 99999 d1 z 0 d1 s1 0 d1 s2 0 d1 g1 0 d1 p1 0 d1 p2 0 d1 o2 0 d1 d1 0 d1 d2 0 d1 w1 99999 d1 w2 0 d2 z 0 d2 s1 0 d2 s2 0 d2 g1 0 d2 p1 0 d2 p2 0 d2 o2 0 d2 d1 0 d2 d2 0 d2 w1 0 d2 w2 99999 w1 z 0 w1 s1 0 w1 s2 0 w1 g1 0 w1 p1 0 w1 p2 0 w1 o2 0 w1 d1 0 w1 d2 0 w1 w1 0 w1 w2 0 w2 z 0 w2 s1 0 w2 s2 0 w2 g1 0 w2 p1 0 w2 p2 0 w2 o2 0 w2 d1 0 w2 d2 0 w2 w1 0 w2 w2 0; param m := p1 d1 0.1 p1 d2 0.9 p2 d1 0.1 p2 d2 0.9; end; \end{lstlisting}