You are on page 1of 20

A szállítási feladat

Készítette: Dr. Ábrahám István


1
Bevezető
A személyek, termékek, nyersanyagok szállításának lehető
leggazdaságosabb megszervezése fontos kérdés.
Célunk lehet legkisebb összköltségre törekvés, vagy a legrövidebb
úton, vagy idő alatt megvalósuló szállítási program.
Sok más területen felhasználhatjuk azokat az eredményeket, amelyeket a
szállítási feladat megoldása során kaptunk.
A probléma felvetése
Példa: Adott két feladó állomás, a tőlük elszállítandó áru mennyisége rend-
re 70 és 30 egységnyi. 3 rendeltetési hely van, igényeik rendre
30, 20, 50 egységnyi. A feladóhelyek és a rendeltetési állomások
között minden esetben lehetséges szállítás.
Az egyes relációkban a szállítási költségek egy egység szállítására vonat-
kozóan: F1-ből R1-be: 1, F1-ből R2-be: 4, F1-ből R3-ba: 2, valamint:
F2-ből R1-be: 3, F2-ből R2-be: 2, F2-ből R3-ba: 1. R1 R 2 R 3
F1 1 4 2 70
Az adatainkat táblázatba foglalhatjuk: F2 3 2 1 30 2
30 20 50
R1 R 2 R 3
F1 1 4 2 70 A sorok, illetve oszlopok végén a mozgatandó mennyiségek
vannak, a táblázat belsejében a szállítási költségek egység-
F2 3 2 1 30
nyi szállítandó mennyiségre vonatkozóan.
30 20 50

A szállítási feladat megoldása többféleképpen történhet:


1.) A lineáris programozás szokásos módszereivel.
Matematikai modellt írunk fel a feladathoz, majd az megoldjuk.
2.) A disztribúciós módszerrel
Először előállítunk egy lehetséges disztribúciót („szállítási relációk szét-
osztását”), majd ezt javítjuk az optimum eléréséig.

A szállítási feladatok megoldására más módszerek is léteznek, kezdve az ötlet-


szerű szervezéstől az összes lehetséges változat kiszámításáig és közülük az
optimális kiválasztásáig.
Ezek a „más” megoldások többnyire nem optimálisak, illetve nagyon költségesek,
így mi a fenti két esettel foglalkozunk.

3
A szállítási feladat megoldása szimplex módszerrel
Az előző feladatunk táblázattal:
R1 R 2 R 3 Az xij változó jelentse az egyes relációkban szállításra kerülő
F1 1 4 2 70 árumennyiséget.
F2 3 2 1 30 Az induló feltétel: xi j ≥ 0, ahol 1 ≤ i ≤ 2 és 1 ≤ j ≤ 3.
30 20 50 A feltételi relációkat a szállítandó mennyiségek határozzák meg:
x11+x12+x13=70 A célunk a szállítás összköltségének minimalizálása:
x21+x22+x23=30
z= x11+4x12+2x13+3x21+2x22+x23→min.
x11+x21=30
x12+x22=20
x13+x23=50 A feladat szimplex induló táblája:
Néhány bázistranszformáció után az optimális
x11 x12 x13 x 21 x 22 x 23 b megoldás:
û1 1 1 1 0 0 0 70 x12 x 21
û2 0 0 0 1 1 1 30 x13 1 − 1 40 x11=30, x13=40,
û3 1 0 0 1 0 0 30 x22=20, x23=20
x 23 − 1 1 10
û4 0 1 0 0 1 0 20 A többi relációban 0 a
x11 0 1 30
û5 0 0 1 0 0 1 50 szállított mennyiség.
x 22 1 0 20
z −1 − 4 − 2 − 3 − 2 −1 0 A költség minimuma 160.
û5 0 0 0 4
− ẑ 2 2 2 2 2 2 200
z − 1 − 3 160
Általánosan: Fi jelentse a feladóhelyeket, fi az elszállítandó áru mennyiségét.
Rj a rendeltetési helyeket, rj az általuk igényelt árumennyiséget.
(1 ≤ i ≤ m és 1 ≤ j ≤ n).
A C mátrix elemei: az egyes relációkban az egységnyi áru szállításának költségei.
Az X mátrix xi j elemei: az egyes relációkban szállításra kerülő árumennyiségek.
Az adataink táblázatos alakja:
R1 R2 .. .. Rn A matematikai modell: xi j ≥ 0 (1 ≤ i ≤ m és 1 ≤ j ≤ n)
F1 c 11 c 12 .. .. c 1n f1 n

