Wykład z modelowania matematycznego. Zagadnienie transportowe.

Transkrypt

Wykład z modelowania matematycznego. Zagadnienie transportowe.
Wykład z modelowania matematycznego.
Zagadnienie transportowe.
1
Zagadnienie transportowe zostało sformułowane w 1941 przez F.L.Hitchcocka. Metoda rozwiązania tego zagadnienia zwana algorytmem
transportowymópracowana została przez G.B.Dantziga i jest
,
szczególnym przypadkiem algorytmu sympleks. Pierwotnie zagadnienie transportowe było rzeczywiście stosowane do rozwiązywania problemów związanych z transportem, później okazało się, że stosuje
się do wielu innych zagadnień praktycznych. Najbardziej znane warianty zagadnienia transportowego
to:
1. zagadnienie transportowe (zamknięte i otwarte)
2. zagadnienie transportowo-produkcyjne
3. zagadnienie lokalizacji produkcji
4. zagadnienie minimalizacji pustych przebiegów
Pewien produkt dostarczany jest przez m dostawców do n odbiorców. Znane są liczby ai , i ∈ N1,m
oznaczające ilość produktu jaką może dostarczyć i-ty dostawca, bj , j ∈ N1,n oznaczające ilość
produktu jaką powinien otrzymać j-ty odbiorca oraz cij , i ∈ N1,m , j ∈ N1,n oznaczające koszt
transportu jednostki produktu od i-tego dostawcy do j-tego odbiorcy. Zatem C = [cij ] ∈ Mm,n .
Macierz C nazywana jest macierzą jednostkowych kosztów transportu. Niech xij , i ∈ N1,m , j ∈ N1,n
oznacza ilość produktu jaka ma być przewieziona od i-tego dostawcy do j-tego odbiorcy. Zatem
X = [xij ] ∈ Mm,n . Macierz X jest macierzą zmiennych decyzyjnych.
Zadanie. Opracować plan przewozu produktu, tak aby łączny koszt transportu
był jak najmniejszy.
1
Zagadnienie transportowe zamknięte
Przyjmijmy dodatkowe założenie, że
m
X
ai =
i=1
n
X
bj .
j=1
Warunek ten oznacza, że podaż i popyt się równoważą. Innymi słowy cały zgromadzony towar
zostanie wywieziony do odbiorców. Mówimy wtedy, że zadanie jest zamknięte lub zbilansowane.
Przy powyższych oznaczeniach i założeniach zagadnienie transportowe zamknięte przyjmuje
postać: zminimalizować funkcjonał
m X
n
X
cij xij ,
(1)
i=1 j=1
przy warunkach
n
X
xij = ai
(i = 1, . . . , m),
(2)
xij = bj
(j = 1, . . . , n),
(3)
j=1
m
X
i=1
xij ­ 0 (i = 1, . . . , m ; j = 1, . . . , n).
(4)
Warunki (2) nazywamy ograniczeniami dla dostawców, a warunki (3) - ograniczeniami dla odbiorców.
Funkcjonał (1) nazywamy funkcją kosztu.
2
2
Zagadnienie transportowe otwarte
Przyjmijmy teraz założenie, że
m
X
ai >
i=1
n
X
bj .
j=1
Mówimy wtedy, że zadanie jest otwarte lub niezbilansowane. Założenie oznacza, że nie cały
towar zostanie rozwieziony do odbiorców.
Przy powyższych oznaczeniach i założeniach zagadnienie transportowe otwarte przyjmuje postać:
zminimalizować funkcjonał
m X
n
X
cij xij ,
(5)
i=1 j=1
przy warunkach
n
X
xij ¬ ai
(i = 1, . . . , m),
(6)
xij = bj
(j = 1, . . . , n),
(7)
j=1
m
X
i=1
xij ­ 0 (i = 1, . . . , m ; j = 1, . . . , n).
(8)
Zagadnienie transportowe otwarte sprowadzamy do zagadnienia zamkniętego wprowadzając zmienne dodatkowe xin+1 , i = 1, . . . , m interpretowane jako ilości towaru odebranego przez fikcyjnego
odbiorcę, faktycznie zaś nie odebranego przez nikogo. Przyjmujemy, że dla każdego i = 1, . . . , m
zachodzi
n
xi,n+1 = ai −
X
xij .
j=1
Ostatecznie otrzymujemy zagadnienie postaci:
m n+1
X
X
cij xij ,
(9)
i=1 j=1
przy warunkach
n+1
X
xij = ai
(i = 1, . . . , m),
(10)
(j = 1, . . . , n + 1),
(11)
j=1
m
X
xij = bj
i=1
xij ­ 0 (i = 1, . . . , m ; j = 1, . . . , n + 1).
3
(12)
Zagadnienie transportowe a problem programowania
liniowego
Macierze problemu PL zapiszmy wykorzystując wielkości występujące w zagadnieniu transportowym:
h
x = x11 . . . x1n x21 . . .
h
c = c11 . . .
c1n c21 . . .
3
iT
x2n . . . xm1 . . .
xmn
c2n . . . cm1 . . .
cmn ,
i
,
(13)
(14)
h
b = a1 . . .

