A matematikai modell:
6. JÁRATSZERKESZTÉSI FELADATOK
6.2. Járműkapacitással korlátozott egycentrumos járatszerkesztés
6.2.1 A klasszikus megoldás
A számításokat a szemléletesség és az érthetőség megkönnyítése érdekében két táblázat-ban végezzük. Az első tábla a megtakarítási mátrixot és a megrendelt mennyiségeket, a második t1, t2,...tl terhelhetőség szerint csökkenő sorba rendezett a J1, J2,...,Jl járműveket és mk terhelésüket tartalmazza. Az induló táblák a 6.6/a és a 6.6/b táblázatok.
1. lépés
Megkeressük az sij mátrix (6.6/a táblázat) legnagyobb elemét, ezt jelöljük sxy-nal, azaz }
,..., 2 , 1
; ,..., 2 , 1
max{s i nj n
sxy ij .
6.6/a táblázat
P1 P2 P3 P4 P5 P6 ri
P1 0 450 157 38 450 450 4
P2 450 0 157 38 696 626 3
P3 157 157 0 62 157 157 4
P4 38 38 62 0 38 38 2
P5 450 696 157 38 0 835 3
P6 450 626 157 38 835 0 2
A második táblából (6.6/b táblázat) pedig kiválasztjuk az első járművet, ennek
teherbírá-sa tk, majd megvizsgáljuk, hogy a jármű kapacitása lehetővé teszi-e a két út összevonását, akkor az utak összevonhatók.
6.6/b táblázat út-megtakarítás 835 km. A P5 és P6 fogyasztók igényeit ezzel kielégítettnek tekinthetjük. Az s56 elem ismételt kiválasztását és a járat záródását úgy akadályozzuk meg, hogy az első táblában lefedjük az 5-dik sort és a 6-dik oszlopot, valamint az s65 elem helyére 0-t írunk.
Ezzel egyidejűleg a r5 és r6 értékét csökkentsük 0-ra, a második táblában pedig a J1
Mivel s25>s62, továbbá az
10 8
2 3
3 1
6 5
2rr t
r ,
ezért a P5-P6 járatot elölről bővítjük. Az összevonás után az első járat állomásai P0-P2 -P5-P6-P0 lesznek. Az így elért összes megtakarítás:
s25+s56 = 696 + 835 = 1531 km.
Ezt követően az első táblában fedjük le a 2-dik sort és az 5-dik oszlopot, valamint az s62 elem helyére írjunk 0-t. Ezzel egyidejűleg a r2 értékét csökkentsük 0-ra, a második táblá-ban pedig a J1 jármű terhelését növeljük r2=3-mal. A változtatások eredményeként a 6.8/a és a 6.8/b táblázatokat kapjuk.
6.8/a táblázat
P1 P2 P3 P4 P5 P6 ri
P1 0 450 157 38 450 450 4
P2 450 0 157 38 696 626 0
P3 157 157 0 62 157 157 4
P4 38 38 62 0 38 38 2
P5 450 696 157 38 0 835 0
P6 450 0 157 38 0 0 0
6.8/b táblázat
Jármű J1 J2 J3 J4 J5 J6 J7
tk [t] 10 10 6 6 6 6 6
mk [t] 8 0 0 0 0 0 0
3. lépés
A következő lépésben kíséreljük meg a P2-P5-P6 járatot P2-be menő vagy P6-ból induló úttal bővíteni. Most maximális sij elemet a 6.8/a táblázat 6-dik sorában és a 2-dik oszlo-pában keresünk:
450 }
,..., 2 , 1
max{s6j j n s61 , 450 }
,..., 2 , 1
max{si2i n s12 . 6.9/a táblázat
P1 P2 P3 P4 P5 P6 ri
P1 0 450 157 38 450 450 4
P2 450 0 157 38 696 626 0
P3 157 157 0 62 157 157 4
P4 38 38 62 0 38 38 2
P5 450 696 157 38 0 835 0
P6 450 0 157 38 0 0 0
Az P1 állomás egyaránt kapcsolható lenne P2 elé vagy P6 mögé, ha ezt a J1 jármű teher-bírása lehetővé tenné. Mivel azonban az
10 6-dik sor és a 2-dik oszlop, a második táblában pedig az első oszlop lefedésével jelzünk (6.9/a és 6.9/b táblázatok).
6.9/b táblázat legnagyobbat (6.9/a táblázat), a második táblából pedig kiválasztjuk a második járművet (6.9/b táblázat):
Elvégezzük a szokásos adminisztrációt: az első táblában lefedjük az első sort és a harma-dik oszlopot, az s31 elem helyére 0-t írunk, a r1 és r3 értékét 0-ra csökkentjük (6.10/a táblázat), a második táblában a J2 jármű terhelését r1+r3=8-cal növeljük (6.10/b táblá-zat). A megtakarítás: 157 km.
6.10/a táblázat ma-ximális sij elemet keresünk a 6.10/a táblázat harmadik sorában és az első oszlopában:
62
Mivel s34>s41, továbbá az
10 10
2 4
4 2
4 3
1rr t
r ,
ezért a P1-P3 járatot hátulról bővítjük. Az összevonás után a második járat által érintett pontok P0-P1-P3-P4-P0 lesznek. Az első táblában lefedjük az 3-dik sort és az 4-dik oszlo-pot, az s41 elem helyére 0-t írunk, valamint a r4 értékét 0-ra csökkentjük (6.11/a táblá-zat). A második táblában pedig az J2 jármű terhelését növeljük r4=2-vel (6.11/b táblá-zat). A második járatnál elért útmegtakarítás:
s13+s34 = 157+62 =219 km.
6.11/a táblázat
P1 P2 P3 P4 P5 P6 ri
P1 0 450 157 38 450 450 0
P2 450 0 157 38 696 626 0
P3 0 157 0 62 157 157 0
P4 0 38 62 0 38 38 0
P5 450 696 157 38 0 835 0
P6 450 0 157 38 0 0 0
6.11/b táblázat
Jármű J1 J2 J3 J4 J5 J6 J7
tk [t] 10 10 6 6 6 6 6
mk [t] 8 10 0 0 0 0 0
6.3. ábra. A mintapélda megoldása
További összevonásra már nincs lehetőség. A szállítást a leggazdaságosabban a két járat-tal, 10 t teherbírású járművekkel lehet lebonyolítani. A járatok által érintett pontok:
P0-P2-P5-P6-P0,
P0-P1-P3-P4-P0.
Az összes útmegtakarítás: 1531+219 = 1750 km. A járatok útvonalait grafikusan a 6.3.
ábra szemlélteti. A megtett utak:
s1=348+105+65+447=965 km, s2=225+167+87+50=529 km.
6. lépés
A járatok útvonalai körutakat alkotnak, és a körutak élein szállított mennyiségek külön-bözőek. Egy élhez tartozó szállítási munka az élhosszúság és az élen szállított mennyiség szorzata:
ij ij
ij c q
W ,
ahol: cij az i-edik és a j-edik pont közötti távolság, qij pedig az ij élen szállított mennyi-ség.
Könnyen belátható, hogy az éleken szállított mennyiségek nagysága, és így a szállítási munka nemcsak az útösszevonások, hanem a körút bejárási sorrendjének is függvénye.
Például, ha a mádodik járatnál az eredményként kapott bejárási sorrendet (P0-P1-P3-P4 -P0) követjük, akkor az összes szállítási munka:
c01 q01 c13 q13 c34 q34 c40 q40
W 225∙10+167∙6+87∙2+50∙0=3426 tkm.
Ha megfordítjuk a bejárási sorrendet, azaz a P0-P4-P3-P1-P0 útvonalat követjük, akkor a következő eredményt kapjuk:
c04 q04 c43 q43 c31 q31 c10 q10
W 50∙10+87∙8+167∙4+225∙0=1864 tkm,
ami lényeges eltérést mutat a második bejárási sorrend javára. Ezért minden esetben meg kell vizsgálni, hogy a szállítási munka szempontjából melyik bejárási sorrend ad kedve-zőbb megoldást.
Az első járat vizsgálata arra az eredményre vezet, hogy az eredeti bejárási sorrendhez (P0-P2-P5-P6-P0) tartozó összes szállítási munka 3439 tkm kisebb, mint a fordított sor-rendhez (P0-P6-P5-P2-P0) tartozó, ami 4281 tkm. A járatok optimális bejárási sorrendje tehát:
P0-P2-P5-P6-P0, P0-P4-P3-P1-P0. Az algoritmus leírása
A mintapélda megoldása után fogalmazzuk meg kicsit általánosabban a problémát és foglaljuk össze az algoritmust.
A szállítási pontokat (a centrumot és a fogyasztókat) szimbolizálja a G=(P,E) irányítatlan gráf, amely a P szállítási pontok és az E élek halmazából áll. A P halmaz elemeit jelölje pi (i=0,1,2,...,n), az E halmaz elemeit pedig eij (i=j=0,1,2,...,n). Ha a pi össze van kötve pj-vel, akkor eij=1, különben eij=0. Az eij-hez rendelt távolsági mátrix cij elemei jelentsék a szállítási pontok közötti legrövidebb utakat. Ha eij=0, akkor cij=M, ahol M végtelen nagy szám. A P halmaz pi elemeihez rendeljük a megrendelésvektor ri elemeit. Megálla-podás szerint p0 jelentse a centrumot.
Legyen J a rendelkezésre álló járművek halmaza, amelynek minden jk (k=1,2,... ,l)
ele-méhez hozzárendeljük a járműveket jellemző tk teherbírás- és az mk terhelésvektorokat.
1. Rendezzük a J halmazt a tk teherbírás szerint csökkenő sorrendbe.
2. A kapacitáskorlát miatt összevonásra alkalmatlan utakat a vizsgálatból kivonjuk. Eh-hez képezzük a ri(u)/tk hányadosokat minden i>0-ra és k-ra. Ha a
és vesszük a következő járművet, vagyis a k index értékét növeljük eggyel. Ha 1 azokat a szállítási pontokat, ahol ri=0 elhagyjuk, illetve az elhagyott pontoknak megfele-lő sorokat és oszlopokat a cij mátrixból töröljük.
3. Az új cij távolsági mátrixból az képletekkel kiszámítjuk az sij megtakarítási mátrix elemeit.
4. Az sij mátrix fedetlen elemei között megkeressük a legnagyobbat:
}
Ha találtunk 0-nál nagyobb elemet, akkor az 5. lépéssel folytatjuk, különben az eljárás befejeződött.
5. A rendezett J halmazból vegyük a következő jk járművet, amelynél mk=0, és megvizs-gáljuk a p0-px-p0 és a p0-py-p0 utak összevonásának lehetőségét:
Ha a rx+rytk, akkor az utak összevonhatók. Lefedjük az x-edik sort és az y-adik oszlo-pot, majd végrehajtjuk a következő változtatásokat:
y
és a 6. lépéssel folytatjuk.
Ha a rx+rytk, akkor nincs lehetőség az utak összevonására. Lefedjük az y-adik oszlopot, majd végrehajtjuk a következő változtatásokat:
y
k r
m : , :0 ry , és visszatérünk a 4. lépéshez.
6. A px-py járatot megpróbáljuk px-be menő vagy py-ból induló úttal bővíteni. Ezért meg-keressük az y-adik sor és az x-edik oszlop maximális elemeit, majd ezek közül először a nagyobbat választjuk:
max{s jyj 1 2, ,..., }n syj*,
x
ixi n si
s 1,2,...,} *
max{ .
Ha az
x i
yj s
s * * , és a tkmkrj*, akkor a járatot hátulról, az y-ból induló és a j*-ba me-nő úttal bővítjük. Lefedjük az y-adik sort és a j*-edik oszlopot, majd
: k j*
k m r
m ,
* : , 0 : , 0
: *
* r y j
rj jx , és megismételjük a 6. lépést.
Ha az
x i
yj s
s * * , és a tkmkri*, akkor a járatot elölről, az i*-ból induló és az x-be menő úttal bővítjük. Lefedjük az i*-edik sort és a x-edik oszlopot, majd
: k i*
k m r
m ,
* : , 0 : , 0
: *
* s x i
ri yi , és megismételjük a 6. lépést.
Különben nincs lehetőség az útösszevonásra, ezért lezárjuk a járatot: lefedjük az y-adik sort és az x-edik oszlopot, majd visszatérünk a 4. lépéshez.