F2 c 21 c 22 .. .. c 2n f2 ∑x
j =1
ij = fi (1 ≤ i ≤ m)
: .. .. .. .. .. ..
m
: .. .. .. .. .. ..
∑x
i =1
ij = rj (1 ≤ j ≤ n)
Fm c m1 c m2 .. .. c mn fm
m n
r1 r2 .. .. rn
z= ∑∑c
i =1 j =1
ij x ij → min .
Feltételeink: a szállítandó
és az igényelt mennyiségek
összege egyezzen meg: A matematikai modell alapján optimalizálást
m n végezhetünk szimplex módszerrel.
∑ f = ∑r
i =1
i
j =1
j
A megoldandó feladat lehet bármilyen elosztási,
A cél az összköltség szétosztási probléma. A korlátozó feltételek között
más további feltétel is szerepelhet. 5
minimuma.
Példa: 10 millió forintot elhelyezünk 3 alapba, legyenek ezek a következők:
5 milliót részvénybe, 3 milliót államkötvénybe, 2 milliót lekötött betétbe fektetünk.
Négy társaságnál fektetjük be a tőkét, azaz portfoliót hozunk létre. Az egyes társa-
ságoknál 4, 3, 2 és 1 millió forintot helyezünk el. A társaságok adott időszakra az
alapokra vonatkozóan adtak a százalékos hozamokat a következő táblázat szerint:
A B C D
(Az A, B, C, D a társaságokat, az I, II, III az alapokat jelentse.)
I 19 17 20 16 5
II 9,4 9,8 8,9 9,2 3 Hogyan, milyen bontásban helyezzük el a pénzünket, ha a
maximális hozam elérése a célunk? (Allokációs feladat.)
III 7,8 8 7,2 6,6 2
4 3 2 1 Megoldás:
Az xi j jelentse az egyes alapokba valamelyik társaságnál elhelyezett tőkét.
A triviális feltétel: xi j ≥ 0, ahol 1 ≤ i ≤ 3 és 1 ≤ j ≤ 4.
A feltételi relációkat a „peremértékek” határozzák meg:
x11+x12+x13+x14=5 x11+x21+x31=4
x21+x22+x23+x24=3 x12+x22+x32=3
x31+x32+x33+x34=2 x13+x23+x33=2
x14+x24+x34=1
A célunk a hozam maximalizálása:
z=0,19x11+0,17x12+0,2x13+0,16x14+0,094x21+0,098x22+0,089x23+0,092x24+0,078x31+
+0,08x32+0,072x33+0,066x34→max
A modell megoldása kézi eszközökkel hosszadalmas. 6
A disztribúciós módszer
A disztribúciós módszer lényege: felveszünk egy lehetséges induló
programot és azt javítjuk az optimumig.
A módszert egy, a kézi megoldásban már közepes nagyságúnak számító feladat
megoldásával mutatjuk be.
R1 R 2 R3 R 4 R5 Fi a feladó helyeket, Rj a célállomásokat jelenti.
F1 6 2 8 7 5 40 A szállítandó és az igényelt mennyiségek a jobboldali
F2 4 3 7 5 9 70 oszlopban, illetve a legalsó sorban találhatók.
F3 2 1 3 6 4 60 A táblázat belsejének ci j eleme az i-edik feladóhelyről
F4 5 6 4 8 3 30 a j-edik célállomásra történő szállításnál a szállított
30 60 50 40 20 mennyiség egy egységére eső költséget jelenti.
A feladat zárt, ha a szállítandó és az igényelt mennyiségek összege megegyezik.
(Ahogy ebben az esetben is.)
Az induló program felírása
Az induló program felírásakor célszerű arra törekedni, hogy a költség-
mátrix lehető legkisebb elemeire a lehető legnagyobb szállításra kerülő
mennyiséget programozzuk.
Ekkor ugyanis viszonylag keveset kell javítanunk az optimum eléréséhez. 7
A költségmátrix redukálása
Az induló program felvételéhez célszerű a költségmátrixot úgy átalakítani, hogy
minden sorban és minden oszlopban legyen legalább egy 0.
A szállítási összköltség szempontjából a ci j költségelemek egymáshoz viszonyított
nagysága a döntő, így minden oszlopból-sorból levonhatunk egy-egy számot.
Oszlop korrekció
6 2 8 7 5 4 1 5 2 2
4 3 7 5 9  2 2 4 0 6
(Mindegyik oszlopból levontunk
C=  ⇒ C’=  rendre 2 1 3 5 3 egységet.)
2 1 3 6 4 0 0 0 1 1
   
