Algorytm transportowy
Przykład Trzy kopalnie położone w różnych miastach zaopatrują w węgiel pięć elektrociepłowni na terenie kraju. Każda z kopalń K1, K2, K3 ma określoną zdolność produkcyjną: odpowiednio 100, 200, 50 jednostek produkcji (np. wagonów węgla) w jednostce czasu. Zapotrzebowanie elektrociepłowni E1, E2, E3, E4, E5 na węgiel w jednostce czasu wynosi odpowiednio: 120, 45, 70, 45, 45 jednostek. Koszt transportu 1 jednostki węgla z poszczególnych kopalń do odpowiednich elektrociepłowni przedstawia tablica 1. Wyznaczyć wielkości dostaw z poszczególnych kopalń do poszczególnych elektrociepłowni, tak aby koszt transportu był najniższy i aby jednocześnie spełnione były warunki: 1. Zdolności produkcyjne poszczególnych kopalń nie mogą być przekroczone 2. Elektrociepłownie muszą mieć pokryte zapotrzebowanie
Tablica 1 E1 E2 E3 E4 E5 K1 2 5 3 4 8 K2 1 9 10 K3 6 7
xij – rozmiar dostaw z kopalni Ki do elektrociepłowni Ej Budowa modelu E1 E2 E3 E4 E5 ZP K1 ? 100 K2 200 K3 50 Zap. 120 45 70 xij – rozmiar dostaw z kopalni Ki do elektrociepłowni Ej
W modelu występuje 15 zmiennych decyzyjnych. Zadanie sprowadza się do takiego wyznaczenia zmiennych xij aby wszystkie warunki były spełnione, a jednocześnie koszty transportu były najniższe. Łączne koszty transportu wyniosą:
Zadanie posiada rozwiązanie jeśli suma zdolności produkcyjnych kopalń jest większa lub równa od sumy zapotrzebowań elektrociepłowni. Warunek ten jest spełniony ponieważ: 350 > 325
Rozwiązywanie problemu rozpoczynamy od zaproponowania rozwiązania początkowego spełniającego warunki: 1. Zapotrzebowanie elektrociepłowni musi być pokryte 2. Zdolności produkcyjne kopalń nie mogą być przekroczone Rozwiązanie takie wyznaczamy stosując tzw. Regułę kąta północno-zachodniego (K1E1 - wprowadzając w to pole możliwie największą wartość, w tym konkretnym przypadku będzie to wartość 100 - jest to minimum ze zdolności produkcyjnej kopalni K1 oraz z zapotrzebowania elektrociepłowni E1). W ten sposób zdolność produkcyjna kopalni K1 została wyczerpana.
T1 E1 E2 E3 E4 E5 S ZP K1 100 K2 200 K3 50 Zap. 120 45 70 100 20 45 70 45 20 25 25
Brakującą ilość węgla potrzebną elektrociepłowni E1 (20 jednostek) musimy dostarczyć z kopalni K2. Kopalnia ta może ponadto pokryć zapotrzebowanie dla E2, E3, E4 i częściowo dla E5, której zapotrzebowanie uzupełni kopalnia K3 w ilości 25 jednostek. Kopalnia ta wykorzystała w ten sposób 25 z 50 jednostek swojej zdolności produkcyjnej. Pozostałe 25 jednostek wpisujemy w kolumnę S. Uwaga! Kratki w których dokonujemy rozdziału muszą do siebie przylegać bokami. Koszt transportu przy takim rozdziale dostaw wyniesie:
Rozpatrzmy jakie konsekwencje przyniesie zmiana w dystrybucji węgla jeżeli z K1E1 przeniesiemy jedną jednostkę do K1E2 i jaki to będzie miało wpływ na koszty: E1 E2 E3 E4 E5 S ZP K1 2 5 3 4 8 100 K2 1 9 10 200 K3 6 7 50 Zap. 120 45 70 25 K1E2 +5 K1E1 -2 2 5 100 101 K2E1 +1 1 9 201 200 K2E2 -9 -5 120 119 46 45
E1 E2 E3 E4 E5 S ZP K1 100 K2 200 K3 50 Zap. 120 45 70 25 100 -5 20 45 70 45 20 25 25
K1E3 +3 K1E1 -2 K2E1 +1 K2E3 -4 -2 E1 E2 E3 E4 E5 S ZP K1 2 5 3 4 8 100 K2 1 9 10 200 K3 6 7 50 Zap. 120 45 70 25 K1E3 +3 K1E1 -2 2 3 101 100 K2E1 +1 1 4 201 200 K2E3 -4 -2 120 119 71 70
E1 E2 E3 E4 E5 S ZP K1 100 K2 200 K3 50 Zap. 120 45 70 25 100 -5 -2 20 45 70 45 20 25 25
K1E4 +4 K1E1 -2 K2E1 +1 K2E4 -5 -2 E1 E2 E3 E4 E5 S ZP K1 2 5 3 4 8 100 K2 1 9 10 200 K3 6 7 50 Zap. 120 45 70 25 K1E4 +4 K1E1 -2 2 4 101 100 K2E1 +1 1 5 201 200 K2E4 -5 -2 120 119 46 45
E1 E2 E3 E4 E5 S ZP K1 100 K2 200 K3 50 Zap. 120 45 70 25 100 -5 -2 -2 20 45 70 45 20 25 25
K1E5 +8 K1E1 -2 K2E1 +1 K2E5 -10 -3 E1 E2 E3 E4 E5 S ZP K1 2 5 3 4 8 100 K2 1 9 10 200 K3 6 7 50 Zap. 120 45 70 25 K1E5 +8 K1E1 -2 2 8 101 100 K2E1 +1 1 10 201 200 K2E5 -10 -3 120 119 46 45
E1 E2 E3 E4 E5 S ZP K1 100 K2 200 K3 50 Zap. 120 45 70 25 100 -5 -2 -2 -3 20 45 70 45 20 25 25
K1S +0 K1E1 -2 K2E1 +1 K2E5 -10 K3E5 +4 K3S -0 -7 E1 E2 E3 E4 E5 S ZP 8 100 K2 1 9 10 200 K3 6 7 50 Zap. 120 45 70 25 K1S +0 K1E1 -2 2 101 100 K2E1 +1 1 10 200 201 K2E5 -10 K3E5 +4 4 50 51 K3S -0 119 120 44 45 25 26 -7
E1 E2 E3 E4 E5 S ZP K1 100 K2 200 K3 50 Zap. 120 45 70 25 100 -5 -2 -2 -3 -7 20 45 70 45 20 25 25
K2S +0 K2E5 -10 K3E5 +4 K3S -0 -6 E1 E2 E3 E4 E5 S ZP K1 2 5 3 4 8 100 9 10 200 K3 6 7 50 Zap. 120 45 70 25 K2S +0 K2E5 -10 K3E5 +4 10 200 201 K3S -0 -6 4 50 51 44 45 26 25
E1 E2 E3 E4 E5 S ZP K1 100 K2 200 K3 50 Zap. 120 45 70 25 100 -5 -2 -2 -3 -7 20 45 70 45 20 -6 25 25
K3E1 +5 K3E5 -4 K2E5 +10 K2E1 -1 +10 E1 E2 E3 E4 E5 S ZP K1 2 5 3 4 8 100 K2 1 9 10 200 K3 6 7 50 Zap. 120 45 70 25 K3E1 +5 K3E5 -4 K2E5 +10 1 10 200 201 K2E1 -1 +10 5 4 51 50 120 121 44 45
E1 E2 E3 E4 E5 S ZP K1 100 K2 200 K3 50 Zap. 120 45 70 25 100 -5 -2 -2 -3 -7 20 45 70 45 20 -6 25 25 +10
K3E2 +6 K3E5 -4 K2E5 +10 K2E2 -9 +3 E1 E2 E3 E4 E5 S ZP K1 2 5 3 4 8 100 K2 1 9 10 200 K3 6 7 50 Zap. 120 45 70 25 K3E2 +6 K3E5 -4 K2E5 +10 9 10 200 201 K2E2 -9 +3 6 4 51 50 45 46 44 45
E1 E2 E3 E4 E5 S ZP K1 100 K2 200 K3 50 Zap. 120 45 70 25 100 -5 -2 -2 -3 -7 20 45 70 45 20 -6 25 25 +10 +3
K3E3 +1 K3E5 -4 K2E5 +10 K2E3 -4 +3 E1 E2 E3 E4 E5 S ZP K1 2 5 3 4 8 100 K2 1 9 10 200 K3 6 7 50 Zap. 120 45 70 25 K3E3 +1 K3E5 -4 K2E5 +10 4 10 200 201 K2E3 -4 +3 1 4 51 50 70 71 44 45
E1 E2 E3 E4 E5 S ZP K1 100 K2 200 K3 50 Zap. 120 45 70 25 100 -5 -2 -2 -3 -7 20 45 70 45 20 -6 25 25 +10 +3 +3
K3E4 +7 K3E5 -4 K2E5 +10 K2E4 -5 +8 E1 E2 E3 E4 E5 S ZP K1 2 5 3 4 8 100 K2 1 9 10 200 K3 6 7 50 Zap. 120 45 70 25 K3E4 +7 K3E5 -4 K2E5 +10 5 10 200 201 K2E4 -5 +8 7 4 51 50 45 46 44 45
E1 E2 E3 E4 E5 S ZP K1 100 K2 200 K3 50 Zap. 120 45 70 25 100 -5 -2 -2 -3 -7 20 45 70 45 20 -6 25 25 +10 +3 +3 +8
Alternatywą najkorzystniejszą jest K1S zmieniająca koszt o 7. Naszym celem jest umieszczenie w polu K1S maksymalnej ilości ładunku. Ilość ta, to najmniejsza z wartości pól w których odejmowaliśmy podczas sprawdzania najkorzystniejszej alternatywy. K1S +0 E1 E2 E3 E4 E5 S ZP K1 100 K2 200 K3 50 Zap. 120 45 70 K1E1 -2 100 K2E1 +1 -5 -2 -2 -3 -7 K2E5 -10 20 45 70 45 20 -6 K3E5 +4 25 25 K3S -0 +10 +3 +3 +8 -7 Maksymalna ilość ładunku, którą możemy przenieść do K1S znajduje się w polu K2E5 i wynosi 20.
Wartość 20 przenosimy do K1S i dokonujemy w związku z tym odpowiednich zmian w wierzchołkach wieloboku wybranej alternatywy. T2 E1 E2 E3 E4 E5 S ZP K1 20 100 K2 200 K3 50 Zap. 120 45 70 25 80 40 45 70 45 45 5
Po kolejnym obliczeniu alternatyw otrzymujemy: S ZP K1 20 100 K2 200 K3 50 Zap. 120 45 70 K1E2: 0 (+) K1E1: 80 (-) 80 -5 -2 -2 +4 K2E1: 40 (+) 40 45 70 45 K2E2: 45 (-) +7 -6 45 5 +3 -4 -4 +1 Najkorzystniejszą alternatywą jest K1E2 (-5), dlatego w to pole będziemy starać się przenieść maksymalną liczbę ładunku. Liczba ta to 45.
K1E2 +5 K1E3 +3 K1E4 +4 K1E5 +8 K2E5 +0 K2E2 -9 K2E3 -4 K2E4 -5 K3E5 -4 K2E1 -1 K2E1 +1 K2E1 +1 K2E1 +1 K3S +0 K1E1 +2 K1E1 -2 K1E1 -2 K1E1 -2 K1S -0 K1S -0 K3S +0 -5 -2 -2 +4 K3E5 -4 7 K2S +0 K3E1 +5 K3E2 +6 K2E3 +1 K3E4 +7 K2E1 -1 K3S -0 K3S -0 K3S -0 K3S -0 K1E1 +2 K1S +0 K1S +0 K1S +0 K1S +0 K1S -0 K1E1 -2 K1E1 -2 K1E1 -2 K1E1 -2 K2E1 +1 K2E1 +1 K2E1 +1 -1 3 K2E2 -9 K2E3 -4 K2E4 -5 -4 -4 1
Korygujemy wielobok zmian i przeliczamy alternatywy: S ZP K1 35 45 20 100 K2 200 K3 50 Zap. 120 70 25 K3E3: 0 (+) K3S: 5 (-) -2 -2 K1S: 20 (+) 85 70 45 K1E1: 35 (-) 5 +7 -1 45 5 K2E1: 85 (+) +3 -1 -4 +1 K2E3: 70 (-) Najkorzystniejszą alternatywą jest K3E3 (-4), dlatego w to pole będziemy starać się przenieść maksymalną liczbę ładunku. Liczba ta to 5.
Korygujemy wielobok zmian i przeliczamy alternatywy: S ZP K1 30 45 25 100 K2 90 65 200 K3 5 50 Zap. 120 70 K1E4: 0 (+) K1E1: 30 (-) -2 -2 K2E1: 90 (+) 45 K2E4: 45 (-) 5 +3 +1 45 +7 +5 +5 +4 Na tym etapie mamy dwie jednakowo korzystne alternatywy (K1E3 oraz K1E4). Możemy wybrać którąkolwiek z nich, np. K1E4.
Korygujemy wielobok zmian i przeliczamy alternatywy: S ZP K1 45 30 25 100 K2 120 65 200 K3 5 50 Zap. 70 K2S: 0 (+) K1S: 25 (-) +2 +2 K1E4: 90 (+) 15 K2E4: 15 (-) +3 +3 -1 45 +7 +3 +5 +2 Wybieramy alternatywę K2S
Korygujemy wielobok zmian i przeliczamy alternatywy: S ZP K1 45 10 100 K2 120 65 15 200 K3 5 50 Zap. 70 25 K1E3: 0 (+) K2E3: 65 (-) +1 -1 +1 K2S: 15 (+) K1S: 10 (-) +4 +1 +3 45 +7 +3 +6 +3 Wybieramy alternatywę K1E3
Korygujemy wielobok zmian i przeliczamy alternatywy: S ZP K1 45 10 100 K2 120 55 25 200 K3 5 50 Zap. 70 K2E4: 0 (+) K1E4: 45 (-) +2 +2 +1 K1E3: 10 (+) K2E3: 55 (-) +3 +3 45 +7 +3 +5 +3 Wybieramy alternatywę K2E4
Korygujemy wielobok zmian i przeliczamy alternatywy: S ZP K1 45 55 100 K2 120 10 25 200 K3 5 50 Zap. 70 +2 +2 +1 +3 +3 45 +7 +3 +5 +3 Najkorzystniejszą alternatywą jest K1E4, jednak tak jak poprzednio nie obniży to już kosztów transportu w stosunku do poprzedniego rozwiązania.
Wniosek: Jak wynika z obliczeń, najkorzystniejszy będzie sposób dystrybucji węgla z kopalń do elektrociepłowni przedstawiony w T7 lub T8. Zapewnia on najniższy koszt sieci transportowej wynoszący 960zł.