Útkeresési eljárás a városi közforgalmú közlekedés szimulációjához

Hasonló dokumentumok
bármely másikra el lehessen jutni. A vállalat tudja, hogy tetszőlegesen adott

INFORMATIKA javítókulcs 2016

Programozási módszertan. Mohó algoritmusok

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

Diszkrét matematika 2. estis képzés

BBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga

Gráfelméleti alapfogalmak

Mérési jegyzőkönyv. az ötödik méréshez

Diszkrét matematika 2.

VÁLTOZIK A HELYI JÁRATOK KÖZLEKEDÉSE

Diszkrét matematika 2. estis képzés

Diszkrét matematika 2.C szakirány

Ausztria-Magyarország határon átnyúló közlekedési modell készítése

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

Dinamikus programozás vagy Oszd meg, és uralkodj!

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

MELLÉKLETEK. a következőhöz: A BIZOTTSÁG FELHATALMAZÁSON ALAPULÓ RENDELETE

Diszkrét matematika 2. estis képzés

Nyári menetrendi módosítások

J A V A S L A T. Előterjesztő: Polgármester Előkészítő: PH. Településfejlesztési és Vagyongazdálkodási Osztály. Ózd, március 26.

Válogatott fejezetek a közlekedésgazdaságtanból

Permutáció n = 3 esetében: Eredmény: permutációk száma: P n = n! romámul: permutări, angolul: permutation

A KNYKK Zrt. Üzletszabályzata 9. módosításának változásai

transit TÜKE BUSZ Zrt. menetrend app Felhasználói kézikönyv Verzió: transit t HC LINEAR MŰSZAKI FEJLESZTŐ KFT.

Diszkrét matematika 2.C szakirány

A digitális számítás elmélete

100% BIO Natur/Bio kozmetikumok és testápolás

angolul: greedy algorithms, románul: algoritmi greedy

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

7 7, ,22 13,22 13, ,28

Diszkrét matematika 2.C szakirány

2018, Diszkrét matematika

Melléklet. 9. számú melléklet a Közszolgáltatási Szerződéshez. a belföldi közforgalmú menetrend szerinti helyközi (távolsági) autóbuszközlekedés

Algoritmuselmélet 2. előadás

Occam 1. Készítette: Szabó Éva

III. Cím TÁJÉKOZTATÁS

Tudáspróba Informatika felmérő feladatok

Algoritmusok helyességének bizonyítása. A Floyd-módszer

Helyi közforgalmú közlekedési rendszerek tervezése tapasztalatok az elmúlt 20 évből

Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék

Algoritmizálás és adatmodellezés tanítása 3. előadás

file://c:\coeditor\data\local\course410\tmp.xml

Szabványos adatstruktúra a közösségi közlekedés számára

Tájékoztató Új, utasbarát menetrend Dunaharaszti helyi közlekedésében

... fi. ... fk. 6. Fabejáró algoritmusok Rekurzív preorder bejárás (elsőfiú-testvér ábrázolásra)

Mobilitás-utazási módok

Imperatív programozás

Algoritmuselmélet 7. előadás

MÓDOSUL A REPTÉRI KÖZÖSSÉGI KÖZLEKEDÉS, ELINDUL AZ ÉJSZAKAI VILLAMOS-KÖZLEKEDÉS

Vonali menetrend. Budapest Pilisvörösvár Piliscsaba Esztergom S72 G72 Z május 20-tól december 8-ig

A 2013/2014 tanévi Országos Középiskolai Tanulmányi Verseny döntő forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

Új kihívások a közúti közösségi közlekedésben. Előadó: Ungvári Csaba üzemeltetési vezérigazgató-helyettes április 10.

Tartalomjegyzék. 1. Rövid áttekintés Az alkalmazás bemutatása Vonalak Részletes lista... 5

Fordítás Kódoptimalizálás

Tuesday, March 6, 12. Hasító táblázatok

