Politechnika Poznańska Modele i narzędzia optymalizacji w systemach informatycznych zarządzania Joanna Józefowska POZNAŃ 1/11
Spis treści Rozdział 1. Zagadnienie transportowe................... 5 1.1. Zagadnienie transportowe........................ 5 1.1.1. Przykład.............................. 5 1.1.. Analiza sytuacji decyzyjnej................... 6 1.1.3. Model matematyczny....................... 6 1.1.4. Wyznaczanie rozwiązań początkowych............. 9 1.1.5. Algorytm transportowy..................... 13 1.1.6. Interpretacja rozwiązania.................... 15 1.. Problem przydziału............................ 15 1..1. Przykład.............................. 16 1... Analiza sytuacji decyzyjnej................... 16 1..3. Model matematyczny....................... 16 1..4. Algorytm węgierski........................ 16 1..5. Interpretacja rozwiązania.................... 18
Rozdział 1 Zagadnienie transportowe Istnieje duża grupa wyspecjalizowanych zagadnień programowania liniowego, które są sformułowane jako zagadnienia sieciowe. Należą do nich takie zagadnienia, jak zagadnienie transportowe i jego uogólnienia, zagadnienie przydziału, zagadnienie lokalizacji i zagadnienie przepływu wielotowarowego. 1.1. Zagadnienie transportowe Zagadnienie transportowe należy do najciekawszych wariantów zadania programowania liniowego. Zadanie transportowe charakteryzuje się szczególną postacią ograniczeń, co pozwala je rozwiązać za pomocą algorytmów sprawniejszych obliczeniowo niż algorytm sympleks. W tym rozdziale omówimy algorytm transportowy, tzw. metodę potencjałów oraz algorytm węgierski, który rozwiązuje zadania przydziału. 1.1.1. Przykład Firma produkująca nawozy sztuczne ma trzy zakłady produkcyjne zlokalizowane w Kluczborku, Białymstoku i Pile. Kwartalna produkcja poszczególnych zakładów wynosi odpowiednio: 5 kg, 6 kg, i 5 kg. Firma ma cztery centra dystrybucji, zlokalizowane w Lublinie, Elblągu, Łodzi i Opolu. Na podstawie przewidywanego popytu na nawozy poszczególne centra dystrybucji złożyły zamówienia odpowiednio na: 6 kg, 4 kg, kg oraz 15 kg nawozów. Jednostkowe koszty transportu (w zł/kg) z każdego zakładu do poszczególnych centrów dystrybucji podano w tablicy 1.1. Tablica 1.1. Jednostkowe koszty transportu [zł/kg Dostawcy Odbiorcy Lublin Elbląg Łódź Opole Zapas [kg Kluczbork 3 7 6 5 Białystok 7 5 3 6 Piła 5 4 5 5 Zamówienie [kg 6 4 15 Znaleźć plan przewozów minimalizujący łączne koszty transportu.
6 Rozdział 1. Zagadnienie transportowe ZAPAS ZAPOTRZEBOWANIE Lublin 6 3 5 Kluczbork 7 7 5 Elbląg 4 6 Białystok 6 5 4 Łódź 3 5 Piła 5 Opole 15 Rysunek 1.1. Graf kosztów transportu. 1.1.. Analiza sytuacji decyzyjnej Sytuację zilustrowano na Rys. 1.1.1. Węzły grafu w lewej kolumnie oznaczają dostawców, a w prawej odbiorców. Zaznaczono wielkości zapasów u poszczególnych dostawców i zamówień każdego z odbiorców. 1.1.3. Model matematyczny Wprowadźmy indeksy i {1,, 3} oraz j {1,, 3, 4} w celu oznaczenia odpowiednio dostawców i odbiorców. Niech a i oznacza zapas towaru u i-tego dostawcy, a b j zamówienie j-tego odbiorcy. Każdy łuk w grafie reprezentuje trasę (i, j) od i-tego dostawcy do j-tego odbiorcy. Etykieta c ij oznacza jednostkowy koszt transportu na danej trasie. Zadanie polega na ustaleniu wielkości przewozów x ij na trasie (i, j), i = 1,, 3, j = 1,, 3, 4. Macierz [x ij m n nazywa się macierzą przewozów. Łączne koszty transportu obliczymy jako: z = 3x 11 + x 1 + 7x 13 + 6x 14 + 7x 1 + 5x + x 3 + 3x 4 + x 31 + 5x 3 + 4x 33 + 5x 34
1.1. Zagadnienie transportowe 7 Ograniczenia wynikające z dostępności nawozów u poszczególnych dostawców mają postać: x 11 + x 1 + x 13 + x 14 5 x 1 + x + x 3 + x 4 6 x 31 + x 3 + x 33 + x 34 5 Ponieważ ze względu na minimalizację kosztów transportu dostarczanie odbiorcom więcej towaru niż zamówili jest nieuzasadnione, więc ograniczenia wynikające z zapotrzebowań odbiorców mają postać: x 11 +x 1 +x 31 = 6 x 1 +x +x 3 = 4 x 13 +x 3 +x 33 = x 14 +x 4 +x 34 = 5 Naturalnie x ij dla i = 1,..., m, j = 1,..., n. W ogólności, celem jest minimalizacja łącznego kosztu transportu (1.1), przy założeniu, że całkowita ilość nawozu pochodząca od i-tego dostawcy nie przekracza zapasu u tego dostawcy (1.), a całkowita ilość nawozu dostarczona do j-tego odbiorcy jest równa jego zamówieniu (1.3). Założenie o nieujemności zmiennych (1.4) jest naturalne. zminimalizować m n c ij x ij (1.1) i=1 j=1 n x ij a i, i = 1,..., m (1.) j=1 m x ij = b j, j = 1,..., n (1.3) i=1 x ij, i = 1,..., m, j = 1,..., n (1.4) Zadanie transportowe w postaci (1.1)-(1.4) nazywa się zwykłym zadaniem transportowym, aby odróżnić je od innych wariantów, o których powiemy w dalszej części tego rozdziału. Ograniczenia (1.) nazywamy warunkami bilansowymi dostawców, a ograniczenia (1.3) warunkami bilansowymi odbiorców. Zadanie (1.1)-(1.4) jest zadaniem programowania liniowego. Zauważmy, że macierz współczynników w ograniczeniach ma szczególną postać (1.5). A = C n Z n... Z n Z n C n... Z n............ Z n Z n... C n E n E n... E n (1.5) gdzie C n oraz Z n są n-elementowymi wektorami takimi, że c k = 1, k = 1,..., n, z k =, k = 1,..., n, a E n jest macierzą kwadratową o wymiarze n taką, że e kk = 1, e kl =, k l, k = 1,..., n, l = 1,..., n. Macierz ta ma (m + n) wierszy oraz (m n) kolumn. Twierdzenie 1.1
8 Rozdział 1. Zagadnienie transportowe Rząd macierzy A warunków ograniczających zadania transportowego jest równy (m + n 1). Ważnym wnioskiem z twierdzenia 1.1 jest fakt, że rozwiązanie bazowe zadania transportowego składa się dokładnie z (m + n 1) zmiennych bazowych, a zatem co najwyżej (m + n 1) zmiennych przyjmuje w rozwiązaniu optymalnym wartości niezerowe. Definicja 1.1 Zadanie transportowe nazywamy zbilansowanym jeżeli m n a i = b j (1.6) i=1 j=1 czyli gdy łączne zapotrzebowanie odbiorców jest równe sumie zapasów u dostawców. W przeciwnym razie zadanie jest niezbilansowane. Zadanie niezbilansowane można łatwo sprowadzić do postaci zbilansowanej dodając dodatkowego, fikcyjnego: dostawcę z zapasem a = ( n j=1 b j m i=1 a i ), gdy m i=1 a i < n j=1 b j, przyjmując c i =, j = 1,..., n lub odbiorcę z zapotrzebowaniem b = ( m i=1 a i n j=1 b j ), gdy m i=1 a i > nj=1 b j, przyjmując c j =, i = 1,..., m. Dostawy od dodatkowego dostawcy pozwalają zrealizować zamówienia odbiorców przekraczające możliwości dostawców. W praktyce pozyskanie dodatkowego dostawcy (zwłaszcza przy zerowych kosztach transportu) jest na ogól niemożliwe i dlatego konieczne jest zbilansowanie zadania np. przez zmniejszenie zapotrzebowań poszczególnych odbiorców. Dostawy do dodatkowego odbiorcy można potraktować jako zapasy u dostawców, które nie zostaną wykorzystane. Z punktu widzenia modelu matematycznego wprowadzenie dodatkowych dostawców lub odbiorców oznacza wprowadzenie dodatkowych zmiennych. Ponieważ formalnie możemy każde zadania transportowe sprowadzić do postaci zbilansowanej, będziemy zakładać, że zadanie (1.1)-(1.4) jest zbilansowane. Ograniczenia (1.) przyjmują wtedy postać równości (1.7). n x ij = a i, i = 1,..., m (1.7) j=1 Kolejną ważną własnością zadania transportowego, o której mówi twierdzenie 1. jest istnienie rozwiązań dopuszczalnych. Twierdzenie 1. Każde zbilansowane zadanie transportowe posiada skończone rozwiązanie optymalne. Zadanie transportowe ma jeszcze jedną ważną własność, którą sformułowano w twierdzeniu 1.3, związaną z istnieniem rozwiązań całkowitoliczbowych. Twierdzenie 1.3 Jeżeli wszystkie a i oraz b j w zadaniu transportowym (1.1)-(1.4) są liczbami
1.1. Zagadnienie transportowe 9 całkowitymi, to każde rozwiązanie (a więc również optymalne) jest utworzone z liczb całkowitych. Pozostaje nam zatem zająć się metodą wyznaczania tego rozwiązania. Pamiętamy, że zadanie transportowe jest szczególną postacią zadania programowania liniowego, z zatem można je rozwiązać metodą sympleks, ale w kolejnym punkcie poznamy znacznie sprawniejszy algorytm transportowy. 1.1.4. Wyznaczanie rozwiązań początkowych Znalezienie rozwiązania początkowego zbilansowanego zadania transportowego jest łatwe. Pokażemy trzy sposoby wyznaczania rozwiązań początkowych zadania transportowego: metodę północno-zachodniego narożnika, metodę najmniejszego elementu macierzy oraz metodę Vogel a zwaną też metodą VAM (Vogel Approximation Method). W każdej z tych metod wybieramy element macierzy i na trasie wskazanej przez ten element przesyłamy maksymalną dopuszczalną ilość towaru. Następnie usuwamy wiersz lub kolumnę w której popyt lub podaż zostały wyzerowane i wybieramy następny element. Postępujemy w ten sposób aż do wykreślenia wszystkich wierszy i kolumn. Metody różnią się jedynie regułą wyboru kolejnych elementów macierzy. Metoda północno-zachodniego narożnika W metodzie północno-zachodniego narożnika jako następny wybieramy element znajdujący się w pierwszym wierszu i pierwszej kolumnie zredukowanej macierzy. Przebieg obliczeń dla danych z tablicy 1.1 jest następujący. Wybieramy element a 11 macierzy kosztów i określamy maksymalną ilość nawozu, którą można przesłać tą trasą. Jest to minimum z wartości a 1 i b 1 (ogólnie a i i b j ), a więc 5. Przyjmujemy zatem x 11 = 5 oraz x 1 = x 13 = x 14 =, zmniejszamy ilość pozostałą do wysłania do pierwszego odbiorcy (6-5) i wykreślamy pierwszy wiersz z macierzy kosztów. Jako kolejny wybieramy element znajdujący się w pierwszym wierszu i pierwszej kolumnie tak zredukowanej macierzy, czyli a 1. Na tej trasie pozostaje do przesłania 1 kg nawozu, przyjmujemy zatem x 1 = 1, x 31 =, zmniejszamy zapas u drugiego dostawcy (6-1) i wykreślamy pierwszą kolumnę. Następnym elementem jest a. Na tej trasie przesyłamy 4 kg nawozu, x = 4, x 3 =. Kolejne kroki podsumowano w tablicy 1..
1 Rozdział 1. Zagadnienie transportowe Tablica 1.. Wyznaczenie rozwiązania początkowego metodą północno-zachodniego narożnika a ij ilość przesłana wartości zredukowana pozostała zmiennych macierz podaż x 11 = 5 [ [ x 7 5 3 a 11 min(5, 6) 1 = x 13 = 5 4 5 x 14 = pozostały popyt [1 4 15 a 1 min(5, 1) x 1 = 1 x 31 = [ 5 3 5 4 5 pozostały popyt [ 4 15 a min(5, 4) x = 4 x 3 = [ 3 4 5 pozostały popyt [ 15 a 3 min(1, ) x 3 = 1 x 4 = [4 5 pozostały popyt [ 1 15 a 33 min(1, 5) x 33 = 1 [5 pozostały popyt [ 15 a 34 min(15, 15) x 34 = 15 pozostały popyt [ [ [ [ [ 6 5 5 5 1 5 5 15 [ Metoda najmniejszego elementu macierzy W metodzie najmniejszego elementu macierzy jako następny wybieramy nieskreślony element o najmniejszej wartości, odpowiadający trasie o najniższym koszcie. W początkowej macierzy mamy trzy elementy o wartości, więc wybieramy dowolny z nich, niech to będzie element a 1. Przebieg obliczeń dla danych z tablicy 1.1 przedstawiono w tablicy 1.3.
1.1. Zagadnienie transportowe 11 Tablica 1.3. Wyznaczenie rozwiązania początkowego metodą najmniejszego elementu macierzy a ij ilość przesłana wartości zredukowana pozostała zmiennych macierz podaż x 1 = 4 [ 3 7 6 [ 1 a 1 min(5, 4) x = 7 3 6 x 3 = 4 5 5 pozostały popyt [6 15 x 31 = 5 [ [ 1 3 7 6 a 31 min(6, 5) x 33 = 6 7 3 x 34 = pozostały popyt [35 15 a 3 min(4, ) a 4 min(5, 15) x 3 = x 13 = [ 3 6 7 3 pozostały popyt [35 15 x 4 = 15 x 14 = [ 3 7 pozostały popyt [35 a 11 min(1, 35) x 11 = 1 [7 pozostały popyt [5 a 1 min(5, 5) x 1 = 5 pozostały popyt [ [ 1 4 [ 1 5 [ 5 [ Metoda VAM W metodzie VAM jako następny wybieramy element, którego pominięcie może spowodować znaczny wzrost kosztów w kolejnej iteracji. Jest ona nieco bardziej złożona niż poprzednie, ale otrzymane rozwiązanie jest zwykle bliskie optymalnemu. Aby wyznaczyć kolejny element macierzy najpierw wyznaczamy różnice r i, i = 1,..., m, między dwoma najmniejszymi elementami w każdym wierszu i różnice d j, j = 1,..., n, między dwoma najmniejszymi elementami w każdej kolumnie zredukowanej macierzy kosztów. Następnie znajdujemy r k = max i {r i } oraz d l = max j {d j }. Jeżeli r k > d l, to następnym elementem macierzy jest a kh, gdzie a kh = min j {a kj }, czyli najmniejszy element w wierszu k-tym. Jeżeli r k < d l, to następnym elementem macierzy jest a hl, gdzie a hl = min i {a il }, czyli najmniejszy element w kolumnie l-tej. Przebieg obliczeń dla danych z tablicy 1.1 przedstawiono w tablicy 1.4. Ponieważ redukcja macierzy przebiega identycznie jak w metodach omówionych powyżej, w tablicy przedstawiono wartości r i oraz d j oraz wartości elementów x ij macierzy przewozów wyznaczone w każdej iteracji. W końcowych iteracjach, gdy pozostały już tylko elementy w wierszu drugim, wybieramy elementy tego wiersza począwszy od najmniejszych wartości. Rozwiązanie otrzymane metodami najmniejszego elementu macierzy oraz VAM dały w tym przykładzie to samo rozwiązanie. Każde z otrzymanych rozwiązań jest dopuszczalne, ale nie koniecznie optymalne.
1 Rozdział 1. Zagadnienie transportowe Tablica 1.4. Wyznaczenie rozwiązania początkowego metodą VAM [r i [d j a ij wartości zmiennych [ 1 1 [ 3 1 [ 1 [ [ [ [1 3 a 1 = min{, 5, 5} [1 a 11 = min{3, 7, 6} [5 a 31 = min{7, } x 1 = 4 x = x 3 = x 11 = 1 x 13 = x 14 = x 31 = 5 x 33 = x 34 = a 3 = min{7,, 3} x 3 = a 4 = min{7, 3} x 4 = 15 a 1 = 7 x 1 = 5 Graf rozwiązania Rozwiązanie bazowe zadania transportowego będziemy przedstawiali w postaci grafu zbudowanego na macierzy przewozów, którego wierzchołkami są węzły (i, j) tej macierzy odpowiadające zmiennym bazowym, a łuki łączą sąsiednie wierzchołki w tym samym wierszu (i 1 = i ) lub kolumnie (j 1 = j ). Graf rozwiązania otrzymanego metodą VAM przedstawiono w tablicy 1.5. Tablica 1.5. Graf rozwiązania początkowego wyznaczonego metodą VAM 1 4 5 15 5 Korzystając z własności, że liczba zmiennych bazowych w rozwiązaniu dopuszczalnym wynosi (m + n 1) zauważmy, że graf rozwiązania ma dokładnie (m + n 1) wierzchołków. Ponadto jest to graf spójny i bez cykli. Można wykazać, że warunki te są równoważne, czyli zachodzi własność 1.1. Własność 1.1 Na to, aby graf rozwiązania zadania transportowego był grafem spójnym i bez cykli potrzeba i wystarcza, aby zawierał dokładnie (m + n 1) wierzchołków.
1.1. Zagadnienie transportowe 13 1.1.5. Algorytm transportowy Algorytm transportowy (nazywany też metodą potencjałów) jest metodą rozwiązywania zadania transportowego wykorzystującą własności macierzy przewozów oraz zadanie dualne do zadania transportowego. Jeżeli oznaczymy przez p i, i = 1,..., m, oraz q j, j = 1,... n, zmienne dualne związane z ograniczeniami odpowiednio (1.7) oraz (1.3), to zadanie dualne przyjmuje postać: zmaksymalizować m n a i p i + b j q j (1.8) i=1 j=1 przy ograniczeniach p i + q j c ij, i = 1,..., m, j = 1,..., n (1.9) Zmienne p i oraz q j są dowolne co do znaku. Z własności?? rozwiązań optymalnych zagadnienia dualnego wynika, że jeśli x ij jest zmienną bazową to odpowiednia zmienna uzupełniająca w ograniczeniu zadania dualnego przyjmuje wartość zero, a zatem spełniony jest następujący układ równań: p i + q j = c ij, (i, j) B (1.1) gdzie B oznacza bazę. Aby sprawdzić, czy jest to rozwiązanie optymalne należy wyznaczyć wartości z ij c ij. Zauważmy że wartości wskaźników z ij w zadaniu transportowym przyjmują wartości z ij = p i + q j, a zatem wartości z ij c ij odpowiadające elementom wiersza wskaźnikowego macierzy sympleks obliczamy jako p i +q j c ij. Jeżeli wszystkie wartości wiersza wskaźnikowego są mniejsze lub równe zeru, to rozwiązanie jest optymalne. Jest to równoważne warunkowi, aby wszystkie elementy przeciwne: c ij = c ij p i q j były nieujemne. Dla ułatwienia zapisu przyjmijmy zatem u i = p i oraz v j = q j i oznaczmy c ij = u i + v j + c ij (1.11) Macierz [c ij nazywamy równoważną macierzą zerową, a współczynniki u i, i = 1,..., m oraz v j, j = 1,..., n potencjałami. Jeżeli zmienna x ij jest zmienną bazową, to z równania (1.1) i definicji potencjałów wynika, że c ij =. Otrzymujemy układ (m + n 1) równań z (m + n) niewiadomymi. Jest to układ nieoznaczony, a zatem posiadający nieskończenie wiele rozwiązań. Można wykazać, że wszystkie rozwiązania tego układu wyznaczają tę samą równoważną macierz zerową, a zatem wystarczy znaleźć jedno, dowolne z tych rozwiązań. Dla ułatwienia zwykle przyjmuje się, że u 1 = i wtedy kolejne wartości potencjałów można łatwo wyznaczyć przez podstawienie. Znając wartości potencjałów równie łatwo wyznaczamy pozostałe wartości zerowej macierzy równoważnej. Macierz zerową rozwiązania początkowego otrzymanego metodą VAM przedstawiono w tablicy 1.6. Dla każdej pary (i, j) (odpowiadającej zmiennej decyzyjnej x ij ) w tablicy umieszczono trzy wartości. Liczba w górnym wierszu to wartość zmiennej decyzyjnej (wartość z macierzy przewozów), w prawym dolnym narożniku znajduje się wartość z macierzy kosztów c ij, a w lewym dolnym narożniku obliczona wartość zerowej macierzy równoważnej c ij. Rozwiązanie nie jest optymalne, gdyż wartość c <. Dalsze postępowanie polega na zmianie bazy przez usunięcie z grafu wierzchołka odpowia-
14 Rozdział 1. Zagadnienie transportowe Tablica 1.6. Rozwiązanie początkowe wyznaczone metodą VAM j i 1 3 4 u i 1 1 4 3 9 7 7 6 5 15 7 1 5 3 4 3 5 4 5 7 4 7 5 1 v j 3 1 dającego najmniejszej wartości zerowej macierzy równoważnej i wyznaczenie nowego wierzchołka w grafie rozwiązania. Sposób postępowania opisuje poniższy Algorytm transportowy. Algorytm transportowy Krok 1. Znaleźć wstępne rozwiązanie bazowe zadania zbilansowanego. Krok. Rozwiązać układ równań: c ij + u i + v j = dla i, j B Krok 3. Wyznaczyć równoważną macierz zerową c ij. Krok 4. Zbadać, czy c ij dla i = 1,..., m, j = 1,..., n. Jeśli tak, to aktualne rozwiązanie jest optymalne - zakończ. Krok 5. Wprowadzić do bazy zmienną x kl taką, że c kl = min{c ij : c ij < }. Krok 6. Wyznaczyć cykl γ + (k, l) oraz γ (k, l). Krok 7. Usunąć z bazy zmienną x rs taką, że x rs = min (i,j) γ {x ij : (i, j) B} = θ Krok 8. Wyznaczyć nowe rozwiązanie bazowe: x ij θ dla (i, j) γ x ij = x ij dla (i, j) (γ γ + ) (1.1) x ij + θ dla (i, j) γ + Krok 9. Wrócić do kroku. Zmienna x wejdzie do bazy, co spowoduje powstanie cyklu γ w grafie rozwiązania. W rozwiązywanym przykładzie cykl wyznaczają wierzchołki (1, 1), (1, ), (, 1) i (, ). W cyklu wyznaczamy wierzchołki nieparzyste, które oznaczone znakiem + tworzą zbiór γ + oraz parzyste, które oznaczone znakiem tworzą zbiór γ. Nową zmienną bazową traktujemy jako początek cyklu i oznaczamy znakiem +. Następnie poruszamy się wzdłuż cyklu, oznaczając kolejne wierzchołki na zmianę znakiem i +. Spośród zmiennych ze zbioru γ wybieramy zmienną o najmniejszej wartości θ i tę wartość odejmujemy od wszystkich zmiennych ze zbioru γ, a dodajemy ją do zmiennych ze zbioru γ +. Graf rozwiązania z zaznaczonym cyklem przedstawiono na rys 1.7. Zmienna, która przyjmuje wartość zero jest usuwana z bazy. Jeżeli graf rozwiązania zawiera mniej niż (n + m 1) wierzchołków, to mamy do czynienia z rozwiązaniem zdegenerowanym, w którym co najmniej jedna zmienna bazowa jest równa zero. Postępowanie w takim przypadku polega na dołączeniu brakującej liczby zmiennych bazowych z wartościami zerowymi. Wybór zmiennych powinien gwarantować uzyskanie grafu spójnego i bez cykli. Dla nowej bazy wyznaczamy równoważną macierz zerową. Otrzymaną macierz przedstawia tablica 1.8. Jak widać jest to rozwiązanie optymalne, gdyż wszystkie elementy tej macierzy są nieujemne.
1.. Problem przydziału 15 Tablica 1.7. Zmiana bazy w grafie rozwiązania + 1 35 4 15 5 + 5 15 5 Tablica 1.8. Macierz zerowa rozwiązania optymalnego j i 1 3 4 u i 1 35 15 3 8 7 6 6 5 15 1 7 5 3 3 3 5 4 5 6 4 6 5 1 v j 3 1 1.1.6. Interpretacja rozwiązania Rozwiązanie optymalne wyznacza plan przewozów przedstawiony w tablicy 1.9, dla którego całkowity koszt transportu wynosi 395 zł. Tablica 1.9. Optymalny plan przewozów Koszt Przesłana ilość Koszt Zmienna Dostawca Odbiorca jednostkowy nawozu na trasie [zł/kg [kg [zł x 11 Kluczbork Lublin 3 35 15 x 1 Kluczbork Elbląg 15 3 x Białystok Elbląg 5 5 15 x 3 Białystok Łódź 4 x 4 Białystok Opole 3 15 45 x 31 Piła Lublin 5 5 Suma kosztów 395 1.. Problem przydziału Z punktu widzenia modelu matematycznego problem przydziału jest szczególnym przypadkiem zadania transportowego, w którym a i = b j = 1, i = 1,..., m, j = 1,..., n. Z twierdzenia 1.3 wynika, że dla m = n problem przydziału ma zawsze rozwiązanie całkowitoliczbowe. Między innymi dzięki tej własności problem przydziału znajduje liczne zastosowania praktyczne.
16 Rozdział 1. Zagadnienie transportowe 1..1. Przykład Firma turystyczna dysponuje czterema autobusami o różnych kosztach eksploatacji. Firma podpisała umowy na wynajęcie autobusów czterem różnym klientom na długi weekend. Koszty realizacji poszczególnych zleceń dla każdego autobusu zamieszczono w tablicy 1.1. Tablica 1.1. Koszty realizacji zleceń [zł Autobus Zlecenie A1 A A3 A4 Kołobrzeg 3 15 39 1 Międzyzdroje 47 5 55 35 Szklarska Poręba 56 3 7 4 Zielona Góra 6 37 8 47 1... Analiza sytuacji decyzyjnej Każdy z autobusów będzie zajęty przez cały weekend, a zatem każdemu autobusowi można przydzielić co najwyżej jedno zlecenie. Każde zlecenie może być obsłużone przez jeden autobus. Oznaczmy zatem przez x ij, i, j = 1,..., n zmienną decyzyjną, która przyjmie wartość jeden, gdy autobus j zostanie przydzielony do zlecenia i, oraz zero w przeciwnym razie. W rozwiązaniu optymalnym cztery zmienne przyjmą wartość jeden, a pozostałe wartość zero. Niech c ij oznacza koszt realizacji zlecenia i autobusem j. Sumaryczny koszt realizacji zleceń wyniesie zatem n i=1 c ij x ij. 1..3. Model matematyczny Jak wspomniano we wstępie, model matematyczny problemu przydziału jest szczególnym przypadkiem zadania transportowego i ma postać: zminimalizować przy ograniczeniach n n c ij x ij (1.13) i=1 j=1 n x ij = 1, j = 1,..., n (1.14) i=1 n x ij = 1, i = 1,..., n (1.15) j=1 x ij {, 1}, i, j = 1,..., n (1.16) W sytuacji, gdy m n postępujemy podobnie, jak z niezbilansowanym zadaniem transportowym, czyli dodajemy fikcyjne zadanie albo wykonawcę. Koszty realizacji fikcyjnego zadania są zerowe, podobnie jak koszty realizacji zadań przez fikcyjnego wykonawcę. 1..4. Algorytm węgierski Problem przydziału można oczywiście rozwiązać zarówno za pomocą algorytmu sympleks, jak i algorytmu transportowego, ale ze względu na jego
1.. Problem przydziału 17 szczególna strukturę warto zastosować prostszy algorytm węgierski. Niech będzie dana macierz kosztów C = [c ij Algorytm węgierski Krok 1. Przekształcić macierz kosztów C = [c ij tak, aby w każdym jej wierszu i w każdej kolumnie występowało przynajmniej jedno zero. W tym celu od każdego wiersza macierzy odejmuje się jego najmniejszy element i, jeżeli trzeba, to następnie od każdej kolumny odejmuje się jej najmniejszy element. Krok. W przekształconej macierzy skreślić możliwie najmniejszą liczbą linii wszystkie wiersze i kolumny zawierające zera. Jeżeli najmniejsza liczba linii niezbędnych do pokrycia wszystkich zer jest równa wymiarowi macierzy n, to otrzymane rozwiązanie jest optymalne. Krok 3. Ustalić rozwiązanie optymalne, polegające na takiej konstrukcji macierzy x ij, aby jedynki znalazły się tylko na tych miejscach, na których w przekształconej macierzy kosztów występują zera (w każdym wierszu i każdej kolumnie może występować tylko jedna jedynka). Krok 4. Jeżeli liczba skreśleń jest mniejsza od rozmiaru macierzy n, w bieżącej macierzy kosztów należy znaleźć najmniejszy nieskreślony element i ten element: odjąć od elementów nieskreślonych, dodać do elementów podwójnie skreślonych, elementy skreślone jedną linią zostawić bez zmian. Krok 5. Wrócić do kroku. W celu ułatwienia obliczeń podzielmy wszystkie elementy macierzy [c ij przez 1. Po przekształceniu macierzy kosztów zgodnie ze wskazówkami w kroku 1 otrzymujemy macierz przedstawioną w tablicy 1.11. Tablica 1.11. Macierz kosztów po kroku 1 algorytmu 7 6 4 11 18 6 1 1 4 Jak widać wszystkie zera można w tej macierzy skreślić za pomocą dwóch linii. Zatem rozwiązanie nie jest optymalne. Znajdujemy najmniejszy nieskreślony element macierzy, czyli element (,4) lub (4,4) o wartości 4. Po przekształceniu otrzymujemy macierz przedstawioną w tablicy 1.1. Tablica 1.1. Macierz kosztów po pierwszej iteracji algorytmu 4 3 7 15 6 18 Nadal nie jest to rozwiązanie optymalne. Po kolejnej iteracji otrzymujemy macierz pokazaną w tablicy 1.13 reprezentującą rozwiązanie optymalne. Tablica 1.13. Macierz kosztów po drugiej iteracji algorytmu 6 1 5 13 4 16
18 Rozdział 1. Zagadnienie transportowe Odczytujemy rozwiązanie optymalne nadając wartość 1 zmiennym, dla których wartości macierzy są równe zero (po jednej w każdym wierszu i kolumnie). Tablica 1.14. Rozwiązanie optymalne 1 5 6 4 16 13 1..5. Interpretacja rozwiązania Otrzymane rozwiązanie wskazuje, że najniższy sumaryczny koszt realizacji zleceń, wynoszący 16 zł, firma uzyska wysyłając autobus A1 do Kołobrzegu (x 11 = 1), autobus A do Szklarskiej Poręby (x 3 = 1), autobus A3 do Międzyzdrojów (x 3 =1) i autobus A4 do Zielonej Góry (x 44 =1).