ZAGADNIENIE TRANSPORTOWE

ZT.1. Zagadnienie transportowe w postaci tablicy Z m punktów (odpowiednio A1,...,Am) wysyłamy jednorodny produkt w ilościach a1,...,am do n punktów odbioru (odpowiednio B1,...,Bn), gdzie jest odbierany w ilościach b1,...,bn. Dostawcami mogą być na przykład zakłady produkcyjne, punkty odprawy, hurtownie, magazyny, itp. Odbiorcami sklepy, hurtownie, inne punkty popytu na towar. Niech między każdym i-tym dostawcą, a każdym j-tym odbiorcą istnieje bezpośrednie połączenie transportowe oraz są znane koszty transportowe jednostki produktu cij w postaci pewnych liczb wymiernych (i=1,..,m; j=1,..,n). W praktyce można zakładać, że wszystkie wartości ai, bj, cij są liczbami całkowitymi. Można to zawsze osiągnąć poprzez dobór odpowiedniej skali mierzenia. Zagadnienie transportowe polega na ustaleniu takich ilości przewozu towarów od dostawców do odbiorców, aby zostało zaspokojone zapotrzebowanie wszystkich odbiorców oraz - aby sumaryczny koszt transportu był minimalny. Ilości przewożonych towarów od dostawców do odbiorców tworzą tak zwany plan przewozu. Aby rozwiązać zagadnienie transportowe (ZT) trzeba znaleźć taki plan przewozu, dla którego sumaryczny koszt transportu jest minimalny. Wszystkie dane wejściowe możemy prezentować w postaci tablicy transportowej: B1

B2

.....

....

Bn

b1

b2

.....

....

bn

Odbiorcy

Dostawcy A1

a1 c11

c12





c1n

A2

a2 c21

c22





c2n

...

... …









...

... …









Am

am cm1

cm2





cmn

W standardowej postaci ZT – postać tę będziemy nazywali zamkniętym zagadnieniem transportowym (ZZT) - przyjmujemy ograniczenie, że sumaryczna podaż jest równa sumarycznemu popytowi – spełniony jest tak zwany warunek bilansu: m

n

i 1

j 1

 ai   b j

.

Gdy ZT jest otwarte, to bilans nie jest spełniony. Mogą zajść dwa przypadki: a) b)

m

n

i 1

j 1

m

n

i 1

j 1

 ai   b j  ai   b j

Aby przekształcić otwarty model do zamkniętego i korzystać dalej ze standardowych metod rozwiązywania ZT stosujemy następującą metodę przekształceń otwartego ZT na zamknięty. W przypadku a) wprowadzamy do tablicy transportowej dodatkowego n

m

j 1

i 1

fikcyjnego dostawcę Am+1, który dysponuje a m1   b j   ai jednostkami towaru, przy czym koszty transportu jednostek takiego towaru do odbiorców są zerami, tzn. cm+1,j = 0, j=1,...,n. Tym samym otrzymujemy zamknięte ZT. W przypadku b) dodajemy fikcyjnego odbiorcę Bn+1 oraz postępujemy analogicznie jak w przypadku a). Przy budowaniu modelu matematycznego ZT wprowadzamy zmienne xij, i=1,...,m; j=1,...,n, które oznaczają ilość towaru transportowanego od i-tego dostawcy do j-tego odbiorcy. Jeżeli xij oznacza ilość produktu wysłanego z punktu Ai do punktu Bj to model matematyczny zamkniętego zagadnienia transportowego można zapisać w postaci: wyznacz wartości xij , i=1,...,m; j=1,...,n, dla których funkcja

m n

z    cij xij i 1 j 1

przyjmuje

wartość najmniejszą, przy ograniczeniach: n

1.

x j 1

ij

 ai , i=1,...,m; (równanie oznacza, że cały towar musi być wywieziony od

wszystkich dostawców);

m

2.

x i 1

ij

j=1,...n; (zapotrzebowanie wszystkich odbiorców musi być

 bj ,

zaspokojone); 3.

xij  0 .

Analizując sformułowane ZT w postaci modelu matematycznego widzimy, że w tym modelu wszystkie ograniczenia oraz funkcja celu mają potęgę jeden, tzn. ogólnie rzecz biorąc ZT jest szczególnym przypadkiem ZPL – moglibyśmy rozwiązywać to zagadnienie metodą simpleksową. Ale istnieją znacznie efektywniejsze metody rozwiązania ZT. Twierdzenie ZT.1. Zagadnienie transportowe (ZT) ma co najmniej jedno rozwiązanie dopuszczalne. Takim rozwiązaniem mogą być wartości xij=