1
0


.

0


A=

1

0


.
0
1
0
.
0
0
1
.
0
... 1
0
... 0
1
. . . . .
... 0
0
... 0
1
... 0
0
. . . . .
... 1
0
am b1 . . .
0
1
.
0
...
...
. .
...
0
1
.
0
...
...
. .
...
bn
iT
,
0
...
0
1
...
0
. . . . . .
0
...
1
0
...
1
0
...
0
. . . . . .
1
...
0
(15)
0
0
.
1
...
...
. .
...

0
0


.

1




. . . 0

. . . 0


. . .
0
1
.
0 ...
(16)
1
Zatem
x ∈ Mmn,1 , c ∈ M1,mn , b ∈ Mm+n,1 , A ∈ Mm+n,mn .
Zauważmy, że
cx =
m X
n
X
cij xij
i=1 j=1
oznacza wartość funkcji kosztu. Z kolei równanie macierzowe
Ax = b
generuje m + n równań skalarnych postaci:
x11 + . . . + x1n = a1
...
xm1 + . . . + xmn = am
(17)
x11 + . . . + xm1 = b1
...
x1n + . . . + xmn = bn .
(18)
oraz
Oznacza to, że zagadnienie transportowe można sprowadzić do problemu programowania liniowego.
Na podstawie informacji dotyczących tego problemu wiadomo, że do jego rozwiązania można użyć
algorytmu sympleks. Zachowują ważność wszystkie teoretyczne faktu leżące u podstaw tego algorytmu. Warto zwrócić uwagę na fakt, że nawet niezbyt rozbudowany problem transportowy prowadzi
do dużych macierzy występujących w algorytmie sympleks. I tak na przykład, jeśli jest 3 odbiorców
i 4 dostawców, to macierz A ma wymiar 7 × 12. Co za tym idzie wielościany wypukłe (sympleksy) mają bardzo dużą ilość wierzchołków. Opracowano więc na podstawie algorytmu sympleks
bardzo efektywny algorytm rozwiązywania zagadnień transportowych, zwany algorytmem transportowym. Zauważmy ponadto, że sumując równania (17)-(18) otrzymamy, przy wykorzystaniu
Pn
P
założenia m
j=1 bj , tożsamość 0 = 0. Oznacza to, że rząd macierzy A nie przekracza
i=1 ai =
n + m − 1. Mozna wykazać, że jest dokładnie równy tej liczbie.
4
Algorytm transportowy
Przed podaniem dokładnego algorytmu transportowego potrzebne będą pewne pojęcia pomocnicze.
4
Niech dana będzie macierz M ∈ Mmn . Parę (i, j), i ∈ N1,m , j ∈ N1,n nazywamy węzłem.
Dowolny wiersz lub dowolną kolumnę macierzy M nazywamy linią. Cyklem nazywamy niepusty
zbiór węzłów taki, że w każdej linii znajduje się 0 lub 2 węzły tego zbioru.
Przykład. Niech M ∈ M34 . Przykładowymi cyklami w tej macierzy są zbiory: {(1, 1), (1, 2), (2, 1), (2, 2)}
oraz {(1, 1), (1, 3), (2, 3), (2, 4), (3, 4), (3, 1)}.
Półcyklem danego cyklu nazywamy podzbiór węzłów cyklu składający się z połowy węzłów
tego cyklu taki, że w każdej linii znajduje się co najwyżej jeden węzeł tego podzbioru. Każdy cykl Γ
można podzielić na dwa półcykle Γ1 i Γ2 w ten sposób, że dowolny jeden węzeł zaliczamy do Γ1 a
następny węzeł cyklu Γ znajdujący się w tej samej linii co węzeł zaliczony do Γ1 zaliczamy do Γ2 .
Procedurę powtarzamy do wyczerpania nieprzypisanych węzłów.
Przykład. Dla M ∈ M34 i cyklu {(1, 1), (1, 3), (2, 3), (2, 4), (3, 4), (3, 1)} mamy dwa półcykle:
{(1, 1), (2, 3), (3, 4)} oraz {(1, 3), (2, 4), (3, 1)}.
Rolę wskaźnika optymalności w algorytmie transportowym pełni zerowa macierz równoważna
macierzy kosztów c. Zerową macierzą równoważną macierzy kosztów c względem zbioru
bazowego B nazywamy macierz cB = [(cB )ij ] określoną wzorami
(cB )ij
= cij + ui + vj
(cB )ij = cij + ui + vj = 0
(i = 1, . . . , m ; j = 1, . . . , n + 1)
dla (i, j) ∈ B ,
gdzie u1 , . . . , um , v1 , . . . , vn oznaczają odpowiednie stałe.
Schemat algorytmu transportowego
1. Wyznaczamy zbiór bazowy B oraz początkowe rozwiązanie dopuszczalne X[B].
2. Wyznaczamy zerową macierz cB = [(cB )ij ] równoważną macierzy kosztów c względem zbioru
bazowego B:
• dla jednej z niewiadomych u1 , . . . , um , v1 , . . . , vn przyjmujemy dowolną wartość (np 0),
• pozostałe niewiadome wyznaczamy z układu równań
cij + ui + vj = 0 dla (i, j) ∈ B ,
• wyznaczamy
(cB )ij = cij + ui + vj
(i = 1, . . . , m ; j = 1, . . . , n + 1).
3. Jeśli cB ­ 0, to rozwiązanie X[B] jest optymalne.
→
koniec działania algorytmu!
4. Wyznaczamy nowy zbiór bazowy i odpowiadające mu rozwiązanie dopuszczalne:
• wyznaczamy węzeł (k, l) spełniający kryterium wejścia
(cB )kl = min{(cB )ij : (i, j) ∈ B} ,
• znajdujemy cykl Γ zawarty w zbiorze B ∪ {(k, l)} i dzielimy go na dwa półcykle Γ1 i Γ2 ,
zaliczając (k, l) do Γ1 ,
• wyznaczamy węzeł (p, q) półcyklu Γ2 spełniający kryterium wyjścia
x[B]pq = min{x[B]ij : (i, j) ∈ Γ2 } ,
5
• tworzymy zbiór
B 0 = (B \ {(p, q)}) ∪ {(k, l)} ,
• wyznaczamy x[B 0 ] ze wzoru
0
x[B ]ij =