5 6 4 8 3 3 5 1 3 0
Az oszlop korrekció a költségekben K’=2⋅30+1⋅60+3⋅50+5⋅40+3⋅20=530
költségcsökkenést jelent.
Sorkorrekció
A sorkorrekciót a C’ mátrixon hajtjuk végre: csak az első sorból kell 1-et levonnunk
és így már minden sorban és oszlopban lesz 0 költségelem.
A sorkorrekció hatása a költségre újabb 1⋅40 értékű csökkentést jelent,
így a költségkorrekció összesen: K”=570.
Az oszlop-sor sorrend helyett a sor-oszlop sorrend szerint is korrigálhatunk.
Ennek a végeredményre nincs hatása. 8
Az induló program előállítása
Az induló program felírásakor a minimális költségelemekre a lehetséges maximális
mennyiséget programozzuk, célszerűen először a 0 költségelemekre.

Elnevezés: a költségmátrixnak azt az elemét, amelyre szállítandó


mennyiséget programoztunk, kötött elemnek nevezzük.
Szabad elem: amelyre nem programoztunk.
Alapszabály: a kötött elemek számát a kritikus szám határozza meg.
A kritikus szám: az összes állomás számából kivonunk egyet.
A példánkban négy feladóhely és öt célállomás van, a kritikus szám: 9-1=8.
Az eredeti A redukált
Az induló szállítási program:
költségmátrix: költségmátrix: 40
6 2 8 7 5  3 0 4 1 1 3 0 4 1 1 40
 4 3 7 5 9  2 2 4 0 6  2 2 4
30
0
40
6 70
   
2 1 3 6 4 0 0 0 1 1
30 20 10
0 0 0 1 1 60
 
 3 5 1 3 0  
10 20
 5 6 4 8 3  3 5 1 3 0 30
A keretezett elemekre programoztuk 30 60 50 40 20 9
a jobb felső részen lévő mennyiséget.
A program javítása
Csak akkor szükséges, ha kötött helyen van nullától különböző szám is.
(Ha csupa nullára programozva sikerült az induló programot felírni, akkor ennél
kisebb költségű program nyilván nem létezhet.)
A körmódszer
Lényege: megvizsgáljuk, hogy áttolhatunk-e bizonyos szállítandó mennyiséget
magas költségű kötött helyről alacsonyabb költségű szabad helyre.
A vizsgálat módja: a szabad helyeket egyenként megpróbáljuk bevonni a program-
ba egy ú.n. kör (vagy más néven: hurok) képzésével.

Kör: minden szabad helyhez egyértelműen tartozik egy kör (haladási irány az illető
szabad helyből kiindulva és oda visszatérve).
A kör képzésekor fordulni csak a kötött elemeken (csúcspontokon) lehet.

Például a költségmátrix első sorának első eleméhez tartozó kör:


40
3 0 Megvizsgáljuk: ha a kör mentén egy egységnyi szállítandó
30 20 mennyiséget mozgatunk, akkor az javít-e a programon.
0 0
10
A programunknak ez a része ekkor így alakul:
39
3 1
0 A költség változást ∆11-gyel jelölve: ∆11=1⋅⋅3+0⋅⋅39+0⋅⋅21+0⋅⋅29=3.
29 21
(A költség nagyobb lett, a c11 elem bevonásával nem javul a program.)
0 0

Javulás: ha megvizsgálva a szabad elemek köreit, a ∆ij értéke negatív lesz.

A ∆ij értéke egyszerűen számolható:


A kör csúcspontjait váltakozó előjelekkel véve összeadjuk a csúcspontok költség-
értékeit. A szabad hely előjele mindig pozitív.
Például: a ∆11 esetén: 3–0+0–0=3.
Vizsgáljuk meg a c22 körét:
30
40
3 0 4 1 1 40 2+ 4

30 40 20 10
2 2 4 0 6 70 0 0
− +
30 20 10
0 0 0 1 1 60
A ∆22 számítása: ∆22 =2–4+0–0=–2, a ∆22 < 0,
10 20
3 5 1 3 0 30 így ezen a körön a program javítható.
30 60 50 40 20
Az eredményünk azt mutatja, hogy 1 egységnyi mennyiség áttolása a szabad
helyre 2 pénzegységgel javítja a programot. 11
A javítás módja
A körön maximum annyi egység mozgatható, hogy a szabad hely kötötté válásával
legalább egy kötött elem szabaddá váljon.
Ez akkor valósul meg, ha a negatív csúcson lévő legkisebb értéket programozzuk
a szabad elemre.
Ilyenkor a pozitív csúcsokon ennyivel nő, a negatívokon ennyivel csökken az oda
programozott érték.
Példa: A c22 körén a javított programrészlet:
40
20 10
2 4 Elvégezzük a javítást: 3 0 4 1 1
20 10 40
30
0 0 2 2 4 0 6
30 30
0 0 0 1 1
10 20
3 5 1 3 0
Az új, javított táblázatot ismét megvizsgáljuk a ∆i j értékekre.
Ahol javítani lehet, azt ott megtesszük.
Majd újabb vizsgálat következhet mindaddig, amíg a ∆i j értékekre
találunk negatív értéket.
Ha már nem lesz ilyen, akkor a programunk optimális.
Ez az eljárás eléggé hosszadalmas. 12
A potenciálok módszere
Lényege: a költségmátrix soraihoz is és oszlopaihoz is egy-egy számot rendelünk
(ezek a potenciálok) úgy, hogy a két potenciál összege minden esetben egyenlő
legyen az illető sorban és oszlopban lévő kötött elemmel.
Például az induló táblánk esetében:
0 0 0 −4 −1
A szabad elemeket a potenciálok hozzárendelésekor
0 . 0 . . . nem írtuk ki.
4 . . 4 0 . A potenciálok segítségével a ∆i j értékek egyszerűen
0 0 0 0 . . számolhatók:
1 . . 1 . 0 Minden költségelemből le kell vonni a neki megfelelő
két potenciál összegét, így kapjuk a ∆i j értékeket.
Az induló táblánk esetén:
 3 0 4 5 2  Amelyik költségelemnél a ∆i j negatív, annak a
 
− 2 −2 0 0 3  körén a program javítható.
[∆ij] =  
 0 0 0 5 2  Ebben az esetben a javítás a c21 vagy a c22 körén
 2 4 0 6 0  végezhető el. (Egyszerre csak az egyiken!)

A javítást ( kötött helyről áttolást a szabad helyre) körmódszerrel végezzük.


13
Ha a c22 körén javítunk, a program a következő lesz:
40
3 0 4 1 1 A táblázatunkat megvizsgáljuk a potenciálok
20 10 40 módszerével:
2 2 4 0 6
A potenciálok: 2 0 2 −2 1
30 30
0 0 0 1 1 0 . 0 . . .
10 20
3 5 1 3 0 2 . . 2 4 0 .
−2 0 . 0 . .
(Ahogy ezt már korábban láttuk.) −1 . . 1 . 0
Kiszámoljuk:
 + 0 + + 0 
 