Nagy Sándor Szeged Megyei Jogú Város Önkormányzati Képviselő 6720 Szeged, Széchenyi tér Módosító indítvány

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

Kupac adatszerkezet. 1. ábra.

Vonali menetrend. Budapest Cegléd Szolnok. Érvényes: december 14-től december 12-ig

Tervez2 Monor gyakorló leírása

Vonali menetrend. Budapest Tatabánya Győr Tatabánya Oroszlány. Érvényes: december 14-től december 12-ig

Közforgalmú közlekedés II.

Megújul Szigetszentmiklós közösségi közlekedése

A TRAM-TRAIN HELYE ÉS SZEREPE A VASÚTI KÖZLEKEDÉSBEN

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

Adatszerkezetek 7a. Dr. IványiPéter

Pannonhalmi Borvidék Vince-napi pincejárás január

Újjáélesztett vasúti kapcsolat Rajka Bratislava-Petržalka között. Hogyan tovább?

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?

2. Visszalépéses keresés

1-es számú Függelék: Központi és területi elérhetőségek: Központi elérhetőségek:

Algoritmusok. Hogyan csináljam?

INVERSE MULTIPLEXER RACK

Tervezett hálózati és menetrendi változások

BASH SCRIPT SHELL JEGYZETEK

Tájékoztató a helyi autóbusz-menetrend változásáról

A személyközlekedés minősítési rendszere

A RÉGIÓ 2007 KÖZLEKEDÉSI KORLÁTOLT FELELŐSSÉGŰ TÁRSASÁG SZEMÉLYSZÁLLÍTÁSI ÜZLETSZABÁLYZATA

MENETRENDI HIRDETMÉNY

FELHASZNÁLÓI KÉZIKÖNYV

FELHASZNÁLÓI KÉZIKÖNYV SCHEDULEDETAIL KEZELÉSI ÚTMUTATÓ (TATABÁNYA VÁROS KÖZLEKEDÉSE) 1.00 verzió Dátum:

A budai Vár közlekedési rendszerének módosítása

Autóbusz előnyben részesítésének lehetőségei

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él.

Programozási segédlet

Algoritmizálás, adatmodellezés tanítása 6. előadás

Ózd Város Önkormányzata Képviselő-testületének 36/2011. (XII. 23.) önkormányzati rendelete a helyi autóbusz közösségi közlekedés díjáról

J A V A S L A T. Előterjesztő: Polgármester Előkészítő: PH. Településfejlesztési és Vagyongazdálkodási Osztály. Ózd, február 21.

Dinamikus programozás - Szerelőszalag ütemezése

270/2009. (XII. 1.) Korm. rendelet

GROVER-algoritmus. Sinkovicz Péter. ELTE, MSc II dec.15.

FELHASZNÁLÓI KÉZIKÖNYV XMAP (EXTENDED MAP) KEZELÉSI ÚTMUTATÓ (TATABÁNYA VÁROS KÖZLEKEDÉSE)

Diszkrét matematika 2.

Osztott rendszer. Osztott rendszer informális definíciója

VBKTO logisztikai modell bemutatása

Nyíregyházi Egyetem Matematika és Informatika Intézete. Fájl rendszer

MENETRENDI ÉRTESÍTÉS

2016, Diszkrét matematika

Algoritmuselmélet. Gráfok megadása, szélességi bejárás, összefüggőség, párosítás. Katona Gyula Y.

Átírás:

a városi közforgalmú közlekedés szimulációjához Prileszky István prile@sze.hu Pusztai Pál pusztai@sze.hu

Bemenő és eredmény adatok Hálózat és menetrend Utazási igények Útkeresési paraméterek Útkeresés A kielégíthetetlen utazási igények A kielégíthető utazási igények útvonaltervei Egyéb eredmények Jellemzők Az útkeresést a szimulációtól függetlenül futtatható Windows alkalmazás végzi. Az adatok tárolása, a szimulációval való kommunikáció szövegfájlokkal történik. 2