x[B]ij + x[B]pq



x[B]ij − x[B]pq
x[B]ij
dla (ij) ∈ Γ1
dla (ij) ∈ Γ2
dla (ij) ∈
/Γ.
5. Przechodzimy do punktu 2.
Uwaga. Do wyznaczenia rozwiązania początkowego można zastosować jedną z metod:
1. metoda kąta północno-zachodniego,
2. metoda elementu minimalnego macierzy.
W obu metodach wybieramy do bazy B węzły (i, j) i przypisujemy elementom xij macierzy X
maksymalną dopuszczalną, dodatnią ilość transportowanego produktu, tak by przy tym spełnione
były ograniczenia zarówno dla dostawców jak i odbiorców. W metodzie kąta północno-zachodniego
wybieramy węzeł o najmniejszych indeksach i oraz j. W metodzie elementu minimalnego macierzy
wybieramy węzeł (i, j), dla którego koszt transportu jest najmniejszy.
Uwaga. Przypomnijmy, że w niezdegenerowanym problemie programowania liniowego metoda sympleks kończy się w skończonej liczbie iteracji. Zatem to samo dotyczy algorytmu transportowego.
Mówimy, że zagadnienie transportowe jest niezdegenerowane, jeśli każde jego bazowe rozwiązanie
dopuszczalne jest niezdegenerowane, tzn. x[B]ij > 0 dla każdego (i, j) ∈ B.
5
Przykłady zastosowań algorytmu transportowego
Zadanie 1 Trzy magazyny M1 , M2 , M3 zaopatrują w mąkę cztery piekarnie P1 , P2 , P3 , P4 .
Koszty transportu (w zł za tonę) aij oraz ilość oferowanej mąki przez poszczególne magazyny Ai i
zapotrzebowanie poszczególnych piekarń Bj podaje tabela:
Magazyny
M1
M2
M3
Bj
P1
50
40
60
40
Piekarnie
P2 P3
40 50
80 70
40 70
60 50
P4
20
30
80
50
Ai
70
50
80
200
Opracować plan przewozu mąki z magazynów do piekarń, tak aby łączny koszt transportu był jak
najmniejszy.
Rozwiązanie
3
X
i=1
Ai =
4
X
Bj
⇒
zagadnienie transportowe zamknięte
j=1
zmienne decyzyjne xij - ilość ton mąki, którą trzeba przewieźć z i-tego magazynu do j-tej piekarni
ograniczenia dla dostawców:
x11 + x12 + x13 + x14 = 70
x21 + x22 + x23 + x24 = 50
x31 + x32 + x33 + x34 = 80
6
ograniczenia dla odbiorców:
x11 + x21 + x31
x12 + x22 + x32
x13 + x23 + x33
x14 + x24 + x34
= 40
= 60
= 50
= 50
warunki brzegowe: xij ­ 0
funkcja celu:
K(xij ) =
3 X
4
X
aij xij
→
min
i=1 j=1
Wyznaczenie rozwiązania początkowego metodą kąta północno-zachodniego
Magazyny
M1
M2
M3
Bj
P1
50
40
60
40
Piekarnie
P2 P3
40 50
80 70
40 70
60 50
P4
20
30
80
50
Ai
70
50
80
200
Magazyny
M1
M2
M3
Bj
Piekarnie
P1 P2 P3 P4
40 30
30 20
30 50
40 60 50 50
Ai
70
50
80
200
K(xij ) = 50 · 40 + 40 · 30 + 80 · 30 + 70 · 20 + 70 · 30 + 80 · 50 = 13100
Wyznaczenie rozwiązania początkowego metodą elementu minimalnego macierzy
Magazyny
M1
M2
M3
Bj
P1
50
40
60
40
Piekarnie
P2 P3
40 50
80 70
40 70
60 50
P4
20
30
80
50
Ai
70
50
80
200
Magazyny
M1
M2
M3
Bj
Piekarnie
P1 P2 P3 P4
20
50
40
10
40 40
40 60 50 50
Ai
70
50
80
200
K(xij ) = 40 · 20 + 20 · 50 + 40 · 40 + 70 · 10 + 40 · 40 + 70 · 40 = 8500
Wyznaczenie rozwiązania optymalnego - algorytm transportowy
I.
Wyznaczamy zbiór bazowy B oraz początkowe rozwiązanie dopuszczalne X[B]:
B = {(1, 2), (1, 4), (2, 1), (2, 3), (3, 2), (3, 3)} .