− 2 0 0 0 +  (A ∆i j táblázatban a pozitív számértékeket
[∆ij] =  
 0 + 0 + +  nem kell kiírni, elég a „+” jel.)
 + + 0 + 0 

Láthatjuk: a javított táblázatunk sem optimális, a c21 körén javítani lehet.

A c21 köre: Az áttolás után:


10 10 Az új táblázatunkba beillesztjük a megvál-
2+ 4 2 4 toztatott részt és ismét elvégezzük a poten-

30 30 20 40
0 0 0 0 ciálokkal a vizsgálatot.
− +
14
(Előjelek!)
Az új vizsgálathoz a potenciálok: ∆ij] táblázat:
A javításhoz a [∆
2 0 2 −2 1 2 0 2 −2 1
0 . 0 . . . 0 . 0 . . .
2 . . 2 4 0 . [∆ij] = 2 . . 2 4 0 .
−2 0 . 0 . . −2 0 . 0 . .
−1 . . 1 . 0 −1 . . 1 . 0

A ∆i j táblázatban nincs negatív érték, így a szállítási programunk már optimális.

Leolvassuk az egyes relációkban szállítandó mennyiségeket (mátrix alakban):


 0 40 0 0 0  A mátrix xij eleme azt jelenti, hogy az i-edik feladótól
10 20 0 40 0  a j-edik célállomásra mekkora mennyiség szállítása
[ X ] = 
20 0 40 0 0  optimális.
  Ennek a szállítási programnak a költsége:
 0 0 10 0 20  K =2⋅10+2⋅20+1⋅10=70, az oszlop és sor redukciós
red
költséggel együtt az összköltség: K=570+70=640.
Alternatív optimum, degeneráció
∆i j] táblázatunkban 0 is szerepel szabad elemnél.
A legutolsó [∆
Ennek jelentése: az illető szabad elem körén mozgatva a lehetséges mennyiséget,
szintén optimumot kapunk. 15
A költséget ez nem befolyásolja, a kapott új optimum alternatív optimum.
Alternatív optimumot kapunk a c32 körén:
10 20 30
A két negatív csúcson egyaránt
0 2 Az áttolás után: 2 2
+ − 20 volt, tehát az áttolással mind-
20 20
0 0+ 0 0 két elem szabaddá vált.

Ilyenkor, ha a tábla még nem optimális, valamelyik elemre 0 értéket programozunk.


Ez a degeneráció esete.
Előfordul, hogy már az induló tábla degenerált. A megoldást a tábla degenerált
volta általában nem zavarja.
A feladatunkban a két alternatív alapmegoldás tehát:
 0 40 0 0 0  0 40 0 0 0 
10 20 0 40 0  30 0 0 40 0 
Xo1 =   Xo2 =  
20 0 40 0 0 0 20 40 0 0 
   
 0 0 10 0 20   0 0 10 0 20 

Az általános megoldást a két alapmegoldás konvex lineáris kombinációja adja:

λ⋅X λ)X02, ahol 0 ≤ λ ≤ 1.