ai b j  ai i



ai b j bj

. Ten fakt można sprawdzić

j

podstawiając wskazane wartości bezpośrednio do modelu matematycznego: dla każdego i=1,...,m mamy ai  b j 1 j  xij =   ai , ,   aib j  j 1  a j 1 j a a   i i i n

n

ai b j i

i

ale

z

założenia

n

 xij

j 1

= ai .

Postępując

i

analogicznie z popytem na towar widzimy, że twierdzenie jest spełnione.

Twierdzenie ZT.2. Minimalne rozwiązanie dopuszczalne ZT wymaga co najwyżej m+n-1 dodatnich wartości xij. Takie rozwiązania nazwano bazowymi. Nie będziemy przeprowadzać tu dowodu twierdzenia, skupimy się na jego interpretacji. Twierdzenie 2 oznacza, że optymalnego rozwiązania można szukać tylko pośród dopuszczalnych rozwiązań bazowych. Ten fakt istotnie zmniejsza ilość możliwych wariantów rozwiązań. Niech, dla przykładu mamy m=8 i n=10. Mamy 80 niewiadomych, 80 komórek macierzy transportowej do wypełnienia. Okazuje się (z twierdzenia wyżej), że nie we wszystkich komórkach są rozwiązania dodatnie.

Dodatnie przewozy mogą być tylko w m+n-1 komórkach bazowych (będzie ich 8+10-1=17), a w pozostałych (80-17=63) są zera. Na tej podstawie zbudowano kilka algorytmów rozwiązania ZT. Każda z tych metod realizuje następujący schemat rozwiązania: - najpierw budowane jest początkowe bazowe rozwiązanie; - dalej sprawdza się, czy jest ono rozwiązaniem optymalnym; - jeśli nie jest rozwiązaniem optymalnym, to buduje się nowe rozwiązanie bazowe, które nieznacznie różni się od poprzedniego i znów sprawdza się, czy jest ono rozwiązaniem optymalnym; - w ten sposób, po skończonej ilości kroków, otrzymamy rozwiązanie optymalne. Dla budowania początkowego bazowego rozwiązania istnieje kilka sposobów. Najprostszy z nich korzysta z zasady kąta północno-zachodniego.

........

Metoda polega na operacjach: dla północno-zachodniej kratki w jeszcze nie wypełnionej części tablicy transportowej ustalamy wartość przewozu towaru jako minimum pomiędzy aktualną podażą i popytem dla tej kratki. Dalej aktualizujemy tę podaż i popyt odejmując od tych wartości wartość obliczonego minimum. Wiersz lub kolumnę tabeli, w której otrzymaliśmy po aktualizacji zero wypełniamy zerowymi przewozami. Dla pozostałej, jeszcze nie wypełnionej części tablicy powtarzamy procedurę. Jeśli przy aktualizacji podaży i popytu otrzymamy zero w wierszu i w kolumnie to tylko jedno z tych zer (dowolne) uważa się za zero zwykłe, drugie 0 podkreślamy

jako 0 aktywne i trzeba je uwzględnić w kolejnym kroku ustalenia wartości przewozów. W taki sposób zawsze znajdziemy bazowe rozwiązanie dopuszczalne zawierające m+n-1 kratek bazowych (ewentualnie razem z kratkami zawierającymi 0). Przykłady Odbiorca 1

2

3

4

dostawca 80 120 70 70 1 100

80 20

2 50

50

3 70

50 20

4 120

50 70

m+n-1=4+4-1=7 Odbiorca 1

2

3

4

dostawca 110 90 100 200 1 80

80

2 120 0 30 90 0 3 200

100 100

4 100

100

Istnieje kilka metod rozwiązania ZT. Będziemy korzystali z tzw. metody potencjałów. Niech dane będzie początkowe bazowe rozwiązanie dopuszczalne. Dla takiego rozwiązania obliczamy takie wartości ui, i=1,m oraz vj, j=1,n, dla których we wszystkich kratkach bazowych spełnione są równania ui+vj=cij. Równań takich mamy m+n-1 oraz m+n zmiennych niewiadomych ui, vj, tzn. że mamy nieokreślony układ równań. Do rozwiązania takiego układu wystarczy jednej z niewiadomych przypisać określoną wartość. Wtedy pozostałe wartości niewiadomych zostaną łatwo jednoznacznie określone. Znalezione wartości ui, vj, dla wszystkich wierszy i kolumn nazywamy potencjałami. Obliczamy Δij= (ui+vj)-cij dla wszystkich kratek niebazowych. Zostało udowodnione następujące kryterium optymalności: jeśli w tabeli transportowej dla istniejącego