0 20 0 50


X[B] = 40 0 10 0 
0 40 40 0
7
Wyznaczamy zerową macierz cB równoważną macierzy kosztów c względem zbioru bazowego B:
Z układu równań
40 + u1 + v2
20 + u1 + v4
40 + u2 + v1
70 + u2 + v3
40 + u3 + v2
70 + u3 + v3
=0
=0
=0
=0
=0
=0
przyjmując u1 = 0, otrzymujemy
u1 = 0 , u2 = 0 , u3 = 0 , v1 = −40 , v2 = −40 , v3 = −70 , v4 = −20 .
Stąd


10 0 −20 0

10 
c[B] =  0 40 0

20 0
0 60 .
Ponieważ niespełniony jest warunek c[B] ­ 0, więc rozwiązanie nie jest optymalne.
Z kryterium wejścia do bazy wchodzi
(k, l) = (1, 3) .
W zbiorze B ∪ {(k, l)} tworzymy cykl Γ i półcykle Γ1 oraz Γ2 :
Γ = {(1, 2), (1, 3), (3, 2), (3, 3)} ,
Γ1 = {(1, 3), (3, 2)} ,
Γ2 = {(1, 2), (3, 3)} .
Ponieważ
min{x[B]ij : (i, j) ∈ Γ2 } = 20 = x[B]12
więc z bazy wychodzi węzeł
(p, q) = (1, 2) .
II.
Wyznaczamy nowy zbiór bazowy B 0 oraz początkowe rozwiązanie dopuszczalne X[B 0 ]:
B 0 = {(1, 3), (1, 4), (2, 1), (2, 3), (3, 2), (3, 3)} .


