północ transportowa

Transkrypt

północ transportowa
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=430<530=suma bj, to a5=100.
f0=950, f1=850, f2=750, f3=f min=680..
ALGORYTM ROZWIĄZYWANIA ZAGADNIENIA TRANSPORTOWEGO:
1. Budowa tablicy wielkości przewozów (metodą kąta północno-zachodniego):
 Oblicz min{a1,b1) i wstaw jako x11;
{gdy a1=b1 – to jako x11 wstaw a1 oraz x1j=0, dla wszystkich j
lub b1 oraz xi1=0, dla wszystkich i
Wtedy przy aktualizacji podaży i popytu otrzymujemy zero i w wierszu i w
kolumnie. Jedno z tych zer traktujemy jak zwykłe 0, drugie jest 0 i jako
aktywne uwzględniamy w kolejnym kroku ustalania wielkości przewozów}
 Powtarzaj obliczanie min dla klatek wysuniętych najbardziej na pn.-zach.
w zmodyfikowanej tablicy
2. Sprawdzamy, czy m+n-1 jest równe ilości klatek bazowych {jak nie – wróć do
1 lub 8}
3. Obliczamy fk=[xij]  [cij], k=0,1,2,...
4. METODA POTENCJAŁU:
a) w oparciu o klatki bazowe nadaj potencjały wg przepisu ui+vj=cij
b) dla klatek niebazowych oblicz  ij= (ui+vj)-cij
Jeśli dla każdych i,j mamy  ij  0, to plan jest optymalny {KONIEC}
Jeśli NIE:
5. Kładziemy * w klatce o największej dodatniej  ij
6. Tworzymy „cykl” po klatkach bazowych zaczynając go i kończąc w klatce *
numerując wybrane do cyklu klatki od jedynki {klatka * ma numer 1}
7. Obliczamy minimum  z wartości xij w klatkach o numerach parzystych
8. „Przesuwamy”  w klatkach cyklu {mogą powstać ZERA BAZOWE}
9. Wracamy do 2.
Przykład:
ai
bj
60
80
100
40
60
80
60
1
2
3
4
4
3
2
0
0
2
2
1
0. Czy ZT=ZZT?
3
?
4
 a  b
i 1
i
j 1
j
60+80+100=40+60+80+60 (tak, ZT=ZZT)
1. Tablica przewozów wypełniona metodą kąta północno-zachodniego:
ai
bj
60
80
100
40
60
80
60
1
2
3
4
4
3
2
0
0
2
2
1
Min{60;40}=40
ai
a1=60-40; b1=40-40
bj
40
60
80
60
60
1
2
3
4
80
4
3
2
0
100
0
2
2
1
40
ai
bj
0
20
1
80
4
100
0
ai
60
80
60
2
3
4
3
2
0
2
2
1
40
0
0
bj
0
20
1
80
4
100
0
60
2
40
80
60
3
4
3
2
0
2
2
1
20
0
0
Min{20;60}=20
a1=20-20; b1=60-20
ai
bj
0
0
1
80
4
100
0
40
2
40
80
60
3
4
3
2
0
2
2
1
20
0
0
Powtarzamy, aż wypełniona zostanie cała tablica przewozów:
ai
bj
0
0
1
0
4
0
0
0
2
40
20
3
0
0
3
0
2
40
2
0
0
4
0
0
40
2
0
0
1
40
60
2. Czy m+n-1=ilość kratek bazowych?
m+n-1=3+4-1=6
ai
bj
0
0
1
0
4
0
0
0
2
40
20
3
0
0
40
0
0
40
2
0
0
4
2
2
0
0
3
0
1
40
60
3. Koszt transportu związany z aktualną tablicą transportową:
f0=[xij]  [cij]
f0=40x1+20x2+40x3+40x2+40x2+60x1=420
4. Czy koszt jest minimalny?
METODA POTENCJAŁU
1
2
40
3
4
20
4
3
0
0
2
40
0
2
0
60
u3=
0
40
2
0
0
u1=0
u2=
0
1
40
v1= v2= v3= v4=
a) w oparciu o klatki bazowe nadaj potencjały wg przepisu ui+vj=cij
u1+v1=c11
0 + v1=1
1
2
40
4
3
20
3
0
0
0
2
40
2
0
4
u1=0
0
u2=1
60
u3=1
0
40
2
0
0
1
40
v1=1 v2=2 v3=1 v4=0
b) dla klatek niebazowych oblicz  ij= (ui+vj)-cij
Jeśli dla każdych i,j mamy  ij  0, to plan jest optymalny
 13= (u1+v3)-c13
 13= (0+1)-3=-2
 14= (0+0)-4=-4
 21= -2
 24= 1
 31= 2
 32= 1