λ⋅ 01+(1–λ
X0=λ⋅

16
Névleges állomások beiktatása
Előfordul, hogy a feladóhelyekről elszállítandó és a célállomások által igényelt
mennyiségek nem egyenlők (nem zárt a feladat).
Ekkor a disztribúciós módszer alkalmazhatóságához névleges állomást (új sort,
vagy új oszlopot) kell beiktatni, amelyre 0 költséggel programozzuk a felesleget,
vagy a hiányt.
Példa: Tekintsük a következő feladatot:
4 5 3 2 60 (A sorkezdő helyen lévő feladóhelyeket és az oszlopfőkön
2 4 6 5 40 a célállomásokat nem írtuk ki.)
10 20 20 30
A feladóhelyeken összesen 100 egység vár elszállításra, a célállomások összesen
80-at igényeltek.
Beiktatunk egy névleges célállomást, amely 0 költséggel „igényli” a hiányzó
20 egységet:
4 5 3 2 0 60 Ez a feladat már „normál” szállítási feladat, a tárgyalt
módszerrel megoldva kapjuk az optimális megoldást:
2 4 6 5 0 40
10 20 20 30 20  0 0 20 30 10
Xo=  
10 20 0 0 10 17
Gyakorlás

Példa: Adjuk meg disztribúciós módszerrel az alábbi táblázattal adott szállítási


feladat valamennyi optimális megoldását:
4 1 2 20
Lehet-e az optimális megoldásban x22=3? Ha igen, akkor
4 2 4 12 mennyi a többi változó értéke?
1 3 3 14
Megoldás: A döntési változó xij, amely az i-edik feladóhelyről
1 2 2 10
a j-edik célállomásra szállítandó mennyiséget jelöli.
11 18 16

Névleges célállomást kell beiktatni. A kritikus szám: 7.


Az induló program (például):
20 A program javítása, első optimum:
17 3
4 1 2 0
1 11  0 17 3 0  Összköltség: K=65.
4 2 4 0 12  
1 13 X01=  0 1 0 11
1 3 3 0 14 11 0 3 0  Az általános megoldás:
0 λX01+(1–λ λ)X02 (0 ≤ λ ≤1)
1
10
2 2 0 10   X =λ
 0 0 10 0 
11 18 16 11
0 14 6 0 Ha x22=3, akkor λ=1/3, és ekkor:
0 4 0 8  0 15 5 0
Alternatív optimuma X02=   0 3 0 9
van a feladatnak: 11 0 3 0 X0p= 
  11 0 1 2
0 0 10 0
 
18
 0 0 10 0
Tiltótarifák
A szállításoknál gyakran előfordul, hogy két állomás között nincs, vagy megszűnik
a szállítási lehetőség.
Csak azt az esetet tárgyaljuk, amikor egy szállítási viszonylatban „tiltótarifa” van
érvényben, azaz nem lehet azon az útvonalon szállítani.
Ha a szállítás költségmátrixában igen nagy költsége van egy elemnek, akkor a
disztribúciós megoldás ezt a relációt automatikusan kikerüli.
A módszer: ha valamely relációban nem lehet szállítani, akkor a megfelelő költség-
elem értéke egy M szám lesz, amely olyan nagy, hogy a költségmátrix redukálása-
kor az értéke lényegében nem változik meg.
Ezután a szokásos módon megoldjuk a feladatot, az adott költségelem biztosan
nem lesz kötött hely.

Példa: Az alábbi szállítási feladatban az 1. és a 2. feladótól a teljes készletet el kell


szállítani. Az 1. feladó az 1. megrendelőnek nem szállíthat.
R1 R 2 R 3 R 4 Cél a költség minimum.
F1 4 3 5 6 40 Megoldás: A döntési változó xij, amely az i-edik
F2 3 5 4 7 80 feladóhelyről a j-edik célállomásra szállí-
F3 2 3 5 4 90 tandó mennyiséget jelöli.
19
70 70 40 20 Névleges rendeltetési helyet kell beiktatni.
A kritikus szám: 7.

Az induló program (például):


40
M 3 5 6 M 40 Ha az első feladó az első megrendelőnek nem
20 40 20 szállíthat, az azt jelenti, hogy x11=0.
3 5 4 7 M 80
70 10 10 Ez akkor következik be, ha a megfelelő költség-
2 3 5 4 0 90
elem igen nagy, azaz c11=M.
70 70 40 20 10
Ha az 1. és 2. feladónál nem maradhat áru, ez akkor teljesül, ha ez a két feladó
a névleges állomásnak „nem szállít”: x15=x25=0, azaz c15=c25=M.

Ezután következik a program javítása az optimumig, az optimum:

 0 40 0 0 0 
X0= 40 0 40 0 0  Az összköltség minimuma: K=630.
 
30 30 0 20 10 A 3. feladónál 10 egység áru marad.

Látható, hogy a program kikerülte a „tiltott” helyeket.


A szállítási feladatok egyszerűen megoldhatók számítógéppel.

A fejezet tárgyalását befejeztük. 20

You might also like