0 0 20 50
40
0 10 0 
X[B 0 ] = 


0 60 20 0
Wyznaczamy zerową macierz c0B równoważną macierzy kosztów c względem zbioru bazowego B 0 :
Z układu równań
50 + u1 + v3
20 + u1 + v4
40 + u2 + v1
70 + u2 + v3
40 + u3 + v2
70 + u3 + v3
8
=0
=0
=0
=0
=0
=0
przyjmując u1 = 0, otrzymujemy
u1 = 0 , u2 = −20 , u3 = −20 , v1 = −20 , v2 = −20 , v3 = −50 , v4 = −20 .
Stąd


30 20 0 0

0
c[B ] =  0 40 0 −10

20 0 0 40 .
Ponieważ niespełniony jest warunek c[B 0 ] ­ 0, więc rozwiązanie nie jest optymalne.
Z kryterium wejścia do bazy wchodzi
(k, l) = (2, 4) .
W zbiorze B 0 ∪ {(k, l)} tworzymy cykl Γ i półcykle Γ1 oraz Γ2 :
Γ = {(1, 3), (1, 4), (2, 3), (2, 4)} ,
Γ1 = {(2, 4), (1, 3)} ,
Γ2 = {(1, 4), (2, 3)} .
Ponieważ
min{x[B 0 ]ij : (i, j) ∈ Γ2 } = 10 = x[B 0 ]23
więc z bazy wychodzi węzeł
(p, q) = (2, 3) .
III.
Wyznaczamy nowy zbiór bazowy B 0 oraz początkowe rozwiązanie dopuszczalne X[B 0 ]:
B 0 = {(1, 3), (1, 4), (2, 1), (2, 4), (3, 2), (3, 3)} .


0 0 30 40


0
X[B ] = 40 0 0 10
0 60 20 0
Wyznaczamy zerową macierz c0B równoważną macierzy kosztów c względem zbioru bazowego B 0 :
Z układu równań
50 + u1 + v3
20 + u1 + v4
40 + u2 + v1
30 + u2 + v4
40 + u3 + v2
70 + u3 + v3
=0
=0
=0
=0
=0
=0
przyjmując u1 = 0, otrzymujemy
u1 = 0 , u2 = −10 , u3 = −20 , v1 = −20 , v2 = −20 , v3 = −50 , v4 = −20 .
Stąd


30 20 0
0

0
c[B ] = 20 50 10 0 

