Opis metod - cz. II
Transkrypt
Opis metod - cz. II
Koszalin 2006 [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Spis treści 1 Problem transportowy .............................................................................................................................................. 2 1.1 Wstęp ................................................................................................................................................................ 2 1.2 Metoda górnego-lewego rogu .......................................................................................................................... 3 1.3 Metoda najmniejszego elementu ................................................................................................................... 11 1.4 Metoda VAM ................................................................................................................................................... 18 1.5 Metoda e-perturbacji ...................................................................................................................................... 28 1.6 Metoda potencjałów ....................................................................................................................................... 30 1.6.1 Budowa cyklu .......................................................................................................................................... 34 1.6.2 Dokończenie zadania .............................................................................................................................. 38 1 Problem transportowy | Anna Tomkowska [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Koszalin 2006 1 Problem transportowy 1.1 Wstęp Rozwiązanie problemu transportowego polega na znalezieniu takiej drogi pomiędzy dostawcami a odbiorcami, której koszt jest jak najniższy - rozwiązanie optymalne. Mając przed sobą zadanie transportowe - najpierw budujemy rozwiązanie dopuszczalne następnie sprawdzamy czy jest rozwiązaniem optymalnym. Jeżeli nie jest budujemy kolejne rozwiązanie dopuszczalne lepsze od poprzedniego lub przynajmniej nie gorsze. Z nowym rozwiązaniem dopuszczalnym postępujemy jak z poprzednim do momentu otrzymania wyniku optymalnego. Zagadnienie transportowe rozwiązujemy w następujących krokach: krok.1. Znalezienie rozwiązania dopuszczalnego jedną z metod: pn.-zach. kąta, najmniejszego elementu, VAM krok.2. Obliczenie kosztu rozwiązania krok.3. Sprawdzenie, czy rozwiązanie jest zdegenerowane (czy jest odpowiednia ilość baz) krok.4. Jeżeli jest niezdegenerowane należy zastosować metodę e-perturbacji krok.5. Sprawdzenie, czy rozwiązanie jest optymalne metodą potencjałów krok.6. Jeżeli nie jest optymalne należy stworzyć cykl i zbudować nowe rozwiązanie dopuszczalne krok.7. Powtarzanie kroków 5 i 6 do momentu otrzymania rozwiązania optymalnego Rozwiązanie dopuszczalne - rozwiązanie, które w wyniku daje niski koszt ale jest możliwość w prosty sposób uzyskania kosztu niższego. Jest to rozwiązanie przejściowe. Istnieje wiele rozwiązań dopuszczalnych dla jednego zagadnienia transportowego, przy czym każde kolejne ma lepszy (niższy)lub przynajmniej nie gorszy koszt od poprzedniego. Rozwiązanie optymalne - rozwiązanie, które w wyniku daje koszt najniższy do uzyskania poprzez znane nam metody. Jest to rozwiązanie końcowe. Może istnieć kilka rozwiązań optymalnych dla jednego zagadnienia transportowego lecz koszt każdego z nich powinien być taki sam. Anna Tomkowska | Problem transportowy 2 Koszalin 2006 [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] 1.2 Metoda górnego-lewego rogu Na stronie pokazane zostały obliczenia dla zadania zbilansowanego (zamkniętego) tzn takiego, dla którego suma podaży równa się sumie popytu. W innym wypadku należy najpierw zadanie sprowadzić do zadania zbilansowanego. Metoda zwana również pn. - zach. kąta. Metodą tą uzyskamy rozwiązanie dopuszczalne zadania transportowego. Nie bierze ona pod uwagę macierzy kosztów przez co koszt rozwiązania jest dość wysoki w porównaniu z pozostałymi metodami. Wyobraźmy sobie następujące zagadnienie transportowe: Jesteśmy firmą przewozową (np. oranżady). Czterech producentów oranżady (P1, P2, P3, P4) z różnych miast dysponuje odpowiednio 20, 30, 10 i 40 skrzynkami napoju. Natomiast 5 sklepów (S1, S2, S3, S4, S5) z innych miast chętnie kupią odpowiednio 10, 15, 30, 10 i 35 skrzynek. Mamy jak najmniejszym kosztem porozwozić wszystkie skrzynki, znając koszty drogi od danego producenta (dostawcy) do każdego sklepu (odbiorcy). Koszty te zostały zestawione w tabeli poniżej (Tabelka.1.). Tabelka.1. Zestawienie danych z zadania w postaci tabelki Rozwiązanie problemu metodą pn. - zach. kąta: Na początek musimy przygotować sobie czystą tabelkę o wymiarze m-wierszy na n-kolumn, gdzie: m - liczba odbiorców, n - liczba dostawców. Dodajemy wiersz u góry z liczbą towaru do dostarczenia (podaż) i kolumnę na końcu z liczbą towaru do odebrania (popyt). 3 Problem transportowy | Anna Tomkowska [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Koszalin 2006 Tabelka.2. Tabelka na wyniki Wypełnianie tabelki zaczynamy od pierwszej komórki w górnym, lewym narożniku. Komórce tej odpowiada dana podaż (w komórce powyżej) oraz dany popyt (w ostatniej kolumnie). Wybieramy spośród nich mniejszą wartość i wpisujemy ją do komórki. Następnie należy tę wartość odjąć zarówno od podaży jak i od popytu. Dla pierwszej komórki podaż przyjmuje wartość 20 natomiast popyt 10. Mniejszą spośród nich jest 10 i tą wartość wpisujemy do komórki. Tą samą wartość (10) odejmujemy zarówno od podaży (20-10=10) jak i od popytu (10-10=0) (Tabelka. 3.). Tabelka.3. Krok.1. Min(20,10) = 10 Teraz sprawdzamy, gdzie po odjęciu uzyskaliśmy 0 (w podaży czy w popycie). Jeżeli wyzerował się popyt to w danym wierszu wpisujemy w resztę komórek zera. Jeżeli wyzerowałaby się podaż to należałoby wpisać zera w resztę komórek w danej kolumnie. W tym przypadku wyzerował się popyt więc należy wypełnić resztę komórek w wierszu pierwszym zerami (Tabelka. 4.). Tabelka.4. Popyt = 0. Zerujemy resztę komórek w wierszu. Anna Tomkowska | Problem transportowy 4 Koszalin 2006 [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Idziemy do kolejnej wolnej komórki, wpisujemy mniejszą wartość z odpowiadających jej popytu i podaży. Pomniejszamy o tą samą wartość odpowiadający komórce podaż i popyt (Tabelka. 5.). Tabelka.5. Krok.2. Min(10,15) = 10 Uzyskaliśmy zero w podaży więc wstawiamy zera w resztę komórek w danej kolumnie (Tabelka. 6.). Tabelka.6. Podaż = 0. Zerujemy resztę komórek w kolumnie. Idziemy do kolejnej wolnej komórki, wpisujemy mniejszą wartość z odpowiadających jej popytu i podaży. Pomniejszamy o tą samą wartość odpowiadający komórce podaż i popyt (Tabelka. 7.). Tabelka.7. Krok.3. Min(30,5) = 5 Uzyskaliśmy zero w popycie więc wstawiamy zera w resztę komórek w danym wierszu (Tabelka. 8.). 5 Problem transportowy | Anna Tomkowska [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Koszalin 2006 Tabelka.8. Popyt = 0. Zerujemy resztę komórek w wierszu. Idziemy do kolejnej wolnej komórki, wpisujemy mniejszą wartość z odpowiadających jej popytu i podaży. Pomniejszamy o tą samą wartość odpowiadający komórce podaż i popyt (Tabelka. 9.). Tabelka.9. Krok.3. Min(25,30) = 25 Uzyskaliśmy zero w podaży więc wstawiamy zera w resztę komórek w danej kolumnie (Tabelka. 10.). Tabelka.10. Podaż = 0. Zerujemy resztę komórek w kolumnie. Idziemy do kolejnej wolnej komórki, wpisujemy mniejszą wartość z odpowiadających jej popytu i podaży. Pomniejszamy o tą samą wartość odpowiadający komórce podaż i popyt (Tabelka. 11.). Anna Tomkowska | Problem transportowy 6 Koszalin 2006 [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Tabelka.11. Krok.3. Min(10,5) = 5 Uzyskaliśmy zero w popycie więc wstawiamy zera w resztę komórek w danym wierszu (Tabelka. 12.). Tabelka.12. Popyt = 0. Zerujemy resztę komórek w wierszu. Idziemy do kolejnej wolnej komórki, wpisujemy mniejszą wartość z odpowiadających jej popytu i podaży. Pomniejszamy o tą samą wartość odpowiadający komórce podaż i popyt (Tabelka. 13.). Tabelka.13. Krok.3. Min(5,10) = 5 Uzyskaliśmy zero w podaży więc wstawiamy zera w resztę komórek w danej kolumnie (Tabelka. 14.). Tabelka.14. Podaż = 0. Zerujemy resztę komórek w kolumnie. 7 Problem transportowy | Anna Tomkowska [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Koszalin 2006 Idziemy do kolejnej wolnej komórki, wpisujemy mniejszą wartość z odpowiadających jej popytu i podaży. Pomniejszamy o tą samą wartość odpowiadający komórce podaż i popyt (Tabelka. 15.). Tabelka.15. Krok.3. Min(40,5) = 5 Uzyskaliśmy zero w popycie więc wstawiamy zera w resztę komórek w danym wierszu (Tabelka. 16.). Tabelka.16. Popyt = 0. Nie ma więcej komórek w wierszu. Idziemy do kolejnej wolnej komórki, wpisujemy mniejszą wartość z odpowiadających jej popytu i podaży. Pomniejszamy o tą samą wartość podaż i popyt (Tabelka. 17.). Jest to już ostatni element w tabelce. Wartość podaży i popytu dla ostatniego elementu zawsze powinna być taka sama. Tabelka.17. Krok.3. Min(35,35) = 35 Tabelka po tym kroku powinna mieć wszystkie wartości popytu i podaży równe zero. (Tabelka. 18.). Anna Tomkowska | Problem transportowy 8 Koszalin 2006 [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Tabelka.18. Ostatni element w tabelce W ten sposób uzyskaliśmy rozwiązanie dopuszczalne(Tabelka. 19.). Wszystkie zerowe elementy rozwiązania nazywamy elementami nie bazowymi. Natomiast elementami bazowymi nazywamy wszystkie elementy niezerowe. Przy czym el. bazowych powinno być m+n-1 (5+4-1=8), wówczas rozwiązanie nazywamy zdegenerowanym. W innym przypadku rozwiązanie będzie niezdegenerowane a my nie będziemy w stanie sprawdzić jego optymalności metodą potencjałów. Tabelka.19. Krok.4. Rozw. dopuszczalne -> zdegenerowane (8 el. bazowych). Na koniec należałoby policzyć koszt jaki uzyskaliśmy tą metodą. Koszt wyliczamy przemnażając dany element tablicy kosztów z danym elementem naszego rozwiązania poczym wartości te sumujemy (Tabelka. 20.). 9 Problem transportowy | Anna Tomkowska [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Koszalin 2006 Tabelka.20. Koszt rozwiązania dopuszczalnego Uzyskaliśmy wynik 360. Porównując go z kosztem uzyskanym innymi metodami (najmniejszego elementu lub VAM) zauważymy, że jest to wynik najgorszy. Wynika to z faktu, że rozwiązując problem metodą pn. - zach. kąta nie bierzemy pod uwagę kosztów. Dlatego metoda ta rzadko daje nam rozwiązanie optymalne. Anna Tomkowska | Problem transportowy 10 Koszalin 2006 1.3 [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Metoda najmniejszego elementu Pełna nazwa to metoda najmniejszego elementu w macierzy kosztów. Metodą tą uzyskamy rozwiązanie dopuszczalne zadania transportowego. Bierze ona pod uwagę macierz kosztów dzięki czemu daje w wyniku niski koszt rozwiązania. Wyobraźmy sobie następujące zagadnienie transportowe: Jesteśmy firmą przewozową (np. oranżady). Czterech producentów oranżady (P1, P2, P3, P4) z różnych miast dysponuje odpowiednio 20, 30, 10 i 40 skrzynkami napoju. Natomiast 5 sklepów (S1, S2, S3, S4, S5) z innych miast chętnie kupią odpowiednio 10, 15, 30, 10 i 35 skrzynek. Mamy jak najmniejszym kosztem porozwozić wszystkie skrzynki, znając koszty drogi od danego producenta (dostawcy) do każdego sklepu (odbiorcy). Koszty te zostały zestawione w tabeli poniżej (Tabelka.1.). Tabelka.1. Zestawienie danych z zadania w postaci tabelki Rozwiązanie problemu metodą najmniejszego elementu macierzy kosztów: Na początek musimy przygotować sobie dwie tabelki o wymiarze m-wierszy na n-kolumn, gdzie: m - liczba odbiorców, n - liczba dostawców. Dodajemy wiersz u góry z liczbą towaru do dostarczenia (podaż) i kolumnę na końcu z liczbą towaru do odebrania (popyt). Przy czym pierwsza tabelka jest czysta (na wyniki) druga natomiast wypełniona kosztami (Tabelka.2.). 11 Problem transportowy | Anna Tomkowska [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Koszalin 2006 Tabelka.2. Tabelka na wyniki (a) oraz tabelka kosztów (b) W pierwszym kroku kładziemy przed sobą tabelkę kosztów. Zaczynając od góry szukamy pierwszej komórki o najmniejszym koszcie, odznaczamy ją. Komórce tej odpowiada jedna wartość podaży oraz popytu. Wybieramy spośród nich wartość mniejszą i odejmujemy ją zarówno od danej komórki popytu jak i komórki podaży. Pierwszym minimalnym kosztem jest 1, o podaży = 10 jak i popycie = 10. Wartości podaży i popytu są równe, więc wartością minimalną będzie 10. Odejmujemy ją od popytu (10-10=0) jak i od podaży (10-10=0) (Tabelka. 3.). Tabelka.3. Krok.1.Min. koszt = 1. Min(10,10) = 10 Teraz sięgamy po czystą tabelkę. Wpisujemy naszą wartość minimalną min(popyt,podaż) w komórkę, która odpowiada komórce z minimalnym kosztem w tabeli kosztów. Następnie sprawdzamy, która wartość (popytu czy podaży) wyzerowała się. Jeżeli wyzerowała się podaż to wstawiamy zera w resztę komórek w tej kolumnie, jeżeli popyt to wstawiamy zera w resztę komórek danego wiersza. W tym przypadku wyzerowała się zarówna podaż jak i popyt - wypełniamy więc zerami zarówno wiersz jak i kolumnę (Tabelka. 4.). Tabelka.4. Miejsce odpowiadające minimalnemu kosztowi w tabeli kosztów - (1,3). komórki w kolumnie jak i w wierszu. Popyt=0 i podaż=0, zerujemy Anna Tomkowska | Problem transportowy 12 Koszalin 2006 [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Krok drugi - bierzemy tabelkę kosztów i zakreślamy na niej komórki, które wypełniliśmy zerami w tabelce wyników. Następnie szukamy w niej następnego minimalnego kosztu (pomijając zakreślone komórki). Jest to koszt = 1 o wartości podaży 30 i popycie 15. Wartością mniejszą jest 15. Odejmujemy ją od podaży (30-15=15) jak i od popytu (15-15=0) (Tabelka. 5.). Tabelka.5. Krok.2.Min. koszt = 1. Min(30,15) = 15 Sięgamy po tabelkę wyników. Wpisujemy 15 w miejsce odpowiadające minimalnej wartości kosztów w tabelce kosztów. Wyzerował się popyt, więc wypełniamy resztę komórek w wierszu zerami (Tabelka. 6.). Tabelka.6. Miejsce odpowiadające minimalnemu kosztowi w tabeli kosztów - (2,2). wierszu. Popyt=0, zerujemy komórki w Krok kolejny - bierzemy tabelkę kosztów i zakreślamy na niej komórki, które wypełniliśmy zerami w tabelce wyników. Następnie szukamy w niej następnego minimalnego kosztu (pomijając zakreślone komórki). Jest to koszt = 1 o wartości podaży 20 i popycie 30. Wartością mniejszą jest 20. Odejmujemy ją od podaży (20-20=0) jak i od popytu (30-20=10) (Tabelka. 7.). Tabelka.7. Krok.3.Min. koszt = 1. Min(20,30) = 20 Sięgamy po tabelkę wyników. Wpisujemy 20 w miejsce odpowiadające minimalnej wartości kosztów w tabelce kosztów. Wyzerowała się podaż, więc wypełniamy resztę komórek w kolumnie zerami (Tabelka. 8.). 13 Problem transportowy | Anna Tomkowska [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Koszalin 2006 Tabelka.8. Miejsce odpowiadające minimalnemu kosztowi w tabeli kosztów - (3,1). kolumnie. Podaż=0, zerujemy komórki w Krok kolejny - bierzemy tabelkę kosztów i zakreślamy na niej komórki, które wypełniliśmy zerami w tabelce wyników. Następnie szukamy w niej następnego minimalnego kosztu (pomijając zakreślone komórki). Jest to koszt = 1 o wartości podaży 15 i popycie 10. Wartością mniejszą jest 10. Odejmujemy ją od podaży (15-10=5) jak i od popytu (10-10=0) (Tabelka. 9.). Tabelka.9. Krok.4.Min. koszt = 1. Min(15,10) = 10 Sięgamy po tabelkę wyników. Wpisujemy 10 w miejsce odpowiadające minimalnej wartości kosztów w tabelce kosztów. Wyzerował się popyt, więc wypełniamy resztę komórek w wierszu zerami (Tabelka. 10.). Tabelka.10. Miejsce odpowiadające minimalnemu kosztowi w tabeli kosztów - (3,2). wierszu. Popyt=0, zerujemy komórki w Krok kolejny - bierzemy tabelkę kosztów i zakreślamy na niej komórki, które wypełniliśmy zerami w tabelce wyników. Następnie szukamy w niej następnego minimalnego kosztu (pomijając zakreślone komórki). Jest to koszt = 1 o wartości podaży 5 i popycie 10. Wartością mniejszą jest 5. Odejmujemy ją od podaży (5-5=0) jak i od popytu (10-5=5) (Tabelka. 11.). Anna Tomkowska | Problem transportowy 14 Koszalin 2006 [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Tabelka.11. Krok.5.Min. koszt = 1. Min(5,10) = 5 Sięgamy po tabelkę wyników. Wpisujemy 5 w miejsce odpowiadające minimalnej wartości kosztów w tabelce kosztów. Wyzerowała się podaż, więc wypełniamy resztę komórek w kolumnie zerami (Tabelka. 12.). Tabelka.12. Miejsce odpowiadające minimalnemu kosztowi w tabeli kosztów - (4,2). kolumnie. Podaż=0, zerujemy komórki w Krok kolejny - bierzemy tabelkę kosztów i zakreślamy na niej komórki, które wypełniliśmy zerami w tabelce wyników. Następnie szukamy w niej następnego minimalnego kosztu (pomijając zakreślone komórki). Jest to koszt = 1 o wartości podaży 40 i popycie 5. Wartością mniejszą jest 5. Odejmujemy ją od podaży (40-5=35) jak i od popytu (55=0) (Tabelka. 13.). Tabelka.13. Krok.6.Min. koszt = 1. Min(40,5) = 5 Sięgamy po tabelkę wyników. Wpisujemy 5 w miejsce odpowiadające minimalnej wartości kosztów w tabelce kosztów. Wyzerował się popyt jednak nie ma w wierszu już więcej komórek do wyzerowania (Tabelka. 14.). 15 Problem transportowy | Anna Tomkowska [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Koszalin 2006 Tabelka.14. Miejsce odpowiadające minimalnemu kosztowi w tabeli kosztów - (4,4). Popyt=0, nie ma co zerować. Krok ostatni - bierzemy tabelkę kosztów i zakreślamy na niej komórki, które wypełniliśmy zerami w tabelce wyników. Została ostatnia nie zakreślona komórka w tabelce kosztów. Jest to koszt = 6 o wartości podaży 35 i popycie 35. Dla ostatniego elementu (w ostatnim kroku) popyt i podaż zawsze muszą być sobie równe. Odejmujemy 35 od podaży (35-35=0) jak i od popytu (35-35=0 (Tabelka. 15.). Tabelka.15. Krok.7.Min. koszt = 6. Min(35,35) = 35 Sięgamy po tabelkę wyników. Wpisujemy 35 w ostatnią komórkę tabelki. Wyzerowały się zarówno popyt jak i podaż (Tabelka. 16.). Tabelka.16. Miejsce odpowiadające minimalnemu kosztowi w tabeli kosztów - (5,4). Popyt=0, nie ma co zerować. Tabelka po tym kroku powinna mieć wszystkie wartości popytu i podaży równe zero. W ten sposób uzyskaliśmy rozwiązanie dopuszczalne(Tabelka. 19.). Wszystkie zerowe elementy rozwiązania nazywamy elementami nie bazowymi. Natomiast elementami bazowymi nazywamy wszystkie elementy niezerowe. Przy czym el. bazowych powinno być m+n-1 (5+4-1=8), wówczas rozwiązanie nazywamy zdegenerowanym. W innym przypadku rozwiązanie będzie niezdegenerowane a my nie będziemy w stanie sprawdzić jego optymalności metodą potencjałów. Anna Tomkowska | Problem transportowy 16 Koszalin 2006 [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Tabelka.19. Rozw. dopuszczalne -> niezdegenerowane (7 el. bazowych). Na koniec należałoby policzyć koszt jaki uzyskaliśmy tą metodą. Koszt wyliczamy przemnażając dany element tablicy kosztów z danym elementem naszego rozwiązania poczym wartości te sumujemy (Tabelka. 20.). Tabelka.20. Koszt rozwiązania dopuszczalnego Uzyskaliśmy wynik 275. Porównując go z kosztem uzyskanym innymi metodami (pn.-zach. kąta lub VAM) zauważymy, że wynik nie jest najgorszy (ani najlepszy). W odróżnieniu od metody pn. - zach. kąta w metodzie najmniejszego elementu bierzemy pod uwagę macierz kosztów. 17 Problem transportowy | Anna Tomkowska [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Koszalin 2006 1.4 Metoda VAM Metodą tą uzyskamy rozwiązanie dopuszczalne zadania transportowego. Bierze ona pod uwagę macierz kosztów dzięki czemu daje w wyniku niski koszt rozwiązania (często lepszy jak metodą najmniejszego elementu). Wyobraźmy sobie następujące zagadnienie transportowe: Jesteśmy firmą przewozową (np. oranżady). Czterech producentów oranżady (P1, P2, P3, P4) z różnych miast dysponuje odpowiednio 20, 30, 10 i 40 skrzynkami napoju. Natomiast 5 sklepów (S1, S2, S3, S4, S5) z innych miast chętnie kupią odpowiednio 10, 15, 30, 10 i 35 skrzynek. Mamy jak najmniejszym kosztem porozwozić wszystkie skrzynki, znając koszty drogi od danego producenta (dostawcy) do każdego sklepu (odbiorcy). Koszty te zostały zestawione w tabeli poniżej (Tabelka.1.). Tabelka.1. Zestawienie danych z zadania w postaci tabelki Rozwiązanie problemu metodą najmniejszego elementu macierzy kosztów: Na początek musimy przygotować sobie dwie tabelki o wymiarze m-wierszy na n-kolumn, gdzie: m - liczba odbiorców, n - liczba dostawców. Przy czym pierwsza tabelka jest czysta (na wyniki) druga natomiast wypełniona kosztami Dodajemy wiersz u góry i kolumnę na końcu. W pierwszej tabelce dodatkowy wiersz wypełniamy liczbą towaru do dostarczenia (podaż), natomiast kolumnę liczbą towaru do odebrania (popyt). W drugiej tabelce dodatkowy wiersz i kolumnę pozostawiamy czystą (Tabelka.2.). Anna Tomkowska | Problem transportowy 18 Koszalin 2006 [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Tabelka.2. Tabelka na wyniki (a) oraz tabelka kosztów (b) W pierwszym kroku kładziemy przed sobą tabelkę kosztów. Po kolei w każdej kolumnie szukamy dwóch najmniejszych wartości po czym odejmujemy je od siebie (od większej mniejszą). Tak otrzymane dla każdej kolumny wyniki (nazwijmy te liczby wskaźnikami) wpisujemy w pusty wiersz tabelki. To samo robimy dla wierszy a wyniki wpisujemy w ostatnią, pustą kolumnę (Tabelka. 3.). Tabelka.3. Krok.1. Wyliczanie wskaźników Następnie szukamy najwyższego wskaźnika (Tabelka. 4a.). Jeżeli najwyższym wskaźnikiem jest wskaźnik odpowiadający kolumnie wówczas szukamy w tej kolumnie najniższej wartości kosztu. Jeżeli natomiast odpowiada wierszowi wtedy w tym wierszu szukamy najniższego kosztu. Tutaj najwyższym wskaźnikiem jest 2 - odpowiada on kolumnie (dlatego została zaznaczona na żółto). Najniższym kosztem w kolumnie jest wartość 1 (Tabelka. 4b.). Tabelka.4. Największy wskaźnik - 2. Najniższa wartość kosztu w kolumnie - 1. Teraz sięgamy po czystą tabelkę. Odnajdujemy w niej komórkę odpowiadającą pozycji wcześniej odnalezionego minimalnego kosztu w tabelce kosztów. Jest to wiersz 4, kolumna 4. Komórce tej odpowiada podaż i popyt 19 Problem transportowy | Anna Tomkowska [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Koszalin 2006 odpowiednio o wartościach 40 i 10. Wybieramy wartość mniejszą - czyli 10 i wpisujemy ją w komórkę. Następnie odejmujemy tę wartość od podaży (40-10=30) i popytu (10-10=0) (Tabelka. 5a.). Sprawdzamy następnie, która wartość (podaż czy popyt) wyzerowała się. Jeżeli wyzerowałaby się podaż należałoby wypełnić resztę komórek w kolumnie zerami. Nam wyzerował sie popyt czyli należy resztę komórek w wierszu wypełnić zerami (Tabelka. 5b.). Tabelka.5. Miejsce odpowiadające minimalnemu kosztowi w kolumnie tabeli kosztów - (4,4). komórki w wierszu Popyt=0, zerujemy Krok drugi - bierzemy tabelkę kosztów i wykreślamy w niej wiersz lub kolumnę, którą wypełniliśmy powyżej w tabelce wyników. Po czym na nowo wyliczamy wskaźniki pomijając wykreślone komórki (Tabelka. 6.). Tabelka.6. Krok.2. Wyliczanie wskaźników. Następnie szukamy najwyższego wskaźnika. W przypadku (jak poniżej) gdy kilka maksymalnych wskaźników jest takich samych wybieramy ten, który ma najmniejszą wartość kosztu (w kolumnie - dla wskaźnika odpowiadającego kolumnie, bądź w wierszu - dla wskaźnika odpowiadającego wierszowi). (Tabelka. 7a.). Jeżeli najwyższym wskaźnikiem jest wskaźnik odpowiadający kolumnie wówczas szukamy w tej kolumnie najniższej wartości kosztu. Jeżeli natomiast odpowiada wierszowi wtedy w tym wierszu szukamy najniższego kosztu. Najwyższym wskaźnikiem, który zarazem ma najniższą wartość kosztu w kolumnie jest 1 o koszcie również = 1 (Tabelka. 7b.). Anna Tomkowska | Problem transportowy 20 Koszalin 2006 [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Tabelka.7. Największy wskaźnik - 1. Najniższa wartość kosztu w kolumnie - 1. Teraz sięgamy po czystą tabelkę. Odnajdujemy w niej komórkę odpowiadającą pozycji wcześniej odnalezionego minimalnego kosztu w tabelce kosztów. Jest to wiersz 3, kolumna 1. Komórce tej odpowiada podaż i popyt odpowiednio o wartościach 20 i 30. Wybieramy wartość mniejszą - czyli 20 i wpisujemy ją w komórkę. Następnie odejmujemy tę wartość od podaży (20-20=0) i popytu (30-20=10) (Tabelka. 8a.). Sprawdzamy następnie, która wartość (podaż czy popyt) wyzerowała się. Wyzerowała sie podaż więc należy resztę komórek w kolumnie wypełnić zerami (Tabelka. 8b.). Tabelka.8. Miejsce odpowiadające minimalnemu kosztowi w kolumnie tabeli kosztów - (3,1). zerujemy komórki w kolumnie. Podaż=0, Krok kolejny - bierzemy tabelkę kosztów i wykreślamy w niej wiersz lub kolumnę, którą wypełniliśmy powyżej w tabelce wyników. Po czym na nowo wyliczamy wskaźniki pomijając wykreślone komórki (Tabelka. 9.). Tabelka.9. Krok.3. Wyliczanie nowych wskaźników. Następnie szukamy najwyższego wskaźnika. W przypadku (jak poniżej)gdy kilka maksymalnych wskaźników jest takich samych wybieramy ten, który ma najmniejszą wartość kosztu (w kolumnie - dla wskaźnika odpowiadającego kolumnie, bądź w wierszu - dla wskaźnika odpowiadającego wierszowi) (Tabelka. 10a.). 21 Problem transportowy | Anna Tomkowska [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Koszalin 2006 Jeżeli najwyższym wskaźnikiem jest wskaźnik odpowiadający kolumnie wówczas szukamy w tej kolumnie najniższej wartości kosztu. Jeżeli natomiast odpowiada wierszowi wtedy w tym wierszu szukamy najniższego kosztu. Najwyższym wskaźnikiem, który zarazem ma najniższą wartość kosztu w wierszu jest 1 o koszcie również = 1 (Tabelka. 10b.). Tabelka.10. Największy wskaźnik - 1. Najniższa wartość kosztu w wierszu - 1. Teraz sięgamy po tabelkę wyników. Odnajdujemy w niej komórkę odpowiadającą pozycji wcześniej odnalezionego minimalnego kosztu w tabelce kosztów. Jest to wiersz 1, kolumna 3. Komórce tej odpowiada podaż i popyt odpowiednio o wartościach 10 i 10. Wartości są jednakowe, wpisujemy więc w komórkę 10. Następnie odejmujemy tę wartość od podaży (10-10=0) i popytu (10-10=0) (Tabelka. 11a.). Sprawdzamy następnie, która wartość (podaż czy popyt) wyzerowała się. Wyzerowały sie zarówno podaż jak i popyt więc należy resztę komórek w kolumnie i w wierszu wypełnić zerami (Tabelka. 11b.). Tabelka.11. Miejsce odpowiadające minimalnemu kosztowi w kolumnie tabeli kosztów - (1,3). zerujemy komórki w kolumnie i w wierszu. Podaż=0 i popyt=0, Krok kolejny - bierzemy tabelkę kosztów i wykreślamy w niej wiersz lub kolumnę, którą wypełniliśmy powyżej w tabelce wyników. W tym wypadku zakreślamy zarówno wiersz i kolumnę. Po czym na nowo wyliczamy wskaźniki pomijając wykreślone komórki (Tabelka. 12.). Tabelka.12. Krok.4. Wyliczanie nowych wskaźników. Anna Tomkowska | Problem transportowy 22 Koszalin 2006 [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Następnie szukamy najwyższego wskaźnika. Jest nim wskaźnik o wartości 5 - odpowiadający wierszowi tabelki (Tabelka. 13a.). Wskaźnik odpowiada wierszowi, więc w tym wierszu szukamy najniższego kosztu. Najniższym kosztem w wierszu jest koszt = 1 (Tabelka. 13b.). Tabelka.13. Największy wskaźnik - 5. Najniższa wartość kosztu w wierszu - 1. Teraz sięgamy po tabelkę wyników. Odnajdujemy w niej komórkę odpowiadającą pozycji wcześniej odnalezionego minimalnego kosztu w tabelce kosztów. Jest to wiersz 5, kolumna 2. Komórce tej odpowiada podaż i popyt odpowiednio o wartościach 30 i 35. Wybieramy wartość mniejszą - czyli 30 i wpisujemy ją w komórkę. Następnie odejmujemy tę wartość od podaży (30-30=0) i popytu (35-30=5) (Tabelka. 14a.). Sprawdzamy następnie, która wartość (podaż czy popyt) wyzerowała się. Wyzerowała sie podaż jak więc należy resztę komórek w kolumnie wypełnić zerami (Tabelka. 14b.). Tabelka.14. Miejsce odpowiadające minimalnemu kosztowi w kolumnie tabeli kosztów - (5,2). komórki w kolumnie. Podaż=0, zerujemy Krok piąty - bierzemy tabelkę kosztów i wykreślamy w niej kolumnę, którą wypełniliśmy powyżej w tabelce wyników. Po czym na nowo wyliczamy wskaźniki pomijając wykreślone komórki. Nie mamy możliwości wyliczenia wskaźników dla wierszy ponieważ w nich pozostało tylko po jednej komórce. Wyliczamy więc wskaźnik tylko dla kolumny (Tabelka. 15.). 23 Problem transportowy | Anna Tomkowska [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Koszalin 2006 Tabelka.15. Krok.5. Wyliczanie nowych wskaźników. Mamy tylko jeden wskaźnik o wartości = 1. Wybieramy go (Tabelka. 16a.). Wskaźnik odpowiada kolumnie więc w niej szukamy minimalnej wartości kosztu - jest nim koszt = 3 (Tabelka. 16b.). Tabelka.16. Największy wskaźnik - 1. Najniższa wartość kosztu w wierszu - 3. Teraz sięgamy po tabelkę wyników. Odnajdujemy w niej komórkę odpowiadającą pozycji wcześniej odnalezionego minimalnego kosztu w tabelce kosztów. Jest to wiersz 3, kolumna 4. Komórce tej odpowiada podaż i popyt odpowiednio o wartościach 30 i 10. Wybieramy wartość mniejszą - czyli 10 i wpisujemy ją w komórkę. Następnie odejmujemy tę wartość od podaży (30-10=20) i popytu (10-10=0) (Tabelka. 17a.). Sprawdzamy następnie, która wartość (podaż czy popyt) wyzerowała się. Wyzerował sie popyt więc należałoby resztę komórek w wierszu wypełnić zerami jednak nie ma już więcej wolnych komórek w tym wierszu (Tabelka. 17b.). Tabelka.17. Miejsce odpowiadające minimalnemu kosztowi w kolumnie tabeli kosztów - (3,4). co zerować w wierszu. Popyt=0, nie ma już Krok szósty - bierzemy tabelkę kosztów i wykreślamy w niej wiersz, którą wypełniliśmy powyżej w tabelce wyników (właściwie to tylko jedna komórka). Po czym na nowo wyliczamy wskaźniki pomijając wykreślone komórki. Nie mamy możliwości wyliczenia wskaźników dla wierszy ponieważ w nich pozostało tylko po jednej komórce. Wyliczamy więc wskaźnik tylko dla kolumny (Tabelka. 18.). Anna Tomkowska | Problem transportowy 24 Koszalin 2006 [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Tabelka.18. Krok.6. Wyliczanie nowych wskaźników. Mamy tylko jeden wskaźnik o wartości = 2. Wybieramy go (Tabelka. 19a.). Wskaźnik odpowiada kolumnie więc w niej szukamy minimalnej wartości kosztu - jest nim koszt = 4 (Tabelka. 19b.). Tabelka.19. Największy wskaźnik - 2. Najniższa wartość kosztu w wierszu - 4. Teraz sięgamy po tabelkę wyników. Odnajdujemy w niej komórkę odpowiadającą pozycji wcześniej odnalezionego minimalnego kosztu w tabelce kosztów. Jest to wiersz 2, kolumna 4. Komórce tej odpowiada podaż i popyt odpowiednio o wartościach 20 i 15. Wybieramy wartość mniejszą - czyli 15 i wpisujemy ją w komórkę. Następnie odejmujemy tę wartość od podaży (20-15=5) i popytu (15-15=0) (Tabelka. 20a.). Sprawdzamy następnie, która wartość (podaż czy popyt) wyzerowała się. Wyzerował sie popyt więc należałoby resztę komórek w wierszu wypełnić zerami jednak nie ma już więcej wolnych komórek w tym wierszu (Tabelka. 20b.). Tabelka.20. Miejsce odpowiadające minimalnemu kosztowi w kolumnie tabeli kosztów - (2,4). co zerować w wierszu. Popyt=0, nie ma już Krok ostatni - bierzemy tabelkę kosztów i wykreślamy w niej wiersz, którą wypełniliśmy powyżej w tabelce wyników (właściwie to tylko jedna komórka). Nie mamy możliwości wyliczenia wskaźników ponieważ pozostał tylko jeden element. W ostatnim kroku nie wyliczamy więc wskaźników. Pozostawiony (ostatni) element tablicy kosztów bierzemy jako ostatni minimalny koszt = 6 (Tabelka. 21.). 25 Problem transportowy | Anna Tomkowska [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Koszalin 2006 Tabelka.21. Krok.7. Ostatni krok - brak wskaźników. Teraz sięgamy po tabelkę wyników. Odnajdujemy w niej komórkę odpowiadającą pozycji ostatniego minimalnego kosztu w tabelce kosztów. Jest to wiersz 5, kolumna 4. Komórce tej odpowiada podaż i popyt odpowiednio o tych samych wartościach 5 i 5. Wpisujemy 5 w komórkę. Następnie odejmujemy tę wartość od podaży (5-5=5) i popytu (55=0) (Tabelka. 22a.). Tabelka po tym kroku powinna mieć wszystkie wartości popytu i podaży równe zero. (Tabelka. 22b.). Tabelka.22. Miejsce odpowiadające minimalnemu kosztowi w kolumnie tabeli kosztów - (5,4). koniec. Popyt=0 i podaż=0, W ten sposób uzyskaliśmy rozwiązanie dopuszczalne (Tabelka. 23.). Wszystkie zerowe elementy rozwiązania nazywamy elementami nie bazowymi. Natomiast elementami bazowymi nazywamy wszystkie elementy niezerowe. Przy czym el. bazowych powinno być m+n-1 (5+4-1=8), wówczas rozwiązanie nazywamy zdegenerowanym. W innym przypadku rozwiązanie będzie niezdegenerowane a my nie będziemy w stanie sprawdzić jego optymalności metodą potencjałów. Nasze rozwiązanie jest niezdegenerowane - ma tylko 6 el. bazowych (powinno być 8). Tabelka.23. Rozw. dopuszczalne -> niezdegenerowane (6 el. bazowych). Na koniec należałoby policzyć koszt jaki uzyskaliśmy tą metodą. Koszt wyliczamy przemnażając dany element tablicy kosztów z danym elementem naszego rozwiązania poczym wartości te sumujemy (Tabelka. 24.). Anna Tomkowska | Problem transportowy 26 Koszalin 2006 [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Tabelka.24. Koszt rozwiązania dopuszczalnego Uzyskaliśmy wynik 190. Porównując go z kosztem uzyskanym innymi metodami (pn.-zach. kąta lub najmniejszego el.) zauważymy, że wynik jest najlepszy. W odróżnieniu od metody pn. - zach. kąta w metodzie VAM bierzemy pod uwagę macierz kosztów. 27 Problem transportowy | Anna Tomkowska [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Koszalin 2006 1.5 Metoda e-perturbacji Metodę tą zastosujemy w momencie kiedy otrzymamy rozwiązanie dopuszczalne niezdegenerowane (dowolną z metod opisanych wcześniej). Nie wpływa ona na koszt rozwiązania dopuszczalnego - powoduje jedynie zwiększenie liczby elementów bazowych Przyjrzyjmy się rozwiązaniom dopuszczalnym otrzymanym metodami przedstawionymi wcześniej, tj: metodą pn.zach. kąta (Tabelka.1a.), najmniejszego elementu w macierzy kosztów (Tabelka.1b.) oraz VAM (Tabelka.1c.). Rozwiązanie otrzymane metodą pierwszą ma 8 elementów bazowych, metodą drugą i trzecią - 7, czyli matoda druga i trzecia dała nam rozwiązanie niezdegenerowane. Tabelka.1. Rozwiązanie dopuszczalne otrzymane metodą: a)pn.-zach. kąta; b) najmniejszego elementu; c) VAM Warunkiem rozwiązania zdegenerowanego jest liczba elementów bazowych (baz) równa m+n-1, gdzie: m - liczba odbiorców, n - liczba dostawców. Dla przedstawionego powyżej problemu transportowego baz tych powinno być 5+4-1 = 8. Taką liczbę baz otrzymaliśmy w metodzie pn.-zach. Kąta. Dla rozwiązania niezdegenerowanego nie jesteśmy w stanie zastosować metody potencjałów w celu sprawdzenia optymalności rozwiązania (metoda potencjałów zostanie wyjaśniona na następnej stronie. W celu pozbycia się niezdegenerowania rozwiązania stosujemy metodę e-perturbacji. Wygląda ona następująco (Tabelka.2.): 1. Do każdego odbiorcy dodajemy pomijalnie małą liczbę (nazwijmy ją eta) 2. Do ostatniego dostawcy dodajemy pomijalnie małą liczbę pomnożoną przez liczbę odbiorców (m*eta) 3. Rozwiązujemy zadanie transportowe od nowa wybraną metodą. Tabelka.2. Metody e-perturbacji. Anna Tomkowska | Problem transportowy 28 Koszalin 2006 [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Tabelka.3. Rozwiązanie metodą najmniejszego elementu stosując e-perturbację. 29 Problem transportowy | Anna Tomkowska [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Koszalin 2006 Powyżej został przedstawiony przykład zastosowania e-perturbacji w przypadku obliczeń metodą najmniejszego elementu macierzy kosztów. Po dodaniu liczby eta do wszystkich odbiorców i liczby m*eta do ostatniego dostawcy postępujemy identycznie jak zostało to opisane w metodzie najmniejszego elementu. W rezultacie otrzymaliśmy rozwiązanie dopuszczalne, zdegenerowane o liczbie baz = 8.Należy pamiętać, że liczba eta jest wartością pomijalnie małą. Może być - w zależności od danych użytych w zadaniu - liczbą na ósmym, dziesiątym czy setnym miejscu po przecinku (np. eta = 10E-10). Eta nie jest więc brana pod uwagę podczas wyliczania kosztu. Nasze rozwiązanie nadal ma ten sam koszt = 275. 1.6 Metoda potencjałów Metoda ta służy do sprawdzenia optymalności rozwiązania dopuszczalnego, zdegenerowanego otrzymanego w wyniku jednej z metod wcześniej opisanych lub przy pomocy cykli (opisanych nieco później). Po obliczeniu zadania przy pomocy jednej z opisanych wcześniej metod (pn.-zach. kąta, najmniejszego elementu lub VAM) oraz ewentualnym pozbyciu się niezdegenerowania uzyskanego rozwiązania metodą e-perturbacji możemy przystąpić do sprawdzenia czy nasze rozwiązanie dopuszczalne jest optymalnym (czy koszt jest wystarczająco niski). Posłużymy się w tym celu metodą potencjałów. Sprawdźmy czy uzyskane przez nas wcześniej metodą pn.-zach. kąta rozwiązanie dopuszczalne jest optymalne. Przypomnijmy sobie jak wyglądało to zadanie (Tabelka.1.a) i jego rozwiązanie dopuszczalne uzyskane metodą pn.zach. kąta (Tabelka.1.b) Tabelka.1. Zadanie transportowe (a)i jego rozwiązanie dopuszczalne uzyskane metodą pn.-zach. kąta (b) Na początek musimy przygotować sobie tabelkę na wyniki (Tabelka.2). Ma ona wymiar równy tabelce kosztów. Dodatkowo dostawiamy pusty wiersz u góry i pustą kolumnę na końcu, do których wpisywać będziemy obliczone potencjały (w wiersz - potencjały V, w kolumnę potencjały U). Wpisujemy w pierwszą komórkę pustej kolumny (w potencjały U) wartość U1=0. Następnie przepisujemy do tabelki koszty (z tabelki 1.a) ale tylko w miejscach odpowiadających pozycjom elementów bazowych w rozwiązaniu dopuszczalnym. Anna Tomkowska | Problem transportowy 30 Koszalin 2006 [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Tabelka.2. Tabelka na wyniki Teraz możemy przystąpić do obliczeń. Krok.1. Mamy na wejście ustawioną wartość potencjału U1 = 0, więc szukamy w wierszu odpowiadającym temu U1 (czyli w pierwszym wierszu) kosztu - jest nim koszt = 5 w pierwszej komórce. Następnie w potencjał V odpowiadający znalezionemu kosztowi (czyli V1) wpisujemy wartość równą różnicy kosztu i potencjału U1 (V1=5-0=5). (Tabelka.3.a) Krok.2.Ustawiliśmy wartość potencjału V1 = 5, więc szukamy w kolumnie odpowiadającej V1 (czyli w pierwszej kolumnie) kolejnego kosztu - jest nim koszt = 3 (wiersz 2, kolumna 1). Następnie w potencjał U odpowiadający znalezionemu kosztowi (czyli U2) wpisujemy wartość równą różnicy kosztu i potencjału V1 (U2=3-5=-2) (Tabelka.3.b). Poczym powtarzamy krok 1 i 2 aż do wyliczenia wszystkich potencjałów. Czyli kolejny krok: Ustawiliśmy U2 = -2 - szukamy w wierszu drugim kolejnego kosztu (takiego który nie ma jeszcze ustawionego potencjału V) - jest nim koszt = 1 (wiersz 2, kolumna 2). Następnie w potencjał V2 wpisujemy wartość równą różnicy kosztu i potencjału U2 (V2=1-(-2)=3) (Tabelka.3.c). Ustawiliśmy V2 = 3 - szukamy w kolumnie drugiej kolejnego kosztu (takiego który nie ma jeszcze ustawionego potencjału U) - jest nim koszt = 1 (wiersz 3, kolumna 2). Następnie w potencjał U3 wpisujemy wartość równą różnicy kosztu i potencjału V2 (U3=1-3=-2) (Tabelka.3.d). itd 31 Problem transportowy | Anna Tomkowska [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Koszalin 2006 Tabelka.3. Wyliczanie potencjałów U i V Anna Tomkowska | Problem transportowy 32 Koszalin 2006 [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Poniższa tabelka przedstawia już wyliczone potencjały U i V (Tabelka.4.) Tabelka.4. Wyliczone potencjały U i V Kolejnym krokiem jest wyliczenie kosztów pośrednich (Tabelka.5.). Należy pozostałe (puste) komórki tabelki z wynikami wypełnić sumami potencjału Vi i Uj, gdzie: i=1,2,..,n j=1,2,..,m n - liczba dostawców m - liczba odbiorców Tabelka.5. Wyliczanie kosztów pośrednich Następnie wyliczamy wskaźniki optymalności (Tabelka.7.). W tym celu zestawmy obok siebie dwie tabelki: tabelkę obliczonych przed chwilą kosztów pośrednich i tabelkę kosztów z początku zadania (Tabelka.6.) Tabelka.6. Tabelka kosztów pośrednich (a) i tabelka kosztów (b) Wskaźniki optymalności wyliczamy odejmując od kosztów pośrednich (Tabelka.6.a) koszty (Tabelka.6.b) 33 Problem transportowy | Anna Tomkowska [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Koszalin 2006 Tabelka.7. Wskażniki optymalności Przyjrzyjmy się teraz wyliczonym wskaźnikom. Jeżeli wśród nich znajdują się liczby dodatnie wówczas rozwiązanie nie jest rozwiązaniem optymalnym. Rozwiązanie jest więc optymalne kiedy wszystkie liczby są niedodatnie (ujemne lub zera). Wśród naszych wskaźników są wartości dodatnie - więc nasze rozwiązanie nie jest optymalne. W takim wypadku należy przekształcić rozwiązanie - zbudować cykl (o czym mowa na następnej stronie) - następnie ponownie sprawdzić optymalność rozwiązania metodą potencjałów - znowu zbudować cykl - sprawdzić optymalność - i tak postępować aż do momentu uzyskania niedodatnich wskaźników optymalności. 1.6.1 Budowa cyklu Budowanie cyklu służy uzyskaniu rozwiązania dopuszczalnego o niższym koszcie a w rezultacie rozwiązania optymalnego. Cykl jest niczym innym jak przeniesieniem części towaru lub całości z droższej trasy na tańszą. Przy czym zachowana jest równowaga, tzn: każdy odbiorca dostaje dokładnie tyle towaru ile zamówił. Czyli jeżeli odbiorcy (np. sklepowi 1) zabierzemy skrzynkę oranżady, która miała być dostarczona do niego od dostawcy (np producenta 1) bo trasa była za droga, to należy mu zapewnić tę skrzynkę od innego dostawcy od którego koszt drogi jest tańszy. Cykl składa się zawsze z półcyklu dodatniego i półcyklu ujemnego. Zobaczmy jak to działa na przykładzie. Aby stworzyć cykl trzeba mieć rozwiązanie dopuszczalne, które będziemy "polepszać" sprawdzone uprzednio metodą potencjałów. Niezbędna jest nam tabelka wskaźników optymalności z metody potencjałów. Przypomnnijmy ją sobie (Tabelka.1.) Anna Tomkowska | Problem transportowy 34 Koszalin 2006 [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Tabelka.1. Wskaźniki optymalności z metody potencjałów Wśród wskaźników szukamy największej wartości na plusie (Tabelka.2.) (jeżeli nie ma dodatnich wskaźników oznacza to, że rozwiązanie już jest optymalne - nie ma sensu wówczas tworzyć cyklu ) Tabelka.2. Wsk. optymalności. Wartość maksymalna na minusie = -6 Teraz potrzebna będzie nam tabelka z rozwiązaniem dopuszczalnym (pracujemy na rozw. uzyskanym metodą pn. zach. kąta), na którą nanosić będziemy cykl. Zaznaczamy w tabelce znaczkiem "+" pierwszy element cyklu dodatniego, który zawsze znajduje się w miejscu odpowiadającym największemu dodatniemu wskaźnikowi w tabelce wskaźników (Tabelka.3.). Oznacza to, że w to miejsce opłaca się przenieść towar z innych elementów bazowych. Tabelka.3. Rozw. dopuszczalne. Naniesiony I element półcyklu dodatniego Stajemy na komórce z zaznaczonym plusem i od tego miejsca tworzymy cykl w następujący sposób: Poruszamy się tylko po elementach bazowych (dodatnich). Mamy już element półcyklu dodatniego więc należy teraz stworzyć element półcyklu ujemnego. Szukamy w wierszu, w którym stoimy elementu bazowego, takiego który z kolei będzie miał element bazowy w kolumnie. Jest nim element o wartości 35 - zaznaczamy go znaczkiem "-" (Tabelka.4.). 35 Problem transportowy | Anna Tomkowska [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Koszalin 2006 Tabelka.4. Rozw. dopuszczalne. Naniesiony I element półcyklu ujemnego Mając element półcyklu ujemnego tworzymy kolejny element półcyklu dodatniego. Stoimy na komórce stworzonego elementu półcyklu ujemnego. Szukamy w kolumnie, w której stoimy elementu bazowego, który jednocześnie ma element bazowy w wierszu. Jest nim element o wartości 5 - zaznaczamy go znaczkiem "+" (Tabelka.5.). Tabelka.5. Rozw. dopuszczalne. Naniesiony II element półcyklu dodatniego Stworzywszy element półcyklu dodatniego tworzymy kolejny element półcyklu ujemnego. Stoimy na komórce stworzonego elementu półcyklu dodatniego. Szukamy w wierszu, w której stoimy elementu bazowego, który jednocześnie ma element bazowy w kolumnie. Jest nim element o wartości 5 - zaznaczamy go znaczkiem "-" (Tabelka.6.). Tabelka.6. Rozw. dopuszczalne. Naniesiony II element półcyklu ujemnego W ten sposób dodajemy na zmianę element półcyklu dodatniego i ujemnego do momentu zamknięcia się cyklu (Tabelka.7.). Anna Tomkowska | Problem transportowy 36 Koszalin 2006 [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Tabelka.7. Kolejne kroki tworzenia cyklu Mamy stworzony cykl. Należy teraz znaleźć wartość minimalną wśród elementów cyklu ujemnego - poczym odjąć tą wartość od wszystkich elementów cyklu ujemnego oraz dodać do wszystkich elementów cyklu dadatniego. Elementami cyklu ujemnego są: 35, 5, 25, 10. Najmniejszą spośród nich jest 5 i tę liczbę odejmujemy od elementów cyklu ujemnego i dodajemy do elementów cyklu dodatniego. W wyniku czego otrzymujemy nowe rozwiązanie dopuszczalne (Tabelka.8.). Tabelka.8. Nowe rozwiązanie dopuszczalne Procedura cyklu spowodowała, że doszła nam jedna nowa baza (wiersz 5, kolumna 1), oraz jedna nam odeszła (wiersz 4, kolumna 3). Stąd nadal mamy 8 elementów bazowych - rozwiązanie jest zdegenerowane. Obliczmy koszt nowego rozwiązania dopuszczalnego i porównajmy ze starym (stary koszt = 360) 37 Problem transportowy | Anna Tomkowska [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Koszalin 2006 Tabelka.9. Koszt nowego rozw. dopuszczalnego Uzyskaliśmy niższy koszt - rozwiązanie jest lepsze. Pozostało teraz sprawdzić metodą potencjałów optymalność rozwiązania i powtórzyć procedurę jeżeli rozwiązanie nie jest optymalne. Kilka uwag do tworzenia cyklu 1. Na półcykl dodatni (ujemny) składają się minimum 2 elementy a maksymalnie (m+n-1)/2 elementów. Stąd cały cykl ma min 4 elementy (2 dodatnie i 2 ujemne) a maksymalnie m+n-1. 2. W jednym wierszu (kolumnie) może być 0 lub 2 elementy półcyklu (półcykl dodatni i ujemny) 3. Gdy zdarzy się, że będzie kilka takich samych wartości minimum w cyklu ujemnym i odejdzie nam więcej niż jeden element bazowy należy je przywrócić z powrotem. Pozbywamy sie tylko jednej bazy (tej o najwyższym koszcie) natomiast pozostałym wyzerowanym bazom nadajemy pomijalnie małą wartość eta (np: eta = 10E-10). W ten sposób zawsze mamy rozwiązanie zdegenerowane. Przykład takiego postępowania można zobaczyć na nastęnej stronie (Dokończenie zadania). 1.6.2 Dokończenie zadania Punkt Problem transportowy oraz wszystkie jego podpunkty są kontynuacją obliczania pewnego zagadnienia transportowego, które w tym punkcie ostatecznie rozwiążemy. Przypomnijmy co do tej pory wyliczyliśmy. Anna Tomkowska | Problem transportowy 38 Koszalin 2006 [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Oto nasz problem: Tabelka.1. Zagadnienie transportowe - dane Uzyskaliśmy rozwiązanie dopuszczalne trzema metodami: pn.-zach. kąta, najmniejszego elementu, VAM. Przy czym tylko metodą pn.-zach. kąta uzyskaliśmy rozwiązanie zdegenerowane. Tabelka.2. Rozwiązanie dopuszczalne otrzymane metodą: najmniejszego elementu; c) VAM a)pn.-zach. kąta; b) Następnie dowiedliśmy metodą potencjałów, że rozwiązanie dopuszczalne uzyskane metodą pn.-zach. kąta nie jest rozwiązaniem dopuszczalnym. Dlatego stworzyliśmy dla niego cykl i otrzymaliśmy nowe rozwiązanie dopuszczalne: Tabelka.3. Drugie rozwiązanie dopuszczalne Nowy koszt: 315 koszt się zmniejszył Sprawdzamy optymalność rozwiązania metodą potencjałów: 39 Problem transportowy | Anna Tomkowska [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Koszalin 2006 Tabelka.4. Koszty pośrednie (a) i wskaźniki optymalności (b) Nie wszystkie wskaźniki są niedotatnie - rozwiązanie nie jest optymalne Maksymalna wartość wskaźnika to 4. Figurują dwa takie same minima - wybieramy te o mniejszej wartości kosztu w macierzy koszytów Tworzymy cykl: Tabelka.5. Cykl (a) i nowe rozw. dopuszczalne (b) Nowy koszt: 295 koszt się zmniejszył Sprawdzamy optymalność rozwiązania metodą potencjałów: Tabelka.6. Koszty pośrednie (a) i wskaźniki optymalności (b) Nie wszystkie wskaźniki są nie dodatnie - rozwiązanie nie jest optymalne Maksymalna wartość wskaźnika to 7 - od niego zaczynamy tworzyć cykl. Tworzymy cykl: Tabelka.7. Cykl (a) i nowe rozw. dopuszczalne (b) Anna Tomkowska | Problem transportowy 40 Koszalin 2006 [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Z bazy odeszły dwa elementy, jeden o niższym koszcie należy przywrócić - nadając jej wartość eta Nowy koszt: 225 koszt się zmniejszył Sprawdzamy optymalność rozwiązania metodą potencjałów: Tabelka.8. Koszty pośrednie (a) i wskaźniki optymalności (b) Nie wszystkie wskaźniki są niedotatnie - rozwiązanie nie jest optymalne Maksymalna wartość wskaźnika to 3. Figurują dwa takie same minima - wybieramy te o mniejszej wartości kosztu w macierzy koszytów Tworzymy cykl: Tabelka.9. Cykl (a) i nowe rozw. dopuszczalne (b) Nowy koszt: 180 koszt się zmniejszył Sprawdzamy optymalność rozwiązania metodą potencjałów: Tabelka.10. Koszty pośrednie (a) i wskaźniki optymalności (b) Nie wszystkie wskaźniki są nie dodatnie - rozwiązanie nie jest optymalne Maksymalna wartość wskaźnika to 1. Figurują dwa takie same minima - wybieramy te o mniejszej wartości kosztu w macierzy kosztów 41 Problem transportowy | Anna Tomkowska [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Koszalin 2006 Tworzymy cykl: Tabelka.11. Cykl (a) i nowe rozw. dopuszczalne (b) Nowy koszt: 180 koszt nie uległ zmianie (przesunięcie eta) Sprawdzamy optymalność rozwiązania metodą potencjałów: Tabelka.12. Koszty pośrednie (a) i wskaźniki optymalności (b) Nie wszystkie wskaźniki są nie dotatnie - rozwiązanie nie jest optymalne Maksymalna wartość wskaźnika to 1. Tworzymy cykl: Tabelka.13. Cykl (a) i nowe rozw. dopuszczalne (b) Nowy koszt: 180 koszt nie uległ zmianie (przesunięcie eta) Sprawdzamy optymalność rozwiązania metodą potencjałów: Tabelka.14. Koszty pośrednie (a) i wskaźniki optymalności (b) Anna Tomkowska | Problem transportowy 42 Koszalin 2006 [BADANIA OPERACYJNE – PROGRAMOWANIE LINIOWE] Wszystkie wskaźniki są nie dodatnie - rozwiązanie jest optymalne Tabelka.15. Rozwiązanie optymalne Koszt rozwiązania optymalnego: 180 43 Problem transportowy | Anna Tomkowska