Wykład z modelowania matematycznego. Zagadnienie transportowe.
Transkrypt
Wykład z modelowania matematycznego. Zagadnienie transportowe.
Wykład z modelowania matematycznego. Zagadnienie transportowe. 1 Zagadnienie transportowe zostało sformułowane w 1941 przez F.L.Hitchcocka. Metoda rozwiązania tego zagadnienia zwana algorytmem transportowymópracowana została przez G.B.Dantziga i jest , szczególnym przypadkiem algorytmu sympleks. Pierwotnie zagadnienie transportowe było rzeczywiście stosowane do rozwiązywania problemów związanych z transportem, później okazało się, że stosuje się do wielu innych zagadnień praktycznych. Najbardziej znane warianty zagadnienia transportowego to: 1. zagadnienie transportowe (zamknięte i otwarte) 2. zagadnienie transportowo-produkcyjne 3. zagadnienie lokalizacji produkcji 4. zagadnienie minimalizacji pustych przebiegów Pewien produkt dostarczany jest przez m dostawców do n odbiorców. Znane są liczby ai , i ∈ N1,m oznaczające ilość produktu jaką może dostarczyć i-ty dostawca, bj , j ∈ N1,n oznaczające ilość produktu jaką powinien otrzymać j-ty odbiorca oraz cij , i ∈ N1,m , j ∈ N1,n oznaczające koszt transportu jednostki produktu od i-tego dostawcy do j-tego odbiorcy. Zatem C = [cij ] ∈ Mm,n . Macierz C nazywana jest macierzą jednostkowych kosztów transportu. Niech xij , i ∈ N1,m , j ∈ N1,n oznacza ilość produktu jaka ma być przewieziona od i-tego dostawcy do j-tego odbiorcy. Zatem X = [xij ] ∈ Mm,n . Macierz X jest macierzą zmiennych decyzyjnych. Zadanie. Opracować plan przewozu produktu, tak aby łączny koszt transportu był jak najmniejszy. 1 Zagadnienie transportowe zamknięte Przyjmijmy dodatkowe założenie, że m X ai = i=1 n X bj . j=1 Warunek ten oznacza, że podaż i popyt się równoważą. Innymi słowy cały zgromadzony towar zostanie wywieziony do odbiorców. Mówimy wtedy, że zadanie jest zamknięte lub zbilansowane. Przy powyższych oznaczeniach i założeniach zagadnienie transportowe zamknięte przyjmuje postać: zminimalizować funkcjonał m X n X cij xij , (1) i=1 j=1 przy warunkach n X xij = ai (i = 1, . . . , m), (2) xij = bj (j = 1, . . . , n), (3) j=1 m X i=1 xij 0 (i = 1, . . . , m ; j = 1, . . . , n). (4) Warunki (2) nazywamy ograniczeniami dla dostawców, a warunki (3) - ograniczeniami dla odbiorców. Funkcjonał (1) nazywamy funkcją kosztu. 2 2 Zagadnienie transportowe otwarte Przyjmijmy teraz założenie, że m X ai > i=1 n X bj . j=1 Mówimy wtedy, że zadanie jest otwarte lub niezbilansowane. Założenie oznacza, że nie cały towar zostanie rozwieziony do odbiorców. Przy powyższych oznaczeniach i założeniach zagadnienie transportowe otwarte przyjmuje postać: zminimalizować funkcjonał m X n X cij xij , (5) i=1 j=1 przy warunkach n X xij ¬ ai (i = 1, . . . , m), (6) xij = bj (j = 1, . . . , n), (7) j=1 m X i=1 xij 0 (i = 1, . . . , m ; j = 1, . . . , n). (8) Zagadnienie transportowe otwarte sprowadzamy do zagadnienia zamkniętego wprowadzając zmienne dodatkowe xin+1 , i = 1, . . . , m interpretowane jako ilości towaru odebranego przez fikcyjnego odbiorcę, faktycznie zaś nie odebranego przez nikogo. Przyjmujemy, że dla każdego i = 1, . . . , m zachodzi n xi,n+1 = ai − X xij . j=1 Ostatecznie otrzymujemy zagadnienie postaci: m n+1 X X cij xij , (9) i=1 j=1 przy warunkach n+1 X xij = ai (i = 1, . . . , m), (10) (j = 1, . . . , n + 1), (11) j=1 m X xij = bj i=1 xij 0 (i = 1, . . . , m ; j = 1, . . . , n + 1). 3 (12) Zagadnienie transportowe a problem programowania liniowego Macierze problemu PL zapiszmy wykorzystując wielkości występujące w zagadnieniu transportowym: h x = x11 . . . x1n x21 . . . h c = c11 . . . c1n c21 . . . 3 iT x2n . . . xm1 . . . xmn c2n . . . cm1 . . . cmn , i , (13) (14) h b = a1 . . . 1 0 . 0 A= 1 0 . 0 1 0 . 0 0 1 . 0 ... 1 0 ... 0 1 . . . . . ... 0 0 ... 0 1 ... 0 0 . . . . . ... 1 0 am b1 . . . 0 1 . 0 ... ... . . ... 0 1 . 0 ... ... . . ... bn iT , 0 ... 0 1 ... 0 . . . . . . 0 ... 1 0 ... 1 0 ... 0 . . . . . . 1 ... 0 (15) 0 0 . 1 ... ... . . ... 0 0 . 1 . . . 0 . . . 0 . . . 0 1 . 0 ... (16) 1 Zatem x ∈ Mmn,1 , c ∈ M1,mn , b ∈ Mm+n,1 , A ∈ Mm+n,mn . Zauważmy, że cx = m X n X cij xij i=1 j=1 oznacza wartość funkcji kosztu. Z kolei równanie macierzowe Ax = b generuje m + n równań skalarnych postaci: x11 + . . . + x1n = a1 ... xm1 + . . . + xmn = am (17) x11 + . . . + xm1 = b1 ... x1n + . . . + xmn = bn . (18) oraz Oznacza to, że zagadnienie transportowe można sprowadzić do problemu programowania liniowego. Na podstawie informacji dotyczących tego problemu wiadomo, że do jego rozwiązania można użyć algorytmu sympleks. Zachowują ważność wszystkie teoretyczne faktu leżące u podstaw tego algorytmu. Warto zwrócić uwagę na fakt, że nawet niezbyt rozbudowany problem transportowy prowadzi do dużych macierzy występujących w algorytmie sympleks. I tak na przykład, jeśli jest 3 odbiorców i 4 dostawców, to macierz A ma wymiar 7 × 12. Co za tym idzie wielościany wypukłe (sympleksy) mają bardzo dużą ilość wierzchołków. Opracowano więc na podstawie algorytmu sympleks bardzo efektywny algorytm rozwiązywania zagadnień transportowych, zwany algorytmem transportowym. Zauważmy ponadto, że sumując równania (17)-(18) otrzymamy, przy wykorzystaniu Pn P założenia m j=1 bj , tożsamość 0 = 0. Oznacza to, że rząd macierzy A nie przekracza i=1 ai = n + m − 1. Mozna wykazać, że jest dokładnie równy tej liczbie. 4 Algorytm transportowy Przed podaniem dokładnego algorytmu transportowego potrzebne będą pewne pojęcia pomocnicze. 4 Niech dana będzie macierz M ∈ Mmn . Parę (i, j), i ∈ N1,m , j ∈ N1,n nazywamy węzłem. Dowolny wiersz lub dowolną kolumnę macierzy M nazywamy linią. Cyklem nazywamy niepusty zbiór węzłów taki, że w każdej linii znajduje się 0 lub 2 węzły tego zbioru. Przykład. Niech M ∈ M34 . Przykładowymi cyklami w tej macierzy są zbiory: {(1, 1), (1, 2), (2, 1), (2, 2)} oraz {(1, 1), (1, 3), (2, 3), (2, 4), (3, 4), (3, 1)}. Półcyklem danego cyklu nazywamy podzbiór węzłów cyklu składający się z połowy węzłów tego cyklu taki, że w każdej linii znajduje się co najwyżej jeden węzeł tego podzbioru. Każdy cykl Γ można podzielić na dwa półcykle Γ1 i Γ2 w ten sposób, że dowolny jeden węzeł zaliczamy do Γ1 a następny węzeł cyklu Γ znajdujący się w tej samej linii co węzeł zaliczony do Γ1 zaliczamy do Γ2 . Procedurę powtarzamy do wyczerpania nieprzypisanych węzłów. Przykład. Dla M ∈ M34 i cyklu {(1, 1), (1, 3), (2, 3), (2, 4), (3, 4), (3, 1)} mamy dwa półcykle: {(1, 1), (2, 3), (3, 4)} oraz {(1, 3), (2, 4), (3, 1)}. Rolę wskaźnika optymalności w algorytmie transportowym pełni zerowa macierz równoważna macierzy kosztów c. Zerową macierzą równoważną macierzy kosztów c względem zbioru bazowego B nazywamy macierz cB = [(cB )ij ] określoną wzorami (cB )ij = cij + ui + vj (cB )ij = cij + ui + vj = 0 (i = 1, . . . , m ; j = 1, . . . , n + 1) dla (i, j) ∈ B , gdzie u1 , . . . , um , v1 , . . . , vn oznaczają odpowiednie stałe. Schemat algorytmu transportowego 1. Wyznaczamy zbiór bazowy B oraz początkowe rozwiązanie dopuszczalne X[B]. 2. Wyznaczamy zerową macierz cB = [(cB )ij ] równoważną macierzy kosztów c względem zbioru bazowego B: • dla jednej z niewiadomych u1 , . . . , um , v1 , . . . , vn przyjmujemy dowolną wartość (np 0), • pozostałe niewiadome wyznaczamy z układu równań cij + ui + vj = 0 dla (i, j) ∈ B , • wyznaczamy (cB )ij = cij + ui + vj (i = 1, . . . , m ; j = 1, . . . , n + 1). 3. Jeśli cB 0, to rozwiązanie X[B] jest optymalne. → koniec działania algorytmu! 4. Wyznaczamy nowy zbiór bazowy i odpowiadające mu rozwiązanie dopuszczalne: • wyznaczamy węzeł (k, l) spełniający kryterium wejścia (cB )kl = min{(cB )ij : (i, j) ∈ B} , • znajdujemy cykl Γ zawarty w zbiorze B ∪ {(k, l)} i dzielimy go na dwa półcykle Γ1 i Γ2 , zaliczając (k, l) do Γ1 , • wyznaczamy węzeł (p, q) półcyklu Γ2 spełniający kryterium wyjścia x[B]pq = min{x[B]ij : (i, j) ∈ Γ2 } , 5 • tworzymy zbiór B 0 = (B \ {(p, q)}) ∪ {(k, l)} , • wyznaczamy x[B 0 ] ze wzoru 0 x[B ]ij = x[B]ij + x[B]pq x[B]ij − x[B]pq x[B]ij dla (ij) ∈ Γ1 dla (ij) ∈ Γ2 dla (ij) ∈ /Γ. 5. Przechodzimy do punktu 2. Uwaga. Do wyznaczenia rozwiązania początkowego można zastosować jedną z metod: 1. metoda kąta północno-zachodniego, 2. metoda elementu minimalnego macierzy. W obu metodach wybieramy do bazy B węzły (i, j) i przypisujemy elementom xij macierzy X maksymalną dopuszczalną, dodatnią ilość transportowanego produktu, tak by przy tym spełnione były ograniczenia zarówno dla dostawców jak i odbiorców. W metodzie kąta północno-zachodniego wybieramy węzeł o najmniejszych indeksach i oraz j. W metodzie elementu minimalnego macierzy wybieramy węzeł (i, j), dla którego koszt transportu jest najmniejszy. Uwaga. Przypomnijmy, że w niezdegenerowanym problemie programowania liniowego metoda sympleks kończy się w skończonej liczbie iteracji. Zatem to samo dotyczy algorytmu transportowego. Mówimy, że zagadnienie transportowe jest niezdegenerowane, jeśli każde jego bazowe rozwiązanie dopuszczalne jest niezdegenerowane, tzn. x[B]ij > 0 dla każdego (i, j) ∈ B. 5 Przykłady zastosowań algorytmu transportowego Zadanie 1 Trzy magazyny M1 , M2 , M3 zaopatrują w mąkę cztery piekarnie P1 , P2 , P3 , P4 . Koszty transportu (w zł za tonę) aij oraz ilość oferowanej mąki przez poszczególne magazyny Ai i zapotrzebowanie poszczególnych piekarń Bj podaje tabela: Magazyny M1 M2 M3 Bj P1 50 40 60 40 Piekarnie P2 P3 40 50 80 70 40 70 60 50 P4 20 30 80 50 Ai 70 50 80 200 Opracować plan przewozu mąki z magazynów do piekarń, tak aby łączny koszt transportu był jak najmniejszy. Rozwiązanie 3 X i=1 Ai = 4 X Bj ⇒ zagadnienie transportowe zamknięte j=1 zmienne decyzyjne xij - ilość ton mąki, którą trzeba przewieźć z i-tego magazynu do j-tej piekarni ograniczenia dla dostawców: x11 + x12 + x13 + x14 = 70 x21 + x22 + x23 + x24 = 50 x31 + x32 + x33 + x34 = 80 6 ograniczenia dla odbiorców: x11 + x21 + x31 x12 + x22 + x32 x13 + x23 + x33 x14 + x24 + x34 = 40 = 60 = 50 = 50 warunki brzegowe: xij 0 funkcja celu: K(xij ) = 3 X 4 X aij xij → min i=1 j=1 Wyznaczenie rozwiązania początkowego metodą kąta północno-zachodniego Magazyny M1 M2 M3 Bj P1 50 40 60 40 Piekarnie P2 P3 40 50 80 70 40 70 60 50 P4 20 30 80 50 Ai 70 50 80 200 Magazyny M1 M2 M3 Bj Piekarnie P1 P2 P3 P4 40 30 30 20 30 50 40 60 50 50 Ai 70 50 80 200 K(xij ) = 50 · 40 + 40 · 30 + 80 · 30 + 70 · 20 + 70 · 30 + 80 · 50 = 13100 Wyznaczenie rozwiązania początkowego metodą elementu minimalnego macierzy Magazyny M1 M2 M3 Bj P1 50 40 60 40 Piekarnie P2 P3 40 50 80 70 40 70 60 50 P4 20 30 80 50 Ai 70 50 80 200 Magazyny M1 M2 M3 Bj Piekarnie P1 P2 P3 P4 20 50 40 10 40 40 40 60 50 50 Ai 70 50 80 200 K(xij ) = 40 · 20 + 20 · 50 + 40 · 40 + 70 · 10 + 40 · 40 + 70 · 40 = 8500 Wyznaczenie rozwiązania optymalnego - algorytm transportowy I. Wyznaczamy zbiór bazowy B oraz początkowe rozwiązanie dopuszczalne X[B]: B = {(1, 2), (1, 4), (2, 1), (2, 3), (3, 2), (3, 3)} . 0 20 0 50 X[B] = 40 0 10 0 0 40 40 0 7 Wyznaczamy zerową macierz cB równoważną macierzy kosztów c względem zbioru bazowego B: Z układu równań 40 + u1 + v2 20 + u1 + v4 40 + u2 + v1 70 + u2 + v3 40 + u3 + v2 70 + u3 + v3 =0 =0 =0 =0 =0 =0 przyjmując u1 = 0, otrzymujemy u1 = 0 , u2 = 0 , u3 = 0 , v1 = −40 , v2 = −40 , v3 = −70 , v4 = −20 . Stąd 10 0 −20 0 10 c[B] = 0 40 0 20 0 0 60 . Ponieważ niespełniony jest warunek c[B] 0, więc rozwiązanie nie jest optymalne. Z kryterium wejścia do bazy wchodzi (k, l) = (1, 3) . W zbiorze B ∪ {(k, l)} tworzymy cykl Γ i półcykle Γ1 oraz Γ2 : Γ = {(1, 2), (1, 3), (3, 2), (3, 3)} , Γ1 = {(1, 3), (3, 2)} , Γ2 = {(1, 2), (3, 3)} . Ponieważ min{x[B]ij : (i, j) ∈ Γ2 } = 20 = x[B]12 więc z bazy wychodzi węzeł (p, q) = (1, 2) . II. Wyznaczamy nowy zbiór bazowy B 0 oraz początkowe rozwiązanie dopuszczalne X[B 0 ]: B 0 = {(1, 3), (1, 4), (2, 1), (2, 3), (3, 2), (3, 3)} . 0 0 20 50 40 0 10 0 X[B 0 ] = 0 60 20 0 Wyznaczamy zerową macierz c0B równoważną macierzy kosztów c względem zbioru bazowego B 0 : Z układu równań 50 + u1 + v3 20 + u1 + v4 40 + u2 + v1 70 + u2 + v3 40 + u3 + v2 70 + u3 + v3 8 =0 =0 =0 =0 =0 =0 przyjmując u1 = 0, otrzymujemy u1 = 0 , u2 = −20 , u3 = −20 , v1 = −20 , v2 = −20 , v3 = −50 , v4 = −20 . Stąd 30 20 0 0 0 c[B ] = 0 40 0 −10 20 0 0 40 . Ponieważ niespełniony jest warunek c[B 0 ] 0, więc rozwiązanie nie jest optymalne. Z kryterium wejścia do bazy wchodzi (k, l) = (2, 4) . W zbiorze B 0 ∪ {(k, l)} tworzymy cykl Γ i półcykle Γ1 oraz Γ2 : Γ = {(1, 3), (1, 4), (2, 3), (2, 4)} , Γ1 = {(2, 4), (1, 3)} , Γ2 = {(1, 4), (2, 3)} . Ponieważ min{x[B 0 ]ij : (i, j) ∈ Γ2 } = 10 = x[B 0 ]23 więc z bazy wychodzi węzeł (p, q) = (2, 3) . III. Wyznaczamy nowy zbiór bazowy B 0 oraz początkowe rozwiązanie dopuszczalne X[B 0 ]: B 0 = {(1, 3), (1, 4), (2, 1), (2, 4), (3, 2), (3, 3)} . 0 0 30 40 0 X[B ] = 40 0 0 10 0 60 20 0 Wyznaczamy zerową macierz c0B równoważną macierzy kosztów c względem zbioru bazowego B 0 : Z układu równań 50 + u1 + v3 20 + u1 + v4 40 + u2 + v1 30 + u2 + v4 40 + u3 + v2 70 + u3 + v3 =0 =0 =0 =0 =0 =0 przyjmując u1 = 0, otrzymujemy u1 = 0 , u2 = −10 , u3 = −20 , v1 = −20 , v2 = −20 , v3 = −50 , v4 = −20 . Stąd 30 20 0 0 0 c[B ] = 20 50 10 0 20 0 0 40 . Ponieważ spełniony jest warunek c[B 0 ] 0, więc rozwiązanie jest optymalne. 9 Magazyny M1 M2 M3 Bj P1 50 40 60 40 Piekarnie P2 P3 40 50 80 70 40 70 60 50 P4 20 30 80 50 Ai 70 50 80 200 Piekarnie P1 P2 P3 P4 30 40 40 10 60 20 40 60 50 50 Magazyny M1 M2 M3 Bj Ai 70 50 80 200 K(xij ) = 50 · 30 + 20 · 40 + 40 · 40 + 30 · 10 + 40 · 60 + 70 · 20 = 8000 Zadanie 2 Trzy magazyny M1 , M2 , M3 zaopatrują w mąkę cztery piekarnie P1 , P2 , P3 , P4 . Koszty transportu (w zł za tonę) aij oraz ilość oferowanej mąki przez poszczególne magazyny Ai i zapotrzebowanie poszczególnych piekarń Bj podaje tabela: Magazyny M1 M2 M3 Bj P1 50 40 60 40 Piekarnie P2 P3 40 50 80 70 40 70 60 50 P4 20 30 80 50 Ai 100 50 80 Przyjmijmy ponadto, że koszty magazynowania wynoszą odpowiednio dla poszczególnych magazynów: 5 zł, 5 zł , 6 zł za tonę. Opracować plan przewozu mąki z magazynów do piekarń, tak aby łączny koszt transportu był jak najmniejszy. Uwaga. Jest to modyfikacja zadania 1 polegająca na tym, że magazyn M1 posiada nie 70, a 100 ton mąki. Jest więc nadwyżka podaży w stosunku do popytu. Rozwiązanie 3 X Ai = 230 > i=1 4 X Bj = 200 ⇒ zagadnienie transportowe otwarte j=1 Ponieważ jest nadwyżka podaży w stosunku do popytu, to pewna ilość towaru zostanie w magazynie. W celu zrównoważenia zadania wprowadzamy fikcyjnego odbiorcę F . Fikcyjny odbiorca otrzyma nadwyżkę mąki, czyli 230 − 200 = 30 ton. Po wprowadzeniu dodatkowego odbiorcy zadanie staje się zamkniętym zagadnieniem transportowym. zmienne decyzyjne xij - ilość ton mąki, którą trzeba przewieźć z i-tego magazynu do j-tej piekarni dla j = 1, 2, 3, 4, a dla j = 5 ilość ton mąki, która zostanie w magazynie ograniczenia dla dostawców: x11 + x12 + x13 + x14 + x15 = 100 x21 + x22 + x23 + x24 + x25 = 50 x31 + x32 + x33 + x34 + x35 = 80 ograniczenia dla odbiorców: x11 + x21 + x31 x12 + x22 + x32 x13 + x23 + x33 x14 + x24 + x34 x15 + x25 + x35 10 = 40 = 60 = 50 = 50 = 30 warunki brzegowe: xij 0 funkcja celu: K(xij ) = 3 X 5 X aij xij → min i=1 j=1 Wyznaczenie rozwiązania metodą elementu minimalnego macierzy Magazyny M1 M2 M3 Bj P1 50 40 60 40 Piekarnie P2 P3 P4 40 50 20 80 70 30 40 70 80 60 50 50 F 5 5 6 30 Ai 100 50 80 230 Magazyny M1 M2 M3 Bj P1 40 40 Piekarnie P2 P3 P4 20 50 10 40 40 60 50 50 F 30 30 Ai 100 50 80 230 K(xij ) = 40 · 20 + 20 · 50 + 5 · 30 + 40 · 40 + 70 · 10 + 40 · 40 + 70 · 40 = 8650 Wyznaczenie rozwiązania optymalnego - algorytm transportowy Magazyny M1 M2 M3 Bj P1 50 40 60 40 Piekarnie P2 P3 P4 40 50 20 80 70 30 40 70 80 60 50 50 F 5 5 6 30 Ai 100 50 80 230 Magazyny M1 M2 M3 Bj P1 Piekarnie P2 P3 P4 50 50 40 40 60 60 50 50 F 10 20 30 Ai 100 50 80 230 K(xij ) = 50 · 50 + 20 · 50 + 40 · 40 + 5 · 10 + 40 · 60 + 6 · 20 = 7670 Koszty łączne 7670, w tym koszty transportu 7500 a koszty magazynowania 170. Zadanie 3 Trzy młyny M1 , M2 , M3 produkują mąkę i zaopatrują w nią cztery piekarnie P1 , P2 , P3 , P4 . Koszty transportu (w zł za tonę) aij oraz ilość oferowanej mąki przez poszczególne młyny Ai , koszty produkcji 1 tony mąki Ci oraz zapotrzebowanie poszczególnych piekarń Bj podaje tabela: Młyny M1 M2 M3 Bj P1 50 40 60 40 Piekarnie P2 P3 40 50 80 70 40 70 60 50 P4 20 30 80 50 Ai 100 50 80 Ci 680 660 700 Opracować optymalny plan produkcji i przewozu mąki z młynów do piekarń, tak aby łączny koszt był jak najmniejszy. Zakładamy, że nadwyżka produkcji mąki będzie zmagazynowana, a koszty magazynowania wynoszą odpowiednio dla poszczególnych młynów: 5 zł, 5 zł , 6 zł za tonę. Rozwiązanie Jest to przykład zagadnienia transportowo-produkcyjnego, czyli wariant P P zagadnienia transportowego otwartego ( 3i=1 Ai = 230 > 4j=1 Bj = 200). W celu zrównoważenia zadania wprowadzamy fikcyjnego odbiorcę F . Fikcyjny odbiorca otrzyma nadwyżkę mąki, czyli 30 ton. zmienne decyzyjne xij - wielkość produkcji i-tego młyna bądź dostarczona do j-tej piekarni dla j = 1, 2, 3, 4, bądź pozostawiona w magazynie dla j = 5 Zestawienie łącznych kosztów produkcji i transportu 11 Młyny M1 M2 M3 Bj Piekarnie P1 P2 P3 P4 F 730 720 730 700 685 700 740 730 690 665 760 740 770 780 706 40 60 50 50 30 Ai 100 50 80 230 ograniczenia dla producentów: x11 + x12 + x13 + x14 + x15 = 100 x21 + x22 + x23 + x24 + x25 = 50 x31 + x32 + x33 + x34 + x35 = 80 ograniczenia dla odbiorców: x11 + x21 + x31 x12 + x22 + x32 x13 + x23 + x33 x14 + x24 + x34 x15 + x25 + x35 = 40 = 60 = 50 = 50 = 30 warunki brzegowe: xij 0 funkcja celu: K(xij ) = 3 X 5 X aij xij → min i=1 j=1 Wyznaczenie rozwiązania optymalnego - algorytm transportowy Młyny M1 M2 M3 Bj P1 730 700 760 40 Piekarnie P2 P3 P4 720 730 700 740 730 690 740 770 780 60 50 50 F 685 665 706 30 Ai 100 50 80 230 Młyny M1 M2 M3 Bj P1 Piekarnie P2 P3 P4 50 50 40 40 60 60 50 50 F 10 20 30 Ai 100 50 80 230 K(xij ) = 730 · 50 + 700 · 50 + 700 · 40 + 665 · 10 + 740 · 60 + 706 · 20 = 164670 Zadanie 4 Projektowana jest budowa maksymalnie 3 zakładów mleczarskich mających zaopatrywać w masło cztery miejscowości: P , R, S, T . Zakłady mogą powstać w miejsowościach P , R, S. Koszty transportu (w zł za kg) aij oraz dzienne zdolności produkcyjne zakładów Ai , koszty produkcji Ci (w zł za kg) oraz zapotrzebowanie poszczególnych miast na masło Bj podaje tabela: Zakłady P R S Bj P 0 1 0,5 1000 Odbiorcy R S T 0,4 0,5 1 0 0,8 0,6 0,5 0 0,8 2000 1000 1000 12 Ai 3000 2000 2500 Ci 4 4,5 4,2 Opracować optymalny plan lokalizacji zakładów tak, aby łączny koszt produkcji i transportu był jak najmniejszy. Rozwiązanie Jest to przykład zagadnienia lokalizacji produkcji, czyli wariant zagadP P nienia transportowego otwartego ( 3i=1 Ai = 7500 > 4j=1 Bj = 5000). W celu zrównoważenia zadania wprowadzamy fikcyjnego odbiorcę F oznaczającego niewykorzystaną zdolność produkcyjną. Zatem łączne koszty produkcji i transportu dla tego odbiorcy wynoszą 0 zł. Fikcyjny odbiorca otrzyma nadwyżkę masła, czyli 2500 ton. zmienne decyzyjne xij - wielkość produkcji masła w i-tej miejscowości bądź dostarczona do j-tej miejscowości dla j = 1, 2, 3, 4, bądź niewykorzystana zdolność produkcyjna zakłądu w i-tej miejscowości dla j = 5 Zestawienie łącznych kosztów produkcji i transportu Zakłady P R S Bj Odbiorcy P R S T F 4 4,4 4,5 5 0 5,5 4,5 5,3 5,1 0 4,7 4,7 4,2 5 0 1000 2000 1000 1000 2500 Ai 3000 2000 2500 7500 ograniczenia dla producentów: x11 + x12 + x13 + x14 + x15 = 3000 x21 + x22 + x23 + x24 + x25 = 2000 x31 + x32 + x33 + x34 + x35 = 2500 ograniczenia dla odbiorców: x11 + x21 + x31 x12 + x22 + x32 x13 + x23 + x33 x14 + x24 + x34 x15 + x25 + x35 = 1000 = 2000 = 1000 = 1000 = 2500 warunki brzegowe: xij 0 funkcja celu: K(xij ) = 3 X 5 X aij xij → min i=1 j=1 Wyznaczenie rozwiązania metodą elementu minimalnego macierzy Zakłady P R S Bj P R 4 4,4 5,5 4,5 4,7 4,7 1000 2000 Odbiorcy S T F 4,5 5 0 5,3 5,1 0 4,2 5 0 1000 1000 2500 13 Ai 3000 2000 2500 7500 Zakłady P R S Bj P 500 Odbiorcy R S T F 2500 2000 500 1000 2000 1000 1000 1000 1000 2500 Ai 3000 2000 2500 7500 K(xij ) = 4 · 500 + 0 · 2500 + 4, 5 · 2000 + 4, 7 · 500 + 4, 2 · 1000 + 5 · 1000 = 22550 Zauważmy, że baza jest złożona z 6 elementów, podczas gdy rząd macierzy A wynosi 7. Oznacza to, że to rozwiązanie bazowe, a co za tym idzie całe zagadnienie, jest zdegenerowane. W tym przypadku algorytm transportowy nie jest skuteczny. Problem można ewentualne rozwiązać przy pomocy przetworzonej macierzy kosztów. Macierz kosztów przekształcamy tak, aby w każdej kolumnie i każdym wierszu było przynajmniej jedno zero. Uzyskamy taki efekt odejmując od elementów poszczególnych wierszy macierzy kosztów element najmniejszy danego wiersza, a następnie odejmując od poszczególnych kolumn tak uzyskanej macierzy zmodyfikowanej element najmniejszy danej kolumny. Jeśli uda się rozmieścić przewozy wyłącznie na trasach, którym odpowiadają zera w przetworzonej macierzy kosztów, to rozwiązanie jest optymalne. Wyznaczenie rozwiązania metodą elementu minimalnego macierzy przy wykorzystaniu przetworzonej macierzy kosztów Zakłady P R S Bj Zakłady P R S Bj Zakłady P R S Bj Odbiorcy S T F 4,5 5 0 5,3 5,1 0 4,2 5 0 1000 1000 2500 Odbiorcy P R S T F 0 0 0,3 0 0 1,5 0,1 1,1 0,1 0 0,7 0,3 0 0 0 1000 2000 1000 1000 2500 P R 4 4,4 5,5 4,5 4,7 4,7 1000 2000 P R 1000 2000 1000 2000 Odbiorcy S T 1000 1000 F 2000 1000 500 1000 2500 Ai 3000 2000 2500 7500 Ai 3000 2000 2500 7500 Ai 3000 2000 2500 7500 K(xij ) = 4 · 1000 + 4, 4 · 2000 + 0 · 2000 + 4, 2 · 1000 + 5 · 1000 + 0 · 500 = 22000 Uwaga Rozwiązanie zadania oznacza, że należy zakłady ulokować w miejscowościach P i S. Możliwości zakładu w P będą wykorzystane w pełni, zakład w S będzie miał pewną rezerwę możliwości produkcyjnych (500 kg). Zakład w R jest niepotrzebny. 14