rozwiązania bazowego wszystkie Δij są mniejsze bądź równe zero to wyznaczony plan bazowy transportu towarów jest planem optymalnym. Tym samym otrzymujemy rozwiązanie ZT. Jeśli kryterium optymalności nie jest spełnione budujemy nowy plan bazowy, dla którego wartość funkcji celu jest mniejsza od wartości funkcji celu poprzedniego planu bazowego. W tym celu spośród Δij>0 wybieramy max Δij i niech tej wartości odpowiada np. kratka (s,t). Zaznaczona kratka i niektóre z istniejących kratek bazowych tworzą w tabeli transportowej tzw. cykl rozładowania. Taki cykl jest ciągiem kratek bazowych poczynając od (s,t), przy czym każde przejście między tymi kratkami (poziome lub pionowe) zawiera kratki bazowe i ostatnim przejściem jest przejście do (s,t). Kratkom tego cyklu przypisujemy numery 1,2,... i określamy wartość λ=minxij dla kratek cyklu o numerach parzystych. Obliczamy nowe wartości przewozów w kratkach cyklu dodając λ do wartości przewozów w kratkach cyklu o numerach nieparzystych i odejmując λ od wartości przewozów w kratkach o numerach parzystych. Przy takim odejmowaniu otrzymujemy co najmniej jedną kratkę o zerowej wartości przewozu. Taką kratkę eliminujemy ze zbioru kratek starej bazy i otrzymujemy nowy bazowy plan przewozów. Jeżeli przy odejmowaniu λ otrzymamy więcej niż jedną kratkę bazową zerową to tylko jedno z tych nowych zer uważamy za zwykłe, a pozostałe dowolne zera podkreślamy – będą to zera bazowe. Dla nowego planu bazowego obliczamy potencjały, sprawdzamy kryterium optymalności. Po skończonej ilości kroków otrzymamy rozwiązanie optymalne dla ZT.

Przykład: (pogrubione fragmenty to wyjściowa tablica ZT) 90

120

150

170

100

2 90

4 10

5 0

3 0

U1=0

80

7

0

1

80

2 0

5

0

U2=-3

50

4

0

6

30 7 20 2

0

U3=2

200

7

0

8

0

70

U4=-3

2

1

130 100

0

0

0

V1=2

0

V2=4

0

0 0

100 U5=-4

V3=5 V4=4

Uwagi: suma ai=4300. Plan transportu nie jest optymalny.

5. Kładziemy * w klatce o największej dodatniej  ij

1

2

40

3

4

3

0

2

2

u1=0

0

u2=1

60

u3=1

0

40 2

0

0

0

0

40 *

0

4

20

1

40

v1=1 v2=2 v3=1 v4=0 6. Tworzymy „cykl” po klatkach bazowych zaczynając go i kończąc w klatce * 1

2

40 4

0

3

4

20 3

0 * 0

2

40 2

u1=0

0

u2=1

60

u3=1

0

40 2

0

0

0 1

40

v1=1 v2=2 v3=1 v4=0 (3,1)(1,1)(1,2)(2,2)(2,3)(3,3) Numerujemy wybrane do cyklu klatki od jedynki {lub plusa} (3,1) 1

(1,1) 2

(1,2) 3

(2,2) 4

(2,3) 5

(3,3) 6

+

-

+

-

+

-

7. Obliczamy minimum  z wartości xij w klatkach o numerach parzystych  =min(x11,x22,x33)  =min(40,40,40)=40

8 „Przesuwamy”  w klatkach cyklu {mogą powstać ZERA BAZOWE} 1

2

40-40 4

0

3

20+40 3

0 * 0+40

v1=1

4

0 2

40-40 2

0

u1=0

0

u2=1 u3=1

0

40+40 2

1

0

40-40

60

v2=2

v3=1

v4=0

9. Wracamy do 2 i powtarzamy procedurę. m+n-1=6

1

2

0

3

60

4

3

0

2

0

0

2

40

4

0

u1=0

0

u2=

60

u3=

0 0

80 2

0

1

0

v1= v2= v3= v4= f1=340. METODA POTENCJAŁU 1

2

0 4

3

60 3

0 0

2

0 2

40

4

0

u1=0

0

u2=-1

60

u3=-1

0

80 2

0

0 1

0

v1=1 v2=2 v3=3 v4=2  13= 0

 14= -2  21= -4  24= 1  22