Bemenő adatok Hálózati adatok Megállók Azonosító Megnevezés Gyűjtőmegálló azonosítója Gyűjtőmegállók Azonosító Koordináták, méret A gyűjtőmegállóhoz tartozó megállók azonosítói 3

Bemenő adatok Hálózati adatok Vonalak Azonosító Megnevezés A jármű által (sorban) érintett úthálózati élek azonosító megállók mindegyikére: azonosító, elérési idő (percben) 4

Bemenő adatok Menetrendi adatok Járatok Azonosító Indulási idő (óra, perc) A járat vonalának azonosítója 5

Bemenő adatok Utazási igények Egy-egy személyre vonatkozóan Azonosító Időpont (óra, perc) Kezdő gyűjtőmegálló azonosítója Cél gyűjtőmegálló azonosítója 6

Bemenő adatok Egyéb adatok Útkeresési paraméterek Az egy viszonylatban meghatározandó legrövidebb utak maximális száma (1-10) A maximális eltérés a legjobb eljutáshoz képest (0-60) Az egy utazás során megtehető átszállások maximális száma (0-5) 7

Teszthálózat 1 8

Teszthálózat 2 Adatok száma Megállók: 434 Gyűjtőmegállók: 221 Vonalak: 124 Járatok: 555 Időszak: 4.28 9.56 Utazási igények: 21656 9

Eredmény adatok Kielégíthetetlen utazási igények Az utazási igények formátumában 10

Eredmény adatok Kielégíthető utazási igények Az utazási igények és a hozzájuk tartozó fák azonosítója A különböző fák/útvonaltervek 11

Eredmény adatok Egyéb eredmények Információk a megtalált legrövidebb utakról Járatokat, megállókat, gyűjtőbeli eléréseket tartalmazó utak Vonalakat, gyűjtőbeli első megállókat tartalmazó utak 12

A legrövidebb út Dijkstra ( Járatok, Vonalak, Megállók, Gyűjtők, Kp, Vp, IIdő, T, C, B ) /* Kezdőállapot */ for az összes i megállóra /* Egyik megálló sem elérhető */ T[i] Végtelen; C[i] NincsCímke; B[i] NincsCímke; Akt[i] hamis /* Az aktív pontok halmaza */ A {} /* Kp gyűjtőjében való megállók beállítása * for az összes y megállóra Kp gyűjtőjében T[y] IIdő; C[y] Kp if y Kp B[y] GyűjtőbeliElérés /* y hozzávétele az aktív pontokhoz (A) */ A A + {y}; Akt[y] igaz /* Javító lépések */ 13

A legrövidebb út /* Javító lépések */ Vége hamis while A {} And Not Vége x Legyen A minimális távolságú (T) eleme if x = Vp else Vége igaz /* x törlése A-ból */ A A {x}; Akt[x] hamis /* Rövidítés x-beli átszállással */ for az összes j járaton indulási idő szerinti sorrendben v a j járat vonala if v még nem vizsgált /* Egy vonalat csak egyszer vizsgáljunk meg */ if Megáll-e x-ben a j járat és az érkezés x-be T[x] /* x-beli átszállással rövidítünk a j járattal az x-t követő megállókban */ for az x utáni összes y megállóra a v vonalon idő az y-ba való érkezés ideje if idő < T[y] /* y gyűjtőjében lévő megállók elérhetőségének módosítása */ 14

A legrövidebb út /* y gyűjtőjében lévő megállók elérhetőségének módosítása */ for az összes z megállóra y gyűjtőjében /* A z megálló elérhetőségének módosítása */ T[z] idő if z = y else /* Járattal történő elérés */ C[z] x; B[z] j /* Gyűjtőbeli elérés */ C[z] y; B[z] GyűjtőbeliElérés /* Ha z még nem aktív, akkor hozzávesszük A-hoz */ if Not Akt[z] A A + {z}; Akt[z] igaz 15

