Reisbegeleidingssysteem
Versie 1.0
Documentatie
Door R. Kroon en J.M.P. van Waveren
Naar idee van drs dr L.J.M. Rothkrantz
Inhoudsopgave
1. Inleiding *
1.1 Waarom reisbegeleiding *
1.2 Probleem beschrijving. *
1.3 Huidige situatie *
1.3.1 Wat is OVR? *
2. Ontwerp *
2.1 Objecten *
2.1.1 Communicatie *
2.1.2 Informatie per object *
2.2 Agent acties *
3. Aanbevelingen *
Voorwoord
Dit reisbegeleidingssysteem is gemaakt als onderdeel van de vakken ‘Real-Time Artificial Intelligence" (vakcode in422) en ‘Parallellisme in Artificial Intelligence en multimediale sensor informatica (vakcode in426), gegeven aan de Technische Universiteit Delft voor de opleiding Technische Informatica. De opdracht is een idee van de docent van beide vakken, drs dr L.J.M. Rothkrantz. Deze speelde met de gedachte dat er in huidige informatiemaatschappij toch meer gedaan kon worden aan de informatievoorziening van de Nederlands Spoorwegen aan de treinreizigers. Zeker nu steeds meer mensen altijd en overal bereikbaar zijn via hun mobiele telefoon. Dit idee is uitgewerkt en heeft geleid tot een reisbegeleidingssyteem met een gesimuleerde GSM. Ondergetekenden bedanken drs dr L.J.M. Rothkrantz en ir R.J. van Vark voor hun ideeën en begeleiding. Ondanks het wellicht geringe verband met het vak in426 is dit zeker een leerzame opdracht geweest, waar ondergetekenden met plezier hard aan gewerkt hebben.
J.M.P. van Waveren
R. Kroon
- Inleiding
In deze inleiding vindt U allereerst een verhaal dat het mogelijke nut van een reisbegeleidingssyteem duidelijk maakt. Daarna volgt een probleembeschrijving en tot slot een schets van de huidige stand van zaken wat betreft de reisbegeleiding.
- Waarom reisbegeleiding
U wilt op vrijdagmiddag met de trein van station Delft naar station Kerkrade. U moet zich haasten om toch nog keurig op tijd op station Deflt te komen. Daar aangekomen ziet U dat de trein maar liefst vijftien minuten vertraging heeft. "Loop ik me daarvoor in het zweet!", denkt U. Maar goed dat kun je wel eens hebben natuurlijk. Twintig minuten later vertrekt toch eindelijk nog de trein richting Rotterdam. Daar aangekomen gaat U ervan uit dat U nu Uw overstap toch zeker gemist heeft, dus neemt U alle tijd om naar het andere perron te lopen. Als U op het perron aankomt ziet U net de deuren van Uw overstaptrein dicht gaan, omdat deze ook enigszins vertraagd was. "Tja, soms zit het mee, soms zit het tegen." U denkt er verstandig aan te doen om in plaats van de sneltrein alvast de stoptrein naar Dordrecht te nemen. "Wie weet heb ik dan nog aansluiting op de intercity." Echter op station Barendrecht staat de trein ruim vijf minuten stil en ziet U Uw sneltrein voorbij rijden, die ook op station Dordrecht al weg is voordat U er arriveert. "Verkeerd gegokt, balen!" Uiteraard zijn er dan ook nog eens werkzaamheden aan het spoor tussen Eindhoven en Geldrop, waardoor U moet kiezen om, òf een deel van de reis per bus af te leggen òf om te reizen via Venlo. En op een dag als vandaag kiest U natuurlijk precies het verkeerde, waardoor U nog eens een half uurtje extra vertraging oploopt. Totaal uit Uw ‘hum’ loopt U de laatste meters naar huis. Het is bijna twee uur later dan U vorige week thuis kwam, toen alles gelukkig wel mee zat.
Dat kan natuurlijk ook anders! U belt ‘s ochtends met Uw GSM naar het reisbegeleidingssysteem (RBS) en een half uur voor U zou vertrekken, krijgt U een boodschap op Uw GSM dat Uw trein in Delft reeds vijftien minuten vertraagd is. "Oh, dan hoef ik me ook niet te gaan haasten." Dus U bent ruim op tijd maar zeker niet te vroeg op het station voor de trein naar Rotterdam. Twee minuten voor U uitstapt ziet U op Uw GSM dat Uw overstaptrein ook vertraagd is. U loopt vast naar de uitgang van de trein en als hij stopt bent U er als eerste uit. Als U de andere trein in springt, denkt U, terwijl U de conducteur op zijn fluit hoort blazen: "Zo, die trein heb ik mooi net kunnen halen". Later in Eindhoven meldt Uw reisbegeleider U dat U het beste even iets om kunt reizen via Venlo. Daardoor bent U uiteindelijk slechts een klein kwartiertje later thuis dan anders. "Dat RBS is me toch heel wat waard," beseft U.
- Probleem beschrijving.
Het reisbegeleidingssysteem betreft een systeem dat een reiziger persoonlijk begeleidt tijdens een treinreis. In eerste instantie meldt de reiziger zich per mobiele telefoon aan bij ‘het systeem’. Daarbij geeft hij aan van waar naar waar en hoe laat hij wil reizen. De reiziger krijgt dan informatie over de route die gevolgd moet worden en hoe laat zijn trein vertrekt. Vlak voor aankomst op een station wordt door middel van een boodschap op de mobiele telefoon gemeld dat de reiziger moet uitstappen. Als de reiziger moet overstappen wordt deze tijdig voorzien van de vertrektijd van de overstaptrein en het perron waar deze vertrekt. Als treinen vertraging hebben dan wordt de reiziger daar ook van op de hoogte gesteld. Als de reiziger door een vertraging beter een andere trein kan nemen wordt dat gemeld. Ook de mogelijke vertraging m.b.t. de tijd van aankomst op het eindstation wordt aan de reiziger meegedeeld. Tevens is het mogelijk de reiziger om te leiden als er op een traject (tijdelijk) geen trein rijdt.
- Huidige situatie
Op dit moment is er geen reisbegeleidingssysteem beschikbaar. Echter voor de reisinformatie kan het bedrijf Openbaar Vervoer Reisinformatie (OVR) telefonisch worden geraadpleegd. Deze geeft de gebruiker een volledige route, maar houdt daarbij geen rekening met actuele veranderingen, zoals vertragingen en treinen die op een bepaald traject zijn opgeheven.
Wat is OVR?
Openbaar Vervoer Reisinformatie v.o.f. (OVR) is een samenwerkingsverband van NSReizigers, Verenigd Streekvervoer Nederland en de Vereniging van Stedelijke Vervoerbedrijven. Het bedrijf verzorgt de reisinformatievoorziening van en voor het totale openbaar vervoer in Nederland.
OVR is in 1991 opgericht en in mei 1992 begonnen met het verstrekken van openbaar vervoerreisinformatie via één telefoonnummer: 0900-9292. Via dit nummer worden jaarlijks zo'n tien miljoen gesprekken afgehandeld. Het overgrote deel daarvan betreft reisadviezen van adres naar adres met alle vormen van openbaar vervoer. Daarnaast geven de ruim 400 medewerkers van 0900-9292 ook informatie over tarieven en bijvoorbeeld de beschikbaarheid van Treintaxi of fietsenstalling.
Het belangrijkste hulpmiddel bij het verstrekken van de informatie is de OV Reisplanner, een geavanceerd computerprogramma, waarin onder andere 10.000.000 passeertijden, 210.000 straten, 65.000 halten en zo’n 20.000 bijzondere punten (musea, ziekenhuizen etc) zijn opgenomen.
Het aantal bellers naar 0900-9292 stijgt nog steeds. Daardoor neemt de bereikbaarheid af en nemen de wachttijden toe. Om zoveel mogelijk klanten te woord te kunnen staan maakt OVR bij oplopende wachttijden gebruik van de sprekende computer. Deze verstrekt uitsluitend treinreisadviezen van NS-station naar NS-station.
Ontwerp
Het ontwerp betreft een simulatie voor het werkelijke systeem. Deze simulatie houdt in dat er in plaats van een GSM-telefoon een GSM-programma op een PC wordt gebruikt.
- Objecten
In het reisbegeleidingssysteem kunnen de volgende objecten worden onderscheiden:
- Global System for Mobile Telecommunications telefoon (GSM)
Hiermee meldt de gebruiker zich aan bij het systeem en ontvangt hij boodschappen van zijn agent.
- Centraal reisbegeleidingssysteem (RBS)
Hier worden gebruikers geregistreerd en alle communicatie naar de stations loopt via RBS.
Hier bevinden de agents van de gebruikers zich en hier vindt het bepalen van de optimale route voor een gebruiker plaats.
- Communicatie
Hieronder volgt een overzicht van de communicatie tussen de verschillende objecten.
GSM naar RBS:
Op deze manier kan de gebruiker communiceren met RBS om zich aan te melden en zijn gewenste reis op te geven.
- Disconnect: reden van disconnect
- Contactaddress: adres van de GSM
Dit is het nummer waarop de GSM bereikbaar is.
RBS naar GSM:
Hiermee kan RBS communiceren met de gebruiker om de benodigde informatie op te vragen.
- Disconnect: reden van disconnect
Station naar RBS:
- Connect: stationnaam, station (id)
Hiermee meldt het station zich aan bij RBS.
- Disconnect: reden van disconnect
- MoveAgent: adres van de GSM, station (id) waar de agent naar toe moet, trein (id) waar de gebruiker zich in bevindt, station (id) als eindstation van de gebruiker
Hiermee kan een station een gebruiker naar een ander station sturen via RBS.
- RemoveUser: adres van de GSM
Op deze manier wordt een gebruiker uit het systeem verwijder als hij op het eindstation is aangekomen.
- DelayTrainArrival: startstation (id) van de trein die vertraagd is, eindstation van de trein, trein (id), tijd waarop de trein volgens de dienstregeling zou vertrekken, vertraging van de aankomsttijd van de trein
Hiermee kan bij een station van elke wilekeurige trein in het land de aankomsttijd vertraagd worden.
- DelayTrainDeparture: startstation (id) van de trein die vertraagd is, eindstation van de trein, trein (id), tijd waarop de trein volgens de dienstregeling zou vertrekken, vertraging van de vertrektijd van de trein
Hiermee kan bij een station van elke willekeurige trein in het land de vertrektijd vertraagd worden.
- RemoveTrain: startstation (id) van de trein die verwijderd is, eindstation van de trein, trein (id), tijd waarop de trein volgens de dienstregeling zou vertrekken
Hiermee kan bij een station een willekeurige trein in het land over een bepaald project verwijderd worden.
RBS naar station:
- Disconnect: reden van disconnect
- SpawnAgent: adres van de GSM, station (id) als eindstation van de gebruiker, trein (id) waar de gebruiker zich in bevindt (nul als de gebruiker zich nog niet in een trein bevindt), tijd waarop de gebruiker wil vertrekken
Hiermee kan het RBS bij het station een agent opzetten.
- KillAgent: adres van de GSM
Hiermee kan het RBS een agent weghalen bij het station.
- DelayTrainArrival: startstation (id) van de trein die vertraagd is, eindstation (id) van de trein, trein (id), tijd waarop de trein volgens de dienstregeling zou vertrekken, vertraging van de aankomsttijd van de trein
Hiermee stuurt het RBS de vertraging van de aankomsttijd van een trein door naar alle stations.
- DelayTrainDeparture: startstation (id) van de trein die vertraagd is, eindstation (id) van de trein, trein (id), tijd waarop de trein volgens de dienstregeling zou vertrekken, vertraging van de vertrektijd van de trein
Hiermee stuurt het RBS de vertraging van de vertrektijd van een trein door naar alle stations.
- RemoveTrain: startstation (id) van de trein die verwijderd is, eindstation van de trein, trein (id), tijd waarop de trein volgens de dienstregeling zou vertrekken
Hiermee stuurt het RBS naar alle stations door dat een trein op een bepaald traject verwijderd is.
- SynchronizeTime: Huidige tijd, tijdversnellingsfactor
Op deze manier worden de tijd en de tijdversnellingsfactor bij alle stations gelijk gemaakt aan die bij het RBS.
Agent naar GSM:
- Disconnect: reden van disconnect
- Say: willekeurige string
Hiermee kan de agent boodschappen sturen naar de GSM van de gebruiker.
- Position: x en y positie van de agent, x en y positie van de gebruiker
Voor de simulatie worden op de kaart van Nederland de posities van de agent en de gebruiker weergegeven.
GSM naar agent:
- Disconnect: reden van disconnect
- Informatie per object
GSM
- Bij het GSM-programma is uiteraard het nummer bekend waarop RBS bereikbaar is.
- Verder heeft het programma een poort voor uitgaande communicatie en een voor inkomende communicatie. Deze zijn niet van belang in het geval van een GSM-telefoon, maar wel bij de simulatie.
RBS:
- Er is een lijst met stations die zich hebben aangemeld met daarbij:
- het nummer waaronder het station bereikbaar is
- Er is een lijst met gebruikers met daarbij:
- het nummer waaronder de gebruiker bereikbaar is
- het station waar de agent van de gebruiker is
- het station waar de gebruiker zijn reis start
- het station waar de gebruiker zijn reis beëindigt
- de tijd waarop de gebruiker wil vertrekken
- Bij het RBS wordt de officiële (gesimuleerde) tijd bijgehouden.
Station:
- Voor elk station programma is er het huidige station. (er is één station programma voor elk station)
- Bij het station wordt eveneens de (gesimuleerde) tijd bijgehouden die een kopie is van de tijd bij RBS.
- Er is een lijst van treinen die op dit station aankomen (A treinen) met daarbij:
- het aankomstperron van de trein
- de officiële aankomsttijd
- de vertraging
- een lijst met agents voor de gebruikers die met deze trein aankomen
- Er is een lijst van treinen de op dit station vertrekken (D treinen) met daarbij:
- wat het volgende station is waar de trein stopt
- het vertrekperron van de trein
- de officiële vertrektijd
- de vertraging
- een lijst met agents voor de gebruikers die met deze trein willen vertrekken.
- Er is een lijst met alle agents met daarbij:
- de tijd waarop de gebruiker wil vertrekken
- het gewenste eindstation van de gebruiker
- het nummer van de gebruiker
- de A trein waar de agent in zit (en dus ook de gebruiker)
- de D trein waar de agent in zit (een agent kan zich tegelijkertijd in een A en een D trein bevinden en de D trein is de trein waar de gebruiker op moet overstappen)
- Er is een lijst met agents die nog niet geactiveerd zijn omdat de gebruiker voorlopig nog niet wil vertrekken.
- Er is een complete dienstregeling met daarin:
- alle stations met daarbij:
- verwijzingen naar de treintrajecten die op het station vertrekken en aankomen
- de coördinaten van het station op de kaart van Nederland
- alle treintrajecten die bestaan uit:
- een vertrekstation
- een vertrekperron
- een vertrektijd
- het (eerste volgende) aankomststation
- een aankomstperron
- een aankomsttijd
- een lijst van treinen die vertraagd aankomen met daarbij:
- het beginstation
- het eindstation
- de officiële aankomsttijd
- de vertraging
- een lijst van treinen die vertraagd vertrekken met daarbij:
- het beginstation
- het vertrekstation
- de officiële vertrektijd
- de vertraging
- een lijst van treinen die niet zullen rijden met daarbij:
- het beginstation
- het eindstation
- de officiële vertrektijd
- Voor het bepalen van de route voor de gebruikers wordt een gedeelte van de dienstregeling gekopiëerd voor treinen die in de nabije toekomst vertrekken. Deze kopie bestaat uit:
- een lijst met stations met daarbij:
- een verwijzing naar de treinen die vanaf het station vertrekken
- een lijst van de beste treinen die bestaan uit:
- een verwijzing naar de beste trein die een gebruiker kan nemen om van zijn huidige station naar dat station te gaan
- de periode waarvoor geldt dat dit de beste trein is
- de aankomst tijd op dat station als deze trein genomen wordt
- een lijst met treinen met per trein:
- het beginstation
- de officiële vertrektijd
- de vertraging bij vertrek
- het eindstation
- de officiële aankomsttijd
- de vertraging bij aankomst
- Agent acties
Hieronder volgt een overzicht van hoe de agents werken.
Agent start
- Een boodschap van RBS naar een station kan tot gevolg hebben dat er bij het station een agent gecreëerd wordt.
- Als een agent gecreëerd wordt en de gebruiker bevindt zich reeds in een trein, dan wordt de agent gekoppeld aan de trein waarmee de gebruiker op het station arriveert. (De agent ‘zit in’ de A trein.)
- Als een agent gecreëerd is, wordt deze òf direct geactiveerd òf in de lijst met inactieve agents geplaatst.
- De lijst met inactieve agents wordt doorlopend gecontroleerd op agents die geactiveerd moeten worden.
- Als een agent geactiveerd wordt, dan wordt de beste trein bepaald waar de gebruiker vanaf dit station mee zou moeten reizen en de agent wordt aan de betreffende D trein gekoppeld. (De agent ‘zit in’ de D trein.)
- Als een agent aan een D trein wordt gekoppeld en niet aan een A trein is gekoppeld, wordt de gebruiker geïnformeerd over de trein die hij moet nemen.
Vertraging bij aankomst
- Als een A trein wordt vertraagd, dan wordt voor alle agents die aan die trein gekoppeld zijn opnieuw de beste trein bepaald waar de gebruiker vanaf dit station mee zou moeten reizen.
- Als een agent zijn route wijzigt omdat de A trein vertraagd is, geeft hij de wijziging alleen door aan de gebruiker als deze eerder al geïnformeerd was over zijn overstap op dit station.
Vertraging bij vertrek
- Als een D trein wordt vertraagd, dan wordt voor alle agents die aan die trein gekoppeld zijn opnieuw de beste trein bepaald waar de gebruiker vanaf dit station mee zou moeten reizen.
- Als een agent zijn route wijzigt omdat de D trein vertraagd is en de agent is niet gekoppeld aan een A trein, geeft hij de wijziging door aan de gebruiker.
- Als een agent zijn route wijzigt omdat de D trein vertraagd is en de agent is wel gekoppeld aan een A trein, geeft hij de wijziging alleen door aan de gebruiker als deze eerder al geïnformeerd was over zijn overstap op dit station.
Opgeheven trein
- Als een D trein wordt verwijderd, dan wordt voor alle agents die aan die trein gekoppeld zijn opnieuw de beste trein bepaald waar de gebruiker vanaf dit station mee zou moeten reizen.
- Als een agent zijn route wijzigt omdat de D trein verwijderd is en de agent is niet gekoppeld aan een A trein, geeft hij de wijziging door aan de gebruiker.
- Als een agent zijn route wijzigt omdat de D trein verwijderd is en de agent is wel gekoppeld aan een A trein, geeft hij de wijziging alleen door aan de gebruiker als deze eerder al geïnformeerd was over zijn overstap op dit station.
Vlak voor aankomst
- Als een trein bijna arriveert en de gebruiker moet op het betreffende station uitstappen, sturen de agents een boodschap dat de gebruiker moet uitstappen.
- Als een trein bijna arriveert en de gebruiker moet op het betreffende station overstappen, sturen de agents van de betreffende A trein ook een boodschap naar de gebruiker waarin deze wordt geïnformeerd over de trein waarop hij moet overstappen.
Bij aankomst
- Als een A trein aankomt, worden de agents uit de A trein gehaald.
- Als een A trein aankomt en een gebruiker arriveert daarmee op zijn eindbestemming, dan wenst zijn agent hem een prettige dag en de agent wordt uit de lijst van agents bij RBS weggehaald. Verder wordt de agent volledige verwijderd bij het station.
Bij vertrek
- Als een D trein vertrekt, worden de agents uit de D trein gehaald en via RBS verplaatst naar het volgende station waar de trein stopt. Verder wordt de agent volledig verwijderd bij het huidige station.
- Als een agent zijn route wijzigt, wordt hij uit de oude D trein gehaald en in de nieuwe D trein gezet.
Algemeen
- Actieve agents sturen ten behoeve van de simulatie doorlopend boodschappen met hun positie op de kaart van Nederland en een schatting voor de positie van de gebruiker.
- Als een gebruiker wordt geïnformeerd over de trein die hij moet nemen, krijgt hij eventueel ook informatie over de vertraging van die trein.
- Als een agent de route bepaald en deze is nieuw of gewijzigd dan wordt de gebruiker geïnformeerd over de geschatte aankomsttijd op zijn gewenste eindstation.
Agent einde
- Een boodschap van RBS naar het station kan tot gevolg hebben dat de agent verwijderd wordt bij het station.
- Als een agent verwijderd wordt, dan wordt ook zijn koppeling met eventuele A en D treinen verwijderd.
- Aanbevelingen
Hieronder volgt een lijst met mogelijke uitbreidingen voor het huidige systeem.
- Er kan een mogelijkheid gecreëerd worden om een gebruiker die bij het systeem is aangemeld aanvullende informatie over zijn treinreis te kunnen laten opvragen. Zoals bijvoorbeeld het aantal stations, waarop de trein nog stopt voordat de gebruiker uit moet stappen.
- Er kan een routing algorithme toevoegd worden dat direct met de data van de dienstregeling (zonder vertragingen of verwijderde treinen) werkt. Hiermee kunnen gegevens worden opgevraagd over treinreizen die gebruikers in de (verre) toekomst willen maken, ter vervanging van het gedeelte van OVR dat informatie over treinreizen geeft.
- Er kan een onderscheid gemaakt worden tussen werkdagen, zaterdagen en zondagen in de dienstregeling. I.e. een dienstregeling maken voor een hele week inplaats van een dienstregeling voor één dag.
- De handleidingen van de programma’s kunnen in een help-file verwerkt worden.
- Er kan een mogelijkheid gecreëerd worden om een gebruiker zich aan te laten melden als die zich reeds in een trein bevindt.
- Er zouden extra treinen toegevoegd moeten kunnen worden, mits deze buiten het actieve venster vallen, waarbinnen zich de treinen bevinden die worden gebruikt voor het bepalen van de route. Er zouden bussen toegevoegd moeten kunnen worden, indien deze ingezet worden ter vervanging van opgeheven treinen.