20 0 0 40 .
Ponieważ spełniony jest warunek c[B 0 ] ­ 0, więc rozwiązanie jest optymalne.
9
Magazyny
M1
M2
M3
Bj
P1
50
40
60
40
Piekarnie
P2 P3
40 50
80 70
40 70
60 50
P4
20
30
80
50
Ai
70
50
80
200
Piekarnie
P1 P2 P3 P4
30 40
40
10
60 20
40 60 50 50
Magazyny
M1
M2
M3
Bj
Ai
70
50
80
200
K(xij ) = 50 · 30 + 20 · 40 + 40 · 40 + 30 · 10 + 40 · 60 + 70 · 20 = 8000
Zadanie 2 Trzy magazyny M1 , M2 , M3 zaopatrują w mąkę cztery piekarnie P1 , P2 , P3 , P4 .
Koszty transportu (w zł za tonę) aij oraz ilość oferowanej mąki przez poszczególne magazyny Ai i
zapotrzebowanie poszczególnych piekarń Bj podaje tabela:
Magazyny
M1
M2
M3
Bj
P1
50
40
60
40
Piekarnie
P2 P3
40 50
80 70
40 70
60 50
P4
20
30
80
50
Ai
100
50
80
Przyjmijmy ponadto, że koszty magazynowania wynoszą odpowiednio dla poszczególnych magazynów: 5 zł, 5 zł , 6 zł za tonę. Opracować plan przewozu mąki z magazynów do piekarń, tak aby
łączny koszt transportu był jak najmniejszy.
Uwaga. Jest to modyfikacja zadania 1 polegająca na tym, że magazyn M1 posiada nie 70, a
100 ton mąki. Jest więc nadwyżka podaży w stosunku do popytu.
Rozwiązanie
3
X
Ai = 230 >
i=1
4
X
Bj = 200
⇒
zagadnienie transportowe otwarte
j=1
Ponieważ jest nadwyżka podaży w stosunku do popytu, to pewna ilość towaru zostanie w magazynie. W celu zrównoważenia zadania wprowadzamy fikcyjnego odbiorcę F . Fikcyjny odbiorca
otrzyma nadwyżkę mąki, czyli 230 − 200 = 30 ton. Po wprowadzeniu dodatkowego odbiorcy zadanie
staje się zamkniętym zagadnieniem transportowym.
zmienne decyzyjne xij - ilość ton mąki, którą trzeba przewieźć z i-tego magazynu do j-tej piekarni
dla j = 1, 2, 3, 4, a dla j = 5 ilość ton mąki, która zostanie w magazynie
ograniczenia dla dostawców:
x11 + x12 + x13 + x14 + x15 = 100
x21 + x22 + x23 + x24 + x25 = 50
x31 + x32 + x33 + x34 + x35 = 80
ograniczenia dla odbiorców:
x11 + x21 + x31
x12 + x22 + x32
x13 + x23 + x33
x14 + x24 + x34
x15 + x25 + x35
10
= 40
= 60
= 50
= 50
= 30
warunki brzegowe: xij ­ 0
funkcja celu:
K(xij ) =
3 X
5
X
aij xij
→
min
i=1 j=1
Wyznaczenie rozwiązania metodą elementu minimalnego macierzy
Magazyny
M1
M2
M3
Bj
P1
50
40
60
40
Piekarnie
P2 P3 P4
40 50 20
80 70 30
40 70 80
60 50 50
F
5
5
6
30
Ai
100
50
80
230
Magazyny
M1
M2
M3
Bj
P1
40
40
Piekarnie
P2 P3 P4
20
50
10
40 40
60 50 50
F
30
30
Ai
100
50
80
230
K(xij ) = 40 · 20 + 20 · 50 + 5 · 30 + 40 · 40 + 70 · 10 + 40 · 40 + 70 · 40 = 8650
Wyznaczenie rozwiązania optymalnego - algorytm transportowy
Magazyny
M1
M2
M3
Bj
P1
50
40
60
40
Piekarnie
P2 P3 P4
40 50 20
80 70 30
40 70 80
60 50 50
F
5
5
6
30
Ai
100
50
80
230
Magazyny
M1
M2
M3
Bj
P1
Piekarnie
P2 P3 P4
50 50
40
40
60
60
50
50
F
10
20
30
Ai
100
50
80
230
K(xij ) = 50 · 50 + 20 · 50 + 40 · 40 + 5 · 10 + 40 · 60 + 6 · 20 = 7670
Koszty łączne 7670, w tym koszty transportu 7500 a koszty magazynowania 170.
Zadanie 3 Trzy młyny M1 , M2 , M3 produkują mąkę i zaopatrują w nią cztery piekarnie P1 , P2 ,
P3 , P4 . Koszty transportu (w zł za tonę) aij oraz ilość oferowanej mąki przez poszczególne młyny
Ai , koszty produkcji 1 tony mąki Ci oraz zapotrzebowanie poszczególnych piekarń Bj podaje tabela:
Młyny
M1
M2
M3
Bj
P1
50
40
60
40
Piekarnie
P2 P3
40 50
80 70
40 70
60 50
P4
20
30
80
50
Ai
100
50
80
Ci
680
660
700
Opracować optymalny plan produkcji i przewozu mąki z młynów do piekarń, tak aby łączny koszt
był jak najmniejszy. Zakładamy, że nadwyżka produkcji mąki będzie zmagazynowana, a koszty magazynowania wynoszą odpowiednio dla poszczególnych młynów: 5 zł, 5 zł , 6 zł za tonę.
Rozwiązanie Jest to przykład zagadnienia transportowo-produkcyjnego, czyli wariant
P
P
zagadnienia transportowego otwartego ( 3i=1 Ai = 230 > 4j=1 Bj = 200). W celu zrównoważenia
zadania wprowadzamy fikcyjnego odbiorcę F . Fikcyjny odbiorca otrzyma nadwyżkę mąki, czyli 30
ton.
zmienne decyzyjne xij - wielkość produkcji i-tego młyna bądź dostarczona do j-tej piekarni dla
j = 1, 2, 3, 4, bądź pozostawiona w magazynie dla j = 5
Zestawienie łącznych kosztów produkcji i transportu
11
Młyny
M1
M2
M3
Bj
Piekarnie
P1 P2 P3 P4
F
730 720 730 700 685
700 740 730 690 665
760 740 770 780 706
40 60 50 50 30
Ai
100
50
80
230
ograniczenia dla producentów:
x11 + x12 + x13 + x14 + x15 = 100
x21 + x22 + x23 + x24 + x25 = 50
x31 + x32 + x33 + x34 + x35 = 80
ograniczenia dla odbiorców:
x11 + x21 + x31
x12 + x22 + x32
x13 + x23 + x33
x14 + x24 + x34
x15 + x25 + x35
= 40
= 60
= 50
= 50
= 30
warunki brzegowe: xij ­ 0
funkcja celu:
K(xij ) =
3 X
5
X
aij xij
→
min
i=1 j=1
Wyznaczenie rozwiązania optymalnego - algorytm transportowy
Młyny
M1
M2
M3
Bj
P1
730
700
760
40
Piekarnie
P2 P3 P4
720 730 700
740 730 690
740 770 780
60 50 50
F
685
665
706
30
Ai
100
50
80
230
Młyny
M1
M2
M3
Bj
P1
Piekarnie
P2 P3 P4
50 50
40
40
60
60
50
50
F
10
20
30
Ai
100
50
80
230
K(xij ) = 730 · 50 + 700 · 50 + 700 · 40 + 665 · 10 + 740 · 60 + 706 · 20 = 164670
Zadanie 4 Projektowana jest budowa maksymalnie 3 zakładów mleczarskich mających zaopatrywać w masło cztery miejscowości: P , R, S, T . Zakłady mogą powstać w miejsowościach P , R, S.
Koszty transportu (w zł za kg) aij oraz dzienne zdolności produkcyjne zakładów Ai , koszty produkcji
Ci (w zł za kg) oraz zapotrzebowanie poszczególnych miast na masło Bj podaje tabela:
Zakłady
P
R
S
Bj
P
0
1
0,5
1000
Odbiorcy
R
S
T
0,4
0,5
1
0
0,8
0,6
0,5
0
0,8
2000 1000 1000
12
Ai
3000
2000
2500
Ci
4
4,5
4,2
Opracować optymalny plan lokalizacji zakładów tak, aby łączny koszt produkcji i transportu był jak
najmniejszy.
Rozwiązanie Jest to przykład zagadnienia lokalizacji produkcji, czyli wariant zagadP
P
nienia transportowego otwartego ( 3i=1 Ai = 7500 > 4j=1 Bj = 5000). W celu zrównoważenia
zadania wprowadzamy fikcyjnego odbiorcę F oznaczającego niewykorzystaną zdolność produkcyjną.
Zatem łączne koszty produkcji i transportu dla tego odbiorcy wynoszą 0 zł. Fikcyjny odbiorca otrzyma
nadwyżkę masła, czyli 2500 ton.
zmienne decyzyjne xij - wielkość produkcji masła w i-tej miejscowości bądź dostarczona do j-tej
miejscowości dla j = 1, 2, 3, 4, bądź niewykorzystana zdolność produkcyjna zakłądu w i-tej miejscowości dla j = 5
Zestawienie łącznych kosztów produkcji i transportu
Zakłady
P
R
S
Bj
Odbiorcy
P
R
S
T
F
4
4,4
4,5
5
0
5,5
4,5
5,3
5,1
0
4,7
4,7
4,2
5
0
1000 2000 1000 1000 2500
Ai
3000
2000
2500
7500
ograniczenia dla producentów:
x11 + x12 + x13 + x14 + x15 = 3000
x21 + x22 + x23 + x24 + x25 = 2000
x31 + x32 + x33 + x34 + x35 = 2500
ograniczenia dla odbiorców:
x11 + x21 + x31
x12 + x22 + x32
x13 + x23 + x33
x14 + x24 + x34
x15 + x25 + x35
= 1000
= 2000
= 1000
= 1000
= 2500
warunki brzegowe: xij ­ 0
funkcja celu:
K(xij ) =
3 X
5
X
aij xij
→
min
i=1 j=1
Wyznaczenie rozwiązania metodą elementu minimalnego macierzy
Zakłady
P
R
S
Bj
P
R
4
4,4
5,5
4,5
4,7
4,7
1000 2000
Odbiorcy
S
T
F
4,5
5
0
5,3
5,1
0
4,2
5
0
1000 1000 2500
13
Ai
3000
2000
2500
7500
Zakłady
P
R
S
Bj
P
500
Odbiorcy
R
S
T
F
2500
2000
500
1000 2000
1000
1000
1000
1000 2500
Ai
3000
2000
2500
7500
K(xij ) = 4 · 500 + 0 · 2500 + 4, 5 · 2000 + 4, 7 · 500 + 4, 2 · 1000 + 5 · 1000 = 22550
Zauważmy, że baza jest złożona z 6 elementów, podczas gdy rząd macierzy A wynosi 7. Oznacza
to, że to rozwiązanie bazowe, a co za tym idzie całe zagadnienie, jest zdegenerowane. W tym
przypadku algorytm transportowy nie jest skuteczny. Problem można ewentualne rozwiązać przy
pomocy przetworzonej macierzy kosztów.
Macierz kosztów przekształcamy tak, aby w każdej kolumnie i każdym wierszu było przynajmniej
jedno zero. Uzyskamy taki efekt odejmując od elementów poszczególnych wierszy macierzy kosztów
element najmniejszy danego wiersza, a następnie odejmując od poszczególnych kolumn tak uzyskanej
macierzy zmodyfikowanej element najmniejszy danej kolumny. Jeśli uda się rozmieścić przewozy
wyłącznie na trasach, którym odpowiadają zera w przetworzonej macierzy kosztów, to rozwiązanie
jest optymalne.
Wyznaczenie rozwiązania metodą elementu minimalnego macierzy przy wykorzystaniu przetworzonej macierzy kosztów
Zakłady
P
R
S
Bj
Zakłady
P
R
S
Bj
Zakłady
P
R
S
Bj
Odbiorcy
S
T
F
4,5
5
0
5,3
5,1
0
4,2
5
0
1000 1000 2500
Odbiorcy
P
R
S
T
F
0
0
0,3
0
0
1,5
0,1
1,1
0,1
0
0,7
0,3
0
0
0
1000 2000 1000 1000 2500
P
R
4
4,4
5,5
4,5
4,7
4,7
1000 2000
P
R
1000 2000
1000 2000
Odbiorcy
S
T
1000
1000
F
2000
1000 500
1000 2500
Ai
3000
2000
2500
7500
Ai
3000
2000
2500
7500
Ai
3000
2000
2500
7500
K(xij ) = 4 · 1000 + 4, 4 · 2000 + 0 · 2000 + 4, 2 · 1000 + 5 · 1000 + 0 · 500 = 22000
Uwaga Rozwiązanie zadania oznacza, że należy zakłady ulokować w miejscowościach P i S.
Możliwości zakładu w P będą wykorzystane w pełni, zakład w S będzie miał pewną rezerwę możliwości produkcyjnych (500 kg). Zakład w R jest niepotrzebny.
14