A legrövidebb utak egy segédeljárás Feladat Egy elérhetőség (időben rendezett) bejegyzése egy adott megállónál. Paraméterek Input Akt_T: az elérés ideje (napon belüli percben) Akt_C: az előző megálló (ahol a felszállás történt a járatra) azonosítója Akt_B: az elérést biztosító járat azonosítója Akt_D: a járaton töltött utazási idő (percben) Hol: az a megálló (amelynek az elérést adminisztráljuk) IdőLimit: az az időhatár (napon belüli percben), amelyen belül még adminisztrálunk Input/Output T, C, B, D: az eléréseket tároló változók (minden megállóhoz több elérés tartozhat) Beszúr ( Akt_T, Akt_C, Akt_B, Akt_D, Hol, IdőLimit, T, C, B, D ) if Akt_T IdőLimit if Még nem szerepel ez az elérhetőség a Hol megállónál Felvesszük az új elérhetőséget (Akt_T, Akt_C, Akt_B, Akt_D) a Hol megállónál 16

A legrövidebb utak az elérések meghatározása Dijkstra-K ( Járatok, Vonalak, Megállók, Gyűjtők, Kp, IIdő, IdőLimit, T, C, B, D ) /* Kezdőállapot */ for az összes i megállóra /* Egyik megálló sem elérhető */ T[i][0] Végtelen; C[i][0] NincsCímke; B[i][0] NincsCímke; D[i][0] NincsCímke; Akt[i] 0 /* Az aktív pontok halmaza */ A {} /* Kp gyűjtőjében való megállók beállítása * for az összes y megállóra Kp gyűjtőjében if y Kp else /* Azonos gyűjtőbeli elérés */ Beszúr ( IIdő, Kp, GyűjtőbeliElérés, 0, y, IdőLimit, T, C, B, D ) Beszúr ( IIdő, Kp, NincsCímke, 0, y, IdőLimit, T, C, B, D ) /* y hozzávétele az aktív pontokhoz (A) */ A A + {y}; Akt[y] 1 /* Javító lépések */ 17

A legrövidebb utak az elérések meghatározása /* Javító lépések */ Vége hamis while A {} And Not Vége x Legyen A minimális távolságú (T) eleme if T[x] IdőLimit else Vége igaz /* x törlése A-ból */ A A {x}; Akt[x] 2 /* Rövidítés x-beli átszállással */ for az összes j járaton indulási idő szerinti sorrendben v a j járat vonala if Megáll-e x-ben a j járat és az érkezés x-be T[x] /* x-beli átszállással rövidítünk a j járattal az x-t követő megállókban */ for az x utáni összes y megállóra a v vonalon idő az y-ba való érkezés ideje utazás az x-ből y-ba való utazás ideje /* y gyűjtőjében lévő megállók elérhetőségének módosítása */ 18

A legrövidebb utak az elérések meghatározása /* y gyűjtőjében lévő megállók elérhetőségének módosítása */ for az összes z megállóra y gyűjtőjében if z = y /* Járattal történő elérés */ Beszúr ( IIdő, x, j, utazás, z, IdőLimit, T, C, B, D ) else /* Gyűjtőbeli elérés */ Beszúr ( IIdő, y, GyűjtőbeliElérés, 0, z, IdőLimit, T, C, B, D ) /* Ha z-t most értük el, akkor hozzávesszük A-hoz */ if Akt[z] = 0 A A + {z}; Akt[z] 1 19

A legrövidebb utak az elérések meghatározása Egy járatot miért vizsgálunk meg többször a rövidítések során? M1-M3 viszonylatban Megtalált út: M1 J1 M3 Nem megtalált út: M1 J2 M2 J1 M3 M1 7.00 7.15 7.30 7.05 J1 M2 7.10 M3 J2 M1-M2 viszonylatban Megtalált út: M1 J1 M2 Nem megtalált út: M1 J1 M3 J2 M2 M1 7.00 M2 7.10 J2 M3 7.25 7.30 7.20 J1 M4 7.40 20