Istnieją klatki niebazowe, gdzie  ij>0. 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<0
 32< 0
1
2
0
4
3
60
3
0
0
2
0
2
40
4
0
80
2
0
u1=0
0
* u2=-1
0
0
1
0
60
v1=1 v2=2 v3=3 v4=2
u3=-1
(2,4)
1
(2,3)
2
(3,3)
3
(3,4)
4
+
-
+
-
 =60
1
2
0
3
4
60
4
3
0
0
2
0
0
2
40
u1=0
60
u2=
0
u3=
0
20
2
0
0
1
60
v1= v2= v3= v4=
f2=280.
METODA POTENCJAŁU
1
2
0
4
3
60
3
0
0
2
0
2
40
4
0
u1=0
60
u2=-1
0
u3=-1
0
20
2
0
0
1
60
v1=1 v2=2 v3=3 v4=1
 13= 0
 14= -3
 21<0
 22= <0
 32<0
 34< 0
KONIEC
Metoda minimum macierzy
Metoda kąta północno-zachodniego cechuje się tym, że przy ustalaniu
rozwiązania początkowego bierzemy pod uwagę tylko zasoby punktów odprawy i
zapotrzebowanie punktów odbioru, nie uwzględniając kosztów transportu. Do
metod, które uwzględniają koszty cij należy metoda minimum macierzy.
Przykład:
ai
bj
60
80
100
40
60
80
60
1
2
3
4
4
3
2
0
0
2
2
1
0. Czy ZT=ZZT?
3
?
4
 a  b
i 1
i
j 1
j
60+80+100=40+60+80+60 (tak, ZT=ZZT)
1. Znajdź najmniejszy współczynnik kosztów transportu
c31=0=c24
Wybieramy komórkę (3,1)
min{100,40}=40=x31
ai
bj
40
60
80
60
60
1
2
3
4
80
4
3
2
0
100
0
2
2
1
40
Zapotrzebowanie punktu odbioru B1 zostało zaspokojone, więc przyjmujemy
x11=x21=0.
ai
bj
0
20
1
80
4
60
0
60
80
60
2
3
4
3
2
0
2
2
1
0
0
40
Powtarzamy
procedurę
szukania
najmniejszego
współczynnika
transportu na zmodyfikowanej tabeli:
c24=0
Wybieramy komórkę (2,4)
min{80,60}=60=x24
ai
bj
0
60
1
20
4
20
0
60
80
0
2
3
4
3
2
0
2
2
1
0
0
0
60
40
0
c12=2
min{60,60}=60=x12
Popraw bilans: a1=b2=0, więc na przykład b2=0
ai
bj
0
0
1
20
4
20
0
0
2
0
80
3
60
0
4
0
0
3
2
0
2
2
1
0
60
40
0
Powtarzamy, aż wypełniona zostanie cała tablica przewozów:
ai
bj
0
0
1
20
4
0
0
40
2
0
80
3
60
3
0
0
2
0
2
40
0
4
0
0
20
2
0
60
1
60
0
2. Czy m+n-1=ilość kratek bazowych?
m+n-1=3+4-1=6
ai
bj
0
0
1
20
4
0
0
40
2
0
60
3
0
40
80
3
0
2
0
2
0
0
20
2
0
0
4
60
1
60
0
kosztów
3. Koszt transportu związany z aktualną tablicą transportową:
f0(minimum_macierzy)=[xij]  [cij]
f0=60x2+20x2+60x0+40x0+0x2+60x2=280