A legrövidebb utak az utak összerakása Összerak ( T, C, B, D, Kp, Vp, K, Átsz, Elsőhívás, Idő, Ut, Utak, UtakDb, Vége ) if Not Vége AktUtDb Ut.UtDb if (Vp = Kp) And (C[Vp][0] = Kp) /* A kezdőponthoz értünk, van egy újabb út */ else Ut1 az Ut megfordítva Ut1 az Ut1 úgy, hogy az egymás melletti járatokat összevonjuk if Nincs még ilyen járatokból álló út az Utak között UtakDb UtakDb + 1 Vegyük fel az Utak közé az Ut1 utat if UtakDb = K Vége igaz /* Még nem a Kp-nál vagyunk, vegyük (időrendben) Vp megfelelő elérhetőségeit */ 21

A legrövidebb utak az utak összerakása /* Még nem a Kp-nál vagyunk, vegyük (időrendben) Vp megfelelő elérhetőségeit */ Db Vp elérhetőségeinek száma i 0 while (i Db 1) And (Elsőhívás Or Not Elsőhívás And (T[Vp][i] Idő)) Jó igaz /* Két egymást követő GyűjtőbeliElérés-t tartalmazó utat nem építünk */ if B[Vp] = GyűjtőbeliElérés if Az Ut utolsó járata = GyűjtőbeliElérés Jó hamis /* Kört tartalmazó utat nem építünk */ if Jó And Vp benne van az eddig épített Ut-ban Jó hamis if Jó And B[Vp][i] GyűjtőbeliElérés if B[Vp][i] benne van az eddig épített Ut-ban Jó hamis /* A maximális átszállásszámot ne haladjuk meg */ JDb Az Ut valódi (nem gyűjtőbeli elérést jelentő) járatainak száma if JDb 1 > Átsz Jó hamis 22

A legrövidebb utak az utak összerakása if Jó i i + 1 if Elsőhívás /* Az út hosszának beállítása */ Ut.UtH T[Vp][i] Idő /* Az Ut bővítése */ Ut az Ut kibővítve az út végén a Vp ponttal és a B[Vp][i] járattal /* Rekurzív hívás */ Összerak ( T, C, B, D, Kp, C[Vp][i], K, Átsz, hamis, T[Vp][i] D[Vp][i], Ut, Utak, UtakDb, Vége ) /* Az Ut visszaállítása */ Ut.UtDb AktUtDb Ut az Ut elemeinek (UtP, UtJ) számát csökkentsük Ut.UtDb-ra */ 23

A legrövidebb utak a k db legrövidebb út előállítása Feladat Egy gyűjtőmegálló viszonylatban adott indulási idővel (IIdő) meghatározni az adott feltételeknek (K, Átsz, Eltérés) eleget tévő legrövidebb utakat. Paraméterek Input: az output paraméterek kivételével mindegyik Output: Utak, UtakDb GyUt ( Járatok, Vonalak, Megállók, Gyűjtők, KGy, VGy, IIdő, K, Átsz, Eltérés, Utak, UtakDb ) UtakDb 0 Kp a KGy gyűjtőmegálló első megállója Vp a VGy gyűjtőmegálló első megállója Dijkstra ( Járatok, Vonalak, Megállók, Gyűjtők, Kp, Vp, IIdő, T, C, B ) if T[Vp] < Végtelen IdőLimit T[Vp] + Eltérés Dijkstra-K ( Járatok, Vonalak, Megállók, Gyűjtők, Kp, IIdő, IdőLimit, T2, C2, B2, D2 ) /* Az Összerak hívás előtti kezdőértékek */ Ut egy üres út Vége hamis Összerak ( T2, C2, B2, D2, Kp, Vp, K, Átsz, igaz, IIdő, Ut, Utak, UtakDb, Vége ) 24