Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het...

70
Simuleren van een kijkfile Eindrapport Bacheloreindwerk Jeroen van der Gun ███████

Transcript of Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het...

Page 1: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Simuleren van een kijkfile Eindrapport Bacheloreindwerk

Jeroen van der Gun ███████

Page 2: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 2 van 70

Omslag: bewerkt screenshot uit Need For Speed Road Challenge, Electronic Arts

Page 3: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 3 van 70

Voorwoord

Voor u ligt het eindrapport van mijn Bacheloreindwerk waar ik het afgelopen

kwartaal aan heb gewerkt. Ik wil graag een aantal mensen bedanken die dat

mede mogelijk hebben gemaakt.

In de eerste plaats wil ik mijn begeleiders Rob van Nes en Ramon Landman

bedanken. De wekelijkse bijeenkomsten waren waardevol om te controleren

of ik nog steeds een goede weg was ingeslagen. Dank gaat verder uit naar

Winnie Daamen voor het bedenken van de opdracht en naar Victor Knoop

voor het beschikbaar stellen van alle gegevens en het beantwoorden van

vragen daarover. Naar alle bovenstaande personen gaat bovendien dank uit

voor de nuttige tussentijdse hulp, waarvoor ik meestal zonder afspraak hun

kantoor binnenviel.

Delft, 20 juni 2011

Jeroen van der Gun

Page 4: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 4 van 70

Samenvatting

Het microscopische simulatiemodel Fosim kent momenteel niet

direct een mogelijkheid om kijkfiles te simuleren. Om deze

mogelijkheid wel te krijgen, is gekeken naar het gedrag van

bestuurders bij een ongeval op de A1 bij Apeldoorn en in

mindere mate een ongeval op de A15 bij Gorinchem. Dit is

gebeurd met door een helikopter geregistreerde

voertuigtrajectoriën. Hierbij is gekeken naar gewenste

volgafstanden, reactietijden en wenssnelheden.

Omdat, met uitzondering van wenssnelheden, het gedrag van

bestuurders in Fosim niet op een bepaalde locatie is aan te

passen, moest enigszins worden geïmproviseerd om de

aanpassingen te valideren. In de eerste plaats zijn er

fundamentele diagrammen opgesteld, waaruit bleek dat de

aanpassingen een sterk verbeterde beschrijving van het verkeer

in congestie vormen. Daarnaast is er, omdat er een filegolf op

lussen bovenstrooms van de file werd waargenomen,

gecontroleerd of er door de aanpassing filegolven kunnen

ontstaan: dit bleek wel het geval, maar pas bij een te hoge

verkeersintensiteit. Tot slot bleek uit een simulatie van het

afrijden van het verkeer uit de filekop dat het lokaal

aangepaste gedrag een betere nabootsing van de praktijk

oplevert.

De belangrijkste aanbevelingen zijn om Fosim zo aan te passen

dat bestuurders lokaal van rijgedrag kunnen veranderen en dat

de reactietijd verder kan worden verhoogd dan nu. Vervolgens

wordt aangeraden om een volledige simulatie van het ongeval

bij Apeldoorn uit te voeren, waarin bestuurders inderdaad op

die manier lokaal van gedrag veranderen.

Page 5: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 5 van 70

Inhoudsopgave

Voorwoord .................................................................................................... 3

Samenvatting ................................................................................................ 4

Inhoudsopgave .............................................................................................. 5

1 Inleiding ................................................................................................ 7

1.1 Bottlenecks in Fosim ....................................................................... 7

1.2 Doelstelling .................................................................................... 8

1.3 Leeswijzer ...................................................................................... 8

2 Beschikbare gegevens ............................................................................ 9

2.1 Beschrijving van de ongevallen ....................................................... 9

2.1.1 Ongeval bij Apeldoorn ............................................................. 9

2.1.2 Ongeval bij Gorinchem .......................................................... 12

2.2 Trajectoriedata .............................................................................. 12

2.2.1 Rekenmethoden ...................................................................... 13

2.2.2 Visualisaties ........................................................................... 14

2.3 Lusdata ......................................................................................... 19

3 Kalibratie ............................................................................................. 22

3.1 Gewenste volgtijd ......................................................................... 22

3.1.1 Detectie van ‘volggebeurtenissen’ .......................................... 22

3.1.2 Berekening van modelparameters ........................................... 23

3.1.3 Indeling in voertuigbestuurdercombinaties .............................. 24

3.2 Reactietijden ................................................................................. 26

3.3 Wenssnelheden .............................................................................. 26

3.3.1 Bepaling aangepaste wenssnelheid .......................................... 27

3.3.2 Implementatie in Fosim .......................................................... 28

4 Validatie .............................................................................................. 29

4.1 Fundamentele diagrammen ............................................................ 29

4.1.1 Methodiek .............................................................................. 29

4.1.2 Problemen door hogere reactietijd .......................................... 30

4.1.3 Theoretische berekening van de congestietak .......................... 31

4.1.4 Resultaten .............................................................................. 32

4.2 Gevoeligheid voor verstoringen ..................................................... 34

4.3 Afrijsimulatie ................................................................................ 36

5 Conclusies en aanbevelingen ................................................................ 38

5.1 Conclusies .................................................................................... 38

5.2 Aanbevelingen .............................................................................. 38

5.2.1 ‘Gedragsonderdrukkingsgebied’ ............................................. 38

5.2.2 Verhoging van de reactietijd ................................................... 38

5.2.3 Variatie in wenssnelheid en reactietijd .................................... 39

5.2.4 Gevonden bugs ....................................................................... 39

Page 6: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 6 van 70

6 Evaluatie ............................................................................................. 40

Referenties ................................................................................................. 41

Algemene kennis ..................................................................................... 41

Onderzoeken ........................................................................................... 41

Informatie over Fosim ............................................................................. 41

Data ........................................................................................................ 41

Bijlage A: dataverwerkingsprogramma’s ..................................................... 42

Kern: analyse.m ...................................................................................... 42

Functie: lussen.m .................................................................................... 52

Functie: fosimgenerator.m ....................................................................... 55

Kern: gorinchem.m .................................................................................. 55

Hulpprogramma: route.m ......................................................................... 58

Functie: plotxpos.m ................................................................................. 60

Simulatie fundamenteel diagram: analyse.php .......................................... 60

Afrijsimulaties: analyse.php .................................................................... 62

Bijlage B: effecten van Fosim-bottlenecks ................................................... 64

Snelheidsonderdrukkingsgebied ............................................................... 64

Verkeerslichten ........................................................................................ 66

Tijdelijke blokkade .................................................................................. 68

Bijlage C: macroscopische acceleratie ......................................................... 69

Page 7: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 7 van 70

1 Inleiding

Verkeersongelukken zijn een belangrijke oorzaak van files. Enerzijds komt dit

doordat rijstroken worden geblokkeerd, maar anderzijds doordat bestuurders

worden afgeleid en minder op het overige verkeer letten, waardoor ook de

capaciteit per overblijvende rijstrook daalt. Het verkeersaanbod kan hierdoor

groter worden dan de capaciteit, waardoor bij het ongeval een file wordt

gevormd.

Om op het niveau van de individuele automobilist simulaties uit te voeren,

kan het model Fosim worden gebruikt. Dit model is gekalibreerd voor

normale omstandigheden op Nederlandse autosnelwegen. Door veel

individuele voertuigen te simuleren komt met Fosim macroscopische

informatie over een weggedeelte naar voren, zoals de capaciteit. Ui teindelijk

zegt dit iets over de functionele kwaliteit van de infrastructuur, waardoor

bijvoorbeeld zwakke plekken in een verkeersnetwerk kunnen worden

blootgelegd. Voor een partij als Rijkswaterstaat is dat natuurlijk nuttig om te

weten.

1.1 Bottlenecks in Fosim

Het is echter maar de vraag of Fosim ook bruikbaar is in het geval van een

ongeluk. Om een bottleneck in Fosim te maken, kan simpelweg een rijstrook

worden beëindigd. Fosim bevat daarnaast gelukkig ook enkele fijnmazigere

methoden waarmee het effect van de bottleneck zelf is af te stellen. Dit zijn:

Een snelheidsonderdrukkingsgebied: een wegvak waarin de

wenssnelheden van de voertuigen met een bepaalde factor worden

gereduceerd.

Een tijdelijke blokkade: een verzameling stroken die van een bepaalde

tijd tot een bepaalde tijd geblokkeerd is.

Een verkeerslichteninstallatie.

Al deze maatregelen kunnen worden gebruikt om het verkeer geheel of

gedeeltelijk af te remmen. De precieze effecten die deze maatregelen op een

voertuig hebben, worden beschreven in bijlage B.

De hierboven genoemde maatregelen zijn echter fysieke obstakels. Dat is heel

aardig indien een ongeval daadwerkelijk een rijstrook blokkeert, maar

hierdoor ontbreekt er wel een psychologisch obstakel doordat bestuurders

naar het ongeval kijken in plaats van op het autorijden concentreren. Deze

psychologische bottleneck is de oorzaak van de beruchte kijkfile , waarbij de

volle rijbaan beschikbaar is, maar er toch een file ontstaat omdat de

bestuurders zijn afgeleid.

Page 8: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 8 van 70

Wat betreft het gedrag van bestuurders, is het van belang te weten dat Fosim

beschikt over vijf zogenaamde voertuigbestuurdercombinaties. Zoals de naam

al suggereert, zijn dit combinaties van voertuigkenmerken en

gedragskenmerken van de bestuurder die dat voertuig bestuurt. De

combinaties 4 en 5 zijn voor vrachtwagens; 1, 2 en 3 zijn voor gewone

voertuigen. Er kan in Fosim worden ingesteld welke aandelen elke combinatie

in de totale verkeersstroom moet hebben.

1.2 Doelstelling

Het gebrek aan psychologische bottlenecks in Fosim heeft tot gevolg dat het

gedrag van individuele voertuigen nabij een ongeluk niet goed kan worden

voorspeld, waardoor bijvoorbeeld de capaciteit in die situatie onduidelijk is.

Omdat ongelukken een belangrijke oorzaak van files zijn, is het echter

belangrijk om de verkeersafwikkeling ook in die situatie te kunnen

voorspellen.

Het doel van dit Bacheloreindwerk is om te onderzoeken op welke manier

Fosim moet worden aangepast om de psychologische bottleneck te

introduceren die een kijkfile kan verklaren. Hiervoor zullen concrete

gegevens van ongevallen uit de praktijk worden geanalyseerd, zoals gewenste

snelheden en volgafstanden en reactietijden.

1.3 Leeswijzer

In het hoofdstuk ‘Beschikbare gegevens’ zal de te gebruiken informatie op

een rij worden gezet en zullen de eerste analyses hierop worden losgelaten.

Het hoofdstuk ‘Kalibratie’ beschrijft vervolgens hoe die informatie omgezet

kan worden in concrete parameters voor Fosim.

In het hoofdstuk ‘Validatie’ zullen methoden worden bedacht en toegepast om

te controleren of de kalibratie inderdaad een positief effect heeft op het

realiteitsgehalte van de simulatie.

Tot slot volgen de hoofdstukken ‘Conclusies en aanbevelingen’ en

‘Evaluatie’.

Door het hele document heen zal informatie vanwege de complexiteit op de

computer worden bewerkt tot het gewenste resultaat. In de hoofdstukken zelf

wordt dan steeds in woorden – eventueel ondersteund door wiskundige

vergelijkingen – uitgelegd wat de computer doet. In bijlage A kan telkens de

precieze computerprogrammatuur worden gevonden.

Page 9: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 9 van 70

2 Beschikbare gegevens

Om het rijgedrag in kijkfiles te onderzoeken, zullen gegevens van twee

ongevallen worden gebruikt. De ongevallen en de beschikbare data zullen

hieronder worden beschreven.

2.1 Beschrijving van de ongevallen

Figuur 1: kaart met locaties van de ongevallen (kaartmateriaal: Rijkswaterstaat)

2.1.1 Ongeval bij Apeldoorn

Het is 5 juni 20071, kwart over negen ’s ochtends, als er op de A1 richting

Apeldoorn een voertuig in de middenberm strandt. Dit gebeurt vlak na het

Harm van de Veen-ecoduct bij Kootwijk, bij hectometerpaal 71,7. In beide

richtingen ondervindt het verkeer hier hinder van.

1 Volgens het onderzoek van Knoop, Van Zuylen en Hoogendoorn is de datum 6 juni 2007,

maar dat is onjuist.

Page 10: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 10 van 70

Figuur 2: still uit helikopterbeelden van het incident bij Apeldoorn

In de oostelijke richting (rechterrrijbaan, richting Apeldoorn) blokkeren

voertuigen van hulpdiensten de linker van de twee rijstroken. Het verkeer

wordt afgewikkeld over de rechterstrook en de vluchtstrook. Omdat een

gedeelte van het verkeer de vluchtstrook mijdt, ontstaat een rare verdeling

over de twee stroken, waardoor het verkeer moeilijk te modelleren is.

In de westelijke richting (linkerrijbaan) is er geen enkele fysieke belemmering

voor het verkeer aanwezig: de twee rijstroken zijn volledig beschikbaar.

Desondanks ontstaat hier wel congestie. Dit kan bij een intensiteit van rond

de 2 5 0 0 v t g / h uitsluitend aan het kijkgedrag verklaard worden: er is sprake

van een pure kijkfile.

Met behulp van Google Streetview is na te gaan hoe goed het zicht op het

ongeval vanaf verschillende plaatsen op de linkerrijbaan is. Ondanks de brede

middenberm moet het ongeval door het gebrek aan hoge begroeiing goed

zichtbaar zijn geweest.

Figuur 3: zicht vanaf Li 71,90 (beeld: Google Streetview)

Bij hectometerpaal 71,9 zit het ongeval achter de middenondersteuning van

het viaduct. Zo rond de 71,85 zal het ongeluk zichtbaar worden, hoewel het

dan nog 1 5 0 m ver weg is.

Page 11: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 11 van 70

Figuur 4: zicht vanaf Li 71,80 (beeld: Google Streetview)

Figuur 5: zicht vanaf Li 71,75 (beeld: Google Streetview)

Page 12: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 12 van 70

Figuur 6: zicht vanaf Li 71,65 (beeld: Google Streetview)

Tussen hectometerpaaltjes 71,7, naast het gestrande voertuig, en 71,65

verdwijnt de rechterrijbaan achter hogere begroeiing, later gevolgd door de

binnenkant van het ecoduct.

2.1.2 Ongeval bij Gorinchem

Op dezelfde dag is op de A15 een ongeluk gebeurd. Dit was net ten westen

van knooppunt Gorinchem met de A27. Hierbij waren meerdere voertuigen

betrokken, waardoor in westelijke richting zowel de vluchtstrook als de

rechterrijstrook was geblokkeerd, waardoor er nog maar één rijstrook

overbleef.

In oostelijke richting waren daarentegen geen rijstroken geblokkeerd en was

de verkeersintensiteit ongeveer 1 2 0 0 v t g / h . Hoewel de voertuigen afremden

om naar de andere rijbaan te kijken, bleek deze intensiteit onvoldoende om

congestie te veroorzaken.

2.2 Trajectoriedata

Van beide incidenten zijn helikopterbeelden gemaakt. Voor het onderzoek van

Knoop, Van Zuylen en Hoogendoorn zijn gedeeltes hiervan geanalyseerd en

omgezet in een verzameling voertuigtrajectoriën.

Het betreft hierbij een fragment van vijf minuten met 199 voertuigen voor het

verkeer in westelijke richting bij Apeldoorn en een fragment van tien minuten

met 193 voertuigen voor het verkeer in oostelijke richting bij Gorinchem. Bij

Apeldoorn zijn van de rechterrijstrook tevens de voertuiglengtes beschikbaar,

Page 13: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 13 van 70

waarmee vastgesteld kan worden dat het vrachtwagenpercentage 1 7 , 6 %

bedraagt. Van het verkeer in westelijke richting bij Gorinchem is eveneens

een trajectorieverzameling opgesteld, maar deze is voor dit onderzoek niet

gebruikt.

Alle voertuigen zijn door Knoop, Van Zuylen en Hoogendoorn voorzien van

informatie over wie de voorligger is. Opgemerkt dient te worden dat hierbij

enkele van strook wisselende voertuigen uit de verzamelingen zijn

verwijderd.

2.2.1 Rekenmethoden

Na bewerking van de gegevens in het onderzoek van Knoop, Van Zuylen en

Hoogendoorn, is van elk voertuig elke 0 , 1 s een x-coördinaat en een y-

coördinaat bekend. Zij hebben deze gegevens als volgt omgezet in bruikbare

informatie:

2 2

1 1

1

n n

n n n n

n

n n

s f x

x x y y

v

t t

Hierin is s de coördinaat langs de weg en v de snelheid. De functie f is

gebaseerd op de punten 2 2

1 1

1

,

n

n i i i i

i

x x x y y

van alle voertuigen

uit de betreffende rijstrook.

De versnelling hadden zij ook uitgerekend, maar hier bleken grote uitschieters

in te zitten. Dit blijkt te verklaren door voortplanting van de meetfout. In dit

onderzoek is daarom een andere formule voor de acceleratie gebruikt, en wel

de volgende:

2 2

2 2

n n

n

n n

v va

t t

In deze centraledifferentieformule staat een 2 i.p.v. een 1 om de noemer te

vergroten, waardoor de meetfouten minder invloed hebben. De afbreekfout

( 2

O t ) wordt hierdoor wel 2

2 4 keer zo groot, maar dit lijkt niet voor

problemen te zorgen. Door deze nieuwe acceleratieformule zijn de

acceleratiekrommes van voertuigen een stuk vloeiender. Hieronder zijn beide

methoden voor één voertuig vergeleken:

Page 14: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 14 van 70

234 236 238 240 242 244 246 248 250-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

Tijd (s)

Accele

ratie (

m/s

2)

Origineel

Verbeterd

Figuur 7: de acceleratieformules vergeleken voor voertuig 1 bij Apeldoorn

2.2.2 Visualisaties

Nadat de trajectoriën met bovengenoemde rekenmethoden zijn opgesteld,

kunnen deze worden gevisualiseerd. De simpelste manier hiervoor is om ze in

het ,s t -vlak te tekenen. Dit is hieronder gedaan voor beide locaties.

Omdat de situatie bij Apeldoorn het uitvoerigst zal worden gebruikt, is hier de

interne s -coördinaat van de dataset (bij benadering) omgerekend naar de

coördinaat volgens de hectometerpaaltjes. Omdat het de linkerrijbaan betreft,

is de plaatscoördinaat aflopend.

Om een betere indruk te krijgen van de verkeerssituatie, is het nuttig om

snelheidscontouren op te stellen. Een mogelijke manier om dit te doen is elke

5 m een ‘virtuele detectielus’ onder de trajectoriën te leggen die van de

passerende voertuigen de snelheid registreren. Door van elk tijdvak van 3 0 s

een (harmonisch) gemiddelde snelheid uitrekenen, ontstaat een beeld van de

snelheid als functie van ruimte en tijd, waarvan contouren geschetst kunnen

worden. De begrenzingen van de figuren in ruimte en tijd zijn zodanig

geprobeerd te kiezen dat alle soorten trajectoriën overal voldoende

vertegenwoordigd zijn; dit om plaatselijke bias te vermijden.

Alle figuren staan op de hierna volgende pagina’s. Er is duidelijk te zien dat

de verkeerssituatie niet stationair is.

Page 15: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 15 van 70

Figuur 8: trajectoriën bij Apeldoorn in westelijke richting

71.5

571.6

71.6

571.7

71.7

571.8

71.8

50

50

100

150

200

250

300

Pla

ats

(km

)

Tijd (s)

Lin

kers

trook

Rechte

rstr

ook

Page 16: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 16 van 70

Figuur 9: trajectoriën bij Gorinchem in oostelijke richting

100

150

200

250

300

350

400

450

500

0

100

200

300

400

500

600

Pla

ats

(m

)

Tijd (s)

Lin

kers

trook

Rechte

rstr

ook

Page 17: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 17 van 70

Figuur 10: snelheidscontouren bij Apeldoorn in westelijke richting

25

25

25

25

25

30

30

30

30

35

35

35

35

40

40

40

40

45

45

45

45

50

50

50

50

50

55

55

55

55

55

60

60

65

Snelh

eid

sconto

ure

n (

km

/h)

Pla

ats

(km

)

Tijd (s)

71.6

271.6

471.6

671.6

871.7

71.7

271.7

471.7

671.7

825

55

85

115

145

175

205

235

265

Page 18: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 18 van 70

Figuur 11: snelheidscontouren bij Gorinchem in oostelijke richting

70

70

70

70

70

70

70

70

70

70

70

70

80

80

80

80

80

80

80

80

80

80

80

80

80

80

80

808

0

80

80

90

90

90

90

90 9

090

90

90

90

90

90

90

90

90

90

90

90

90

90

90

90

90

90

90

90

90

90

90

90

90

10

0

100

10

010

0

10

0

100

100

10

010

0

10

0

11

0

11

0

11

011

0

11

0

12

0

Snelh

eid

sconto

ure

n (

km

/h)

Pla

ats

(km

)

Tijd (s)

160

180

200

220

240

260

280

300

320

340

360

380

25

55

85

115

145

175

205

235

265

295

325

355

385

415

445

475

505

535

565

Page 19: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 19 van 70

2.3 Lusdata

Er liggen natuurlijk ook gewoon echte detectielussen in de weg. Voor het

incident bij Apeldoorn zijn de gegevens hiervan in dit onderzoek gebruikt.

Hieronder wordt een overzicht gegeven van de plaatsen waarop ten tijde van

het ongeval de lussen lagen (inmiddels liggen er meer).

Figuur 12: locaties van inductielussen bij het incident bij Apeldoorn (achtergrond:

Google Maps)

De lussen tellen per minuut per rijstrook het aantal voertuigen en registreren

tevens de gemiddelde snelheid van deze voertuigen.

Er zijn twee manieren om gemiddelde snelheden te definiëren: een tijd -

gemiddelde of lokale snelheid L

u en een ruimtelijk-gemiddelde of momentane

snelheid M

u . Met de snelheden in een doorsnede is de momentane snelheid te

benaderen door het harmonisch gemiddelde van de snelheden in de doorsnede.

De formules zijn als volgt:

1

1

1

n

i

i

L

M n

i i

v

u

n

nu

v

Rijkswaterstaat meet simpelweg tijd-gemiddelde snelheden. Om een correct

fundamenteel diagram op te stellen, is echter een ruimtelijk-gemiddelde

snelheid nodig – bij een tijd-gemiddelde snelheid worden snelle voertuigen

oververtegenwoordigd in de resultaten en is de dichtheid niet met /k q u uit

te rekenen.

Benedenstroomse

inductielussen

Li 70,800

Ongeval

Re 71,7

Benzinestation

‘De Hucht’

Li 77,9 Inductielussen

Li 74,970

Bovenstroomse

inductielussen

Li 78,730

0,9 km

3,3 km

Page 20: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 20 van 70

In een artikel van Knoop, Hoogendoorn en Van Zuylen wordt een empirisch

verband gegeven om M

u uit L

u te schatten. Dit verband is in onderstaande

figuur weergegeven. Met lineaire interpolatie hiervan kunnen de snelheden

alsnog worden gebruikt in een fundamenteel diagram.

10 sec

60 sec

900 sec

0 20 40 60 80 100 120 1400.5

0.6

0.7

0.8

0.9

1

time mean speed (km/h)

spac

e m

ean s

pee

d /

tim

e m

ean s

pee

d

0 20 40 60 80 100 120 1400

2040

6080

100

120140

160180200

220240

density using time mean speed (veh/km/lane)

den

sity

usi

ng s

pac

e m

ean s

pee

d (

veh

/km

/lane)

Figuur 13: empirisch verband tussen ruimtelijk-gemiddelde en tijd-gemiddelde

snelheid voor verschillende aggregatie-intervallen; de blauwe lijn is tien seconden, de

stippellijn een minuut en de rode lijn een kwartier (bron: Knoop, Hoogendoorn en Van

Zuylen)

Op de volgende pagina staan de meetgegevens van deze drie sets lussen. De

gegevens van de twee rijstroken zijn hierin samengevoegd. De snelheden zijn

schattingen van de ruimtelijk-gemiddelde snelheid. Er valt direct op dat rond

9:40u een filegolf de lussen 3 , 3 k m bovenstrooms passeert.

Aan de rechterkant zijn ook de gegevens uit de trajectoriën toegevoegd , per

halve minuut geaggregeerd. Deze konden helaas niet in de figuur zelf worden

geplaatst, omdat van het tijdstip waarop de helikopterbeelden zijn gemaakt

niet meer bekend is dan dat de vijf minuten ergens tussen 9:39u en 10:15u

moeten hebben gelegen. Omdat er elke 5 m een virtuele lus ligt, moet worden

gekozen welke gegevens uiteindelijk worden gebruikt:

Voor de intensiteit is de gemiddelde intensiteit van alle lussen die alle

voertuigen detecteren uitgerekend.

Voor de snelheid is elk tijdstip de lus met de laagst gemeten snelheid

gekozen. Alle virtuele lussen gebruiken harmonische gemiddelden.

De dichtheden op de lussen zijn geschat met /k q u . De dichtheid tussen de

twee lussen rondom het ongeval is geschat met behulp van de wet van behoud

van voertuigen. Omdat lusintensiteiten behoorlijke fouten kunnen bevatten,

zoals beschreven in een onderzoek van Ou, was het nodig om hier een

correctie op uit te voeren: hier is simpelweg c o r r e c t i e

k t A t B bij de

dichtheid opgeteld, waarbij A en B zodanig zijn gekozen dat de dichtheden

in de buurt van 8:00u en 12:00u kloppen met de dichtheden op de lussen. Het

resultaat moet slechts als een globale indicatie worden beschouwd.

Page 21: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 21 van 70

Figuur 14: lusgegevens

8:0

08:3

09:0

09:3

010:0

010:3

011:0

011:3

012:0

00

1000

2000

3000

4000

5000

Intensiteit (vtg/h)Lusdata

0300

0

1000

2000

3000

4000

5000

Tra

jecto

riedata

8:0

08:3

09:0

09:3

010:0

010:3

011:0

011:3

012:0

00

50

100

150

Snelheid (km/h)

0300

0

50

100

150

8:0

08:3

09:0

09:3

010:0

010:3

011:0

011:3

012:0

00

50

100

150

Dichtheid (vtg/km)

Tijd

stip

0300

0

50

100

150

Tijd

(s)

7,0

km

bove

nstr

oom

s (

per

60 s

)

3,3

km

bove

nstr

oom

s (

per

60 s

)

Bij

het

ongeva

l (p

er

30 s

)

0,9

km

benedenstr

oom

s (

per

60 s

)

Gem

iddeld

e o

ver

4,1

7 k

m r

ondom

ongeva

l

Page 22: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 22 van 70

3 Kalibratie

Het is duidelijk dat bestuurders zich anders gaan gedragen als er een ongeval

in zicht is. Om uit te vinden hoe deze gedragsverandering in Fosim kan

worden toegepast, zullen drie gedragskenmerken onderzocht worden: de

gewenste volgtijd, de reactietijd en de wenssnelheid.

Tenzij anders vermeld, worden de gegevens van het incident bij Apeldoorn

gebruikt, waar het verkeer niet vrij wordt afgewikkeld.

3.1 Gewenste volgtijd

In Fosim is de gewenste volgafstand 2

1 2 3d z z v z v afhankelijk van de snelheid v en

de positieve modelparameters 1

z , 2

z en 3

z ,

waarbij standaard 2

z verschilt per voertuigtype.

De gewenste volgtijd is 1 2 3

/ /d v z v z z v .

Aangenomen wordt dat aan de kop van een

kijkfile bij dezelfde snelheid een grotere

volgafstand wordt aangehouden dan onder

normale omstandigheden. Om dit te kwantificeren,

zijn de i

z -waarden opnieuw gekalibreerd aan de hand van de trajectoriën.

3.1.1 Detectie van ‘volggebeurtenissen’

Ten behoeve van de kalibratie is een programma geschreven dat

‘volggebeurtenissen’ uit de trajectoriën afleidt. Een ‘volggebeurtenis’ is

hierbij een tijdsspanne waarin de acceleratie van een voertuig en zijn

voorligger in absolute zin kleiner blijft dan 2

0 ,5 m / s . In elke gedetecteerde

volggebeurtenis worden vervolgens de gemiddelde volgafstand en snelheid

worden berekend.

Aan alle volggebeurtenissen is de eis gesteld dat zij minimaal 1 s duren, om

toevallige gebeurtenissen te elimineren. Daarnaast is geëist dat tijdens de

volggebeurtenis het volgende voertuig zicht heeft op het ongeval ; het model

moet immers worden gekalibreerd voor kijkgedrag. Alleen bij het naderen van

het ecoduct wordt het zicht door de middenberm geblokkeerd. Omdat de

voertuigen op dit punt wegrijden uit de kijkfile en dus accelereren, blijkt de

laatste eis nauwelijks invloed te hebben op de resultaten.

In herinnering wordt gebracht dat alleen van de rechterrijstrook de

voertuiglengtes bekend zijn. Zonder voertuiglengtes is het niet mogelijk om

v

d

Figuur 15: volgafstand

als functie van snelheid

Page 23: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 23 van 70

de netto-volgafstand d , het gat tussen twee voertuigen, te berekenen. Omdat

Fosim met netto-volgafstanden werkt, moet er een aanname worden gedaan.

Mede gelet op het inhaalverbod voor vrachtwagens worden alle voertuigen op

de linkerstrook daarom verondersteld een lengte van 4 m te hebben.

In onderstaande figuur zijn de resulterende volggebeurtenissen aangegeven.

10 20 30 40 50 60 700

10

20

30

40

50

60

Snelheid (km/h)

Volg

afs

tand (

m)

10 20 30 40 50 60 700

10

20

30

40

50

60

Snelheid (km/h)

Volg

afs

tand (

m)

10 20 30 40 50 60 700

1

2

3

4

5

6

Snelheid (km/h)

Volg

tijd

(s)

10 20 30 40 50 60 700

1

2

3

4

5

6

Snelheid (km/h)

Volg

tijd

(s)

10 20 30 40 50 60 700

1

2

3

4

5

6

Snelheid (km/h)

Para

mete

r z

2 (

s)

10 20 30 40 50 60 700

1

2

3

4

5

6

Snelheid (km/h)

Para

mete

r z

2 (

s)

Linkerstrook

Rechterstrook

Vrachtwagens

Linkerstrook

Rechterstrook

Vrachtwagens

Type 1

Type 2

Type 3

Type 4

Type 5

Figuur 16: gevonden volggebeurtenissen

3.1.2 Berekening van modelparameters

Vanwege de grote spreiding in de resultaten, is het nogal moeilijk om

parabolen met drie vrijheidsgraden door de data te tekenen. Om de

verwerking te vereenvoudigen, wordt aangenomen dat 1

z en 3

z niet

veranderen door het kijkgedrag. Deze twee parameters bepalen het

snelheidsafhankelijke deel van de volgtijd 1 2 3

/z v z z v . Normaliter

verschillen deze parameters ook niet per voertuigbestuurdercombinatie, wat

een aanwijzing is dat ze niet sterk afhangen van het rijgedrag. In het geval

van 1

z is tevens intuïtief aan te voelen dat deze waarde niet verandert in een

kijkfile: dit is immers de ‘volgafstand’ bij stilstand.

Als voor 1

z en 3

z de standaardwaarden van 3 m respectievelijk 2

0 ,5 s / m

worden aangehouden, dan kan elke volggebeurtenis worden omgezet in een

2z -waarde. In onderstaande figuur is dat gedaan door eerst de volgafstanden

naar volgtijden om te zetten en hier vervolgens het snelheidsafhankelijke deel

vanaf te trekken.

Page 24: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 24 van 70

10 20 30 40 50 60 700

10

20

30

40

50

60

Snelheid (km/h)

Volg

afs

tand (

m)

10 20 30 40 50 60 700

10

20

30

40

50

60

Snelheid (km/h)

Volg

afs

tand (

m)

10 20 30 40 50 60 700

1

2

3

4

5

6

Snelheid (km/h)

Volg

tijd

(s)

10 20 30 40 50 60 700

1

2

3

4

5

6

Snelheid (km/h)

Volg

tijd

(s)

10 20 30 40 50 60 700

1

2

3

4

5

6

Snelheid (km/h)

Para

mete

r z

2 (

s)

10 20 30 40 50 60 700

1

2

3

4

5

6

Snelheid (km/h)

Para

mete

r z

2 (

s)

Linkerstrook

Rechterstrook

Vrachtwagens

Linkerstrook

Rechterstrook

Vrachtwagens

Type 1

Type 2

Type 3

Type 4

Type 5

Figuur 17: volggebeurtenissen omgezet in de modelparameter

3.1.3 Indeling in voertuigbestuurdercombinaties

In de voorgaande figuur is een grote spreiding te zien in 2

z -waarden. Het is

mogelijk de voertuigen die minimaal één volggebeurtenis hebben, te sorteren

op de gemiddelde 2

z van hun volggebeurtenissen. Door de vrachtwagens

vervolgens in twee subgroepen (4 en 5) en de niet-vrachtwagens in drie

subgroepen (1, 2 en 3) in te delen, kunnen 2

z -waarden voor elke

voertuigbestuurdercombinatie. De grootste 2

z -waarde is hierbij telkens aan de

langzaamste voertuigbestuurdercombinatie gegeven. Het resultaat staat in

onderstaande figuur.

Page 25: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 25 van 70

10 20 30 40 50 60 700

10

20

30

40

50

60

Snelheid (km/h)

Volg

afs

tand (

m)

10 20 30 40 50 60 700

10

20

30

40

50

60

Snelheid (km/h)

Volg

afs

tand (

m)

10 20 30 40 50 60 700

1

2

3

4

5

6

Snelheid (km/h)

Volg

tijd

(s)

10 20 30 40 50 60 700

1

2

3

4

5

6

Snelheid (km/h)

Volg

tijd

(s)

10 20 30 40 50 60 700

1

2

3

4

5

6

Snelheid (km/h)

Para

mete

r z

2 (

s)

10 20 30 40 50 60 700

1

2

3

4

5

6

Snelheid (km/h)

Para

mete

r z

2 (

s)

Linkerstrook

Rechterstrook

Vrachtwagens

Linkerstrook

Rechterstrook

Vrachtwagens

Type 1

Type 2

Type 3

Type 4

Type 5

Figuur 18: voertuigbestuurdercombinaties opnieuw gekalibreerd

De gevonden 2

z -waarden zijn hiermee als volgt:

Type Waargenomen 2

z Normale 2

z

1 0 , 6 1 s 0 , 5 6 s

2 1 , 1 5 s 0 , 7 2 s

3 2 , 1 6 s 1 , 2 8 s

4 0 , 9 0 s 2 , 0 8 s

5 2 , 8 7 s 2 , 2 3 s

Tabel 1: waargenomen parameters vergeleken met de standaardinstelling van Fosim

per voertuigbestuurdercombinatie op volgorde van aflopende voertuigsnelheid; de

vrachtwagens zijn types 4 en 5

Page 26: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 26 van 70

Opmerkelijk is dat type 4 een aanzienlijk lagere 2

z heeft dan normaal.

Blijkbaar gaat een deel van de vrachtwagens in kijkfiles sneller over tot

bumperkleven dan onder normale omstandigheden.

Bij de overige voertuigbestuurdercombinaties neemt 2

z conform de

verwachting toe door het kijkgedrag.

3.2 Reactietijden

In Fosim is een reactietijd de tijd tussen het nemen van een besluit en het

uitvoeren ervan; de tijd voorafgaand aan de beslissing wordt niet

meegerekend. Er zijn reactietijden voor accelereren en decelereren; deze

mogen niet variëren per voertuigbestuurdercombinatie. De standaardwaarden

zijn 0 , 3 s voor accelereren en 0 , 2 s voor decelereren.

Omdat voertuigen in een kijkfile afgeleid

zijn, ligt het voor de hand om de reactietijd

voor het accelereren te verhogen om het

afrijden uit de file beter te simuleren. Het is

hierbij belangrijk op te merken dat Fosim

geen reactietijden groter dan 2 , 0 s

accepteert. Als voor precies 2 , 0 s wordt

gekozen, dan blijkt de simulatie redelijk snel

om onbekende reden met nevenstaande

foutmelding te crashen. In de praktijk is de

hoogst instelbare reactietijd hierdoor 1 , 9 s . Tot slot ontstaat er een ander soort

crashes, namelijk aanrijdingen, als de reactietijd voor decelereren te hoog

wordt opgegeven.

Het onderzoek van Knoop, Van Zuylen en Hoogendoorn geeft gemiddelde

reactietijden van 2 , 9 s voor de linkerstrook en 3 , 9 s voor de rechterstrook.

Als normaal voor Nederland wordt 1 , 3 s genoemd. De reactietijden zijn dus

1 , 6 s respectievelijk 2 , 6 s hoger dan normaal. Als deze verhoging wordt

opgeteld bij de Fosim-reactietijd voor accelereren, komt men op 1 , 9 s

respectievelijk 2 , 9 s uit. Daar 1 , 9 s het hoogst instelbare is, zal dit worden

gekozen, hoewel de gemiddelde reactietijd in werkelijkheid nog hoger ligt.

3.3 Wenssnelheden

Met een vrachtwagenpercentage van 1 8 % bedraagt de gemiddelde

wenssnelheid in de standaardconfiguratie van Fosim 1 0 9 k m / h . Tot nu toe is

alleen gekeken naar volg- en reactietijden. Echter, het is te verwachten dat

ook op een rustig moment bestuurders het gas loslaten om naar de andere

Figuur 19: vreemde foutmelding

bij twee seconden reactietijd

Page 27: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 27 van 70

rijbaan te kijken. Dit zou betekenen dat de wenssnelheden plaatselijk naar

beneden moeten worden bijgesteld.

3.3.1 Bepaling aangepaste wenssnelheid

Bij het ongeval nabij Apeldoorn is het druk genoeg om congestie te laten

ontstaan. Hier is de wenssnelheid dus niet in de trajectoriën terug te zien. Uit

het onderzoek van Knoop, Van Zuylen en Hoogendoorn zijn echter ook nog

gegevens van een ongeval bij Gorinchem bekend, waarbij de

verkeersintensiteit lager was.

Hoewel zaken als het zicht op het ongeval en het vrachtwagenpercentage

natuurlijk kunnen variëren, kan dit gebruikt worden om een indruk van de

wenssnelheid te krijgen. Ook voor de situatie van Apeldoorn zijn

wenssnelheden interessant, aangezien deze licht kunnen werpen op het

ontstaan van de congestie. Uiteindelijk moet ook de bij Apeldoorn

waargenomen congestie begonnen zijn met vertragende voertuigen en een

reductie in de wenssnelheid kan daar een oorzaak van zijn.

Uit de snelheidscontouren blijkt dat tussen 1 5 0 s en 3 9 0 s de beginsnelheden

redelijk hoog liggen. Over die periode blijkt de gemiddelde intensiteit

1 2 0 6 v t g / h te bedragen en staan de macroscopische snelheden in onderstaande

figuur. De macroscopische acceleratie is eveneens weergegeven; de

gehanteerde definitie hiervan staat in bijlage C.

150 200 250 300 350 40080

85

90

95

100

Snelh

eid

(km

/h)

150 200 250 300 350 400-1.5

-1

-0.5

0

0.5

Plaats (m)

Vers

nelli

ng (

m/s

2)

Figuur 20: deceleratie bij Gorinchem

Het minimum van de snelheid blijkt 8 2 k m / h te zijn. Als wordt aangenomen

dat dit de wenssnelheid is, betekent dit toegepast op Apeldoorn dat de

Page 28: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 28 van 70

wenssnelheid bij kijkgedrag ongeveer 7 5 % van de normale wenssnelheid

bedraagt.

3.3.2 Implementatie in Fosim

In Fosim verschilt de wenssnelheid per voertuigtype. Het is daardoor niet

ondenkbaar dat de reductie in wenssnelheid ook per voertuigtype verschilt.

Het onderzoek van Knoop, Van Zuylen en Hoogendoorn meldt bijvoorbeeld

dat vrachtwagens een constantere snelheid aanhouden (wat ook interessant is

gezien de lage volgtijden die een deel van de vrachtwagens kiest bij

Apeldoorn, zie de kalibratie van de volgtijd).

Voor de eenvoud – en omdat deze dataset geen kloppende voertuiglengtes

bevat – zal er hier echter voor worden gekozen om voor alle voertuigtypen

met een reductie van 2 5 % te rekenen; dit biedt tevens als voordeel dat deze

plaatselijke reductie met de huidige versie van Fosim met een

snelheidsonderdrukkingsgebied is na te bootsen. De deceleratie blijkt

gemiddeld zo’n 2

0 ,5 m / s te bedragen. Dit komt mooi overeen met de

maximale volgdeceleratie van Fosim die bij het binnenrijden van een

snelheidsonderdrukkingsgebied wordt toegepast.

De afstand die een gemiddeld voertuig nodig heeft om de eindsnelheid te

halen, is uit te rekenen met een formule uit bijlage B:

0 0

2

1 0 9 k m / h 8 2 k m / h 1 0 9 k m / h 8 2 k m / hˆ 4 0 0 m

2 2 0 , 5 m / s

w wv v v v

x

a

Aangezien er bij Apeldoorn slechts 1 5 0 m zicht is op het ongeval, zal –

voordat het verkeer in congestie raakt – de eindsnelheid van 8 2 k m / h niet

worden gehaald. Het verschil in afstand kan worden verklaard uit een lagere

aanvangssnelheid bij Gorinchem en uit het feit dat bij Gorinchem de

bestuurders zowel naar een ongeval als naar een file kunnen kijken, waar bij

Apeldoorn de file achter het ongeval onzichtbaar is door het ecoduct.

De werkelijke eindsnelheid voor de situatie in Apeldoorn is, onder de

aanname dat de snelheid aanvankelijk gelijk is aan de wenssnelheid, als volgt

te berekenen:

02

0 0

2

2 2

2

2

2 0 , 5 m / s 1 5 0 m1 0 9 k m / h 1 0 0 k m / h

1 0 9 k m / h 1 0 9 k m / h 2 0 , 5 m / s 1 5 0 m

e

a xv v

v v a x

Als de beginsnelheid lager is, dan wordt de eindsnelheid in deze opzet

uiteraard ook lager, met als minimum 8 2 k m / h (tenzij de beginsnelheid nog

lager wordt).

Page 29: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 29 van 70

4 Validatie

Om te controleren of de aanpassingen aan

Fosim daadwerkelijk zinnig zijn, moeten de

gekalibreerde parameters worden

gevalideerd. Het ligt voor de hand om

hiervoor simpelweg bovenstroomse lussen op

de Fosim-verkeersgenerator aan te sluiten en

de resultaten te vergelijken met de

beschikbare macroscopische gegevens over

de werkelijke situatie. Hierbij is er echter een

belangrijk probleem: volg- en reactietijden

kunnen in de huidige versie van Fosim niet

lokaal worden aangepast. Daarnaast is geen

van de aanpassingen tijdsafhankelijk te

maken. Zie de figuur hiernaast.

In feite is hierdoor een model gekalibreerd

dat nog niet is geprogrammeerd. Het kost

daarom moeite te zoeken naar mogelijkheden

om toch uitspraken te kunnen doen over de

validiteit van dat model.

Uiteindelijk zijn er drie werkbare

invalshoeken gevonden om de aanpassingen toch te valideren: er zal worden

gekeken naar veranderingen van het fundamenteel diagram, de mate waarin

het aangepaste gedrag files veroorzaakt en het afrijden uit de filekop.

In alle validatiepogingen is voor de verkeerssamenstelling de methode ‘fractie

vrachtverkeer’ gebruikt. Dit wil zeggen dat het vrachtwagenpercentage

(1 7 , 6 % ) gelijk is verdeeld over de vrachtwagen-

voertuigbestuurdercombinaties 4 en 5 en dat de rest is verdeeld over de niet -

vrachtwagen-voertuigbestuurdercombinaties 1, 2 en 3.

4.1 Fundamentele diagrammen

Om een indruk te geven van de effecten van de gewijzigde parameters, is het

een goed idee om fundamentele diagrammen te bekijken. In Fosim zijn

dergelijke simulaties eenvoudig uit te voeren. De resultaten kunnen worden

vergeleken met de lusdata en de trajectoriedata.

4.1.1 Methodiek

Het bepalen van een fundamenteel diagram van het normale en het aangepaste

rijgedrag wordt opgedeeld in drie stappen:

x

t

normaal gedrag

aange-

past

gedrag

x

t

aange-

past

gedrag

aange-

past

gedrag

m.u.v.

wens-

snelheid

Figuur 21: gewenste

aanpassing van Fosim (boven)

en de best mogelijke

aanpassing (onder)

Page 30: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 30 van 70

k

q

0u

0u

Figuur 22: schematische weergave

van de werking van een

stroomafwaarts gelegen

snelheidsonderdrukkingsgebied

om een punt van de congestietak

van het fundamenteel diagram te

bepalen

Het capaciteitspunt. De intensiteit op de weg wordt geleidelijk

opgevoerd (met 2

9 0 v tg /h ) totdat de verkeersgenerator een foutmelding

geeft. De capaciteit wordt zo benaderd vanuit de congestievrije tak. Uit

een detector (aggregatie per vijf minuten) wordt de hoogst gemeten

intensiteit met bijbehorende snelheid geregistreerd. Deze procedure

wordt vijfmaal herhaald met verschillende randomseeds, waarna het

gemiddelde wordt genomen.

De congestietak. De intensiteit

wordt iets ( 1 0 0 v t g / h ) onder de

capaciteit ingesteld om

foutmeldingen van de generator te

voorkomen. Vervolgens wordt

stroomafwaarts van de detector een

snelheidsonderdrukkingsgebied

geplaatst. Dit gebied vormt een

bottleneck door de lagere

wenssnelheid: nadat de eerste

voertuigen dit gebied bereiken,

slaat een schokgolf terug over de

detector, waarna de detector een

punt van de congestietak kan

meten, zoals geïllustreerd in de figuur hiernaast. Na de insteltijd loopt

deze simulatie honderd minuten. De detector geeft een combinatie van

intensiteit en snelheid. Door in het snelheidsonderdrukkingsgebied de

onderdrukkingsfactor, in de figuur , te variëren, worden

verschillende punten gevonden; er is op gelet dat de intensiteit niet te

dicht bij de capaciteit komt, waardoor die 1 0 0 v t g / h een rol kunnen

gaan spelen.

De congestievrije tak. Voor elk punt wordt een constante intensiteit

gekozen. Na de insteltijd loopt deze simulatie honderd minuten. Uit de

detector wordt de bij de intensiteit behorende gemiddelde snelheid

afgelezen.

Bij het aanpassen van de wenssnelheden is het eind van het

snelheidsonderdrukkingsgebied van 1 5 0 m , zoals voorgesteld in de kalibratie,

tegen de detector geplaatst. Bij het meten van de congestietak is de

wenssnelheidsaanpassing voor de eenvoud weggelaten.

4.1.2 Problemen door hogere reactietijd

De hierboven genoemde methoden blijken goed te werken, zolang de

reactietijd voor accelereren niet wordt verhoogd.

De methode om de congestietak te meten blijkt te falen bij de verhoogde

reactietijd indien 2 0 % . In het snelheidsonderdrukkingsgebied blijken dan

Page 31: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 31 van 70

kleine schommelingen in de snelheid op te treden die langzaam

stroomopwaarts verplaatsen. Zodra deze schommelingen het begin van het

snelheidsonderdrukkingsgebied zijn gepasseerd, wordt de acceleratie in de

schommelingen een stuk agressiever vanwege de hogere wenssnelheid,

waardoor ook de deceleratie heftiger wordt. Hierdoor ontstaat een cyclische

situatie met continu grote golfbewegingen in de snelheid, waardoor het punt

van het fundamenteel diagram niet meer te meten is.

Een enkele keer ontstaat hierbij zelfs een aanrijding. Een mogelijke oorzaak

hiervoor is dat voertuigtype 4 door de aanpassing wel een kleinere

volgafstand heeft gekregen, maar geen grotere remcapaciteit. In herinnering

wordt geroepen dat de reactietijd voor decelereren niet is aangepast.

Ook de methode om de capaciteit te bepalen is niet feilloos. Vanaf circa

3 0 5 0 v t g / h blijken er filegolven te kunnen ontstaan. Hier zal verderop

uitgebreider op worden ingegaan.

4.1.3 Theoretische berekening van de congestietak

De congestietak in Fosim kan ook theoretisch worden uitgerekend, onder de

aanname dat alle voertuigen de gewenste volgafstand aanhouden. Hiervoor

zijn slechts enkele Fosim-parameters nodig.

Laat V de verzameling voertuigbestuurdercombinaties zijn, n het aandeel

voertuigen van een combinatie ( 1ii V

n

), l de voertuiglengte en z een

parameter voor de gewenste volgafstand. Definieer hiermee de volgende

hulpvariabelen:

1 1

2 2

3 3

i i i

i V

i i

i V

i i

i V

Z n l z

Z n z

Z n z

Laat s en h de bruto-volgafstand respectievelijk -tijd zijn. De dichtheid k en

de intensiteit q zijn nu als functies van de snelheid u te schrijven, waarmee

de congestietak van het fundamenteel diagram is vastgelegd:

Page 32: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 32 van 70

2

1 2 3

2

1 2 3

2

1 2 3

1

2 3

1

2 3

1

2 3

1 1 1

1 1 1

i i i i i

g e m i i

i V

g e m i i

i V

i i i

i i i

i i

i V

g e m i i

i V

g e m i i i i

i V i V

s l z z u z u

s n s Z Z u Z u

k

s n s Z Z u Z u

s l zh z z u

u u

n sZ

h n h Z Z u

u u

uq

Zh n h n sZ Z u

u

Deze theoretische kennis biedt een nuttige aanvulling op de eerder beschreven

empirische methode. De empirische methode staat namelijk niet toe dat

1 0 % , omdat dit wordt geweigerd door Fosim. Bovendien zorgt bij kleine

u een kleine onzekerheid in u voor een grote onzekerheid in /k q u , wat bij

een weergave van het fundamenteel diagram met de dichtheid erin tot

afwijkingen kan leiden. Hier staat tegenover dat de theoretische formule geen

rekening houdt met mogelijke afwijkingen van de volgafstand ten opzichte

van de gewenste volgafstand, bijvoorbeeld door reactietijden.

4.1.4 Resultaten

Op de volgende pagina staan de fundamentele diagrammen afgebeeld. Hierin

zijn ook de punten van de lusgegevens opgenomen. Vanwege eerder genoemde

mogelijke fouten in /k q u , is het aan te bevelen naar de ,u q -figuur te

kijken.

Page 33: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 33 van 70

Figuur 23: fundamentele diagrammen van de verschillende verkeerssituat ies

050

100

150

200

250

0

500

1000

1500

2000

2500

3000

3500

4000

4500

5000

Dic

hth

eid

(vt

g/k

m)

Intensiteit (vtg/h)

050

100

150

200

250

0

20

40

60

80

100

120

140

Dic

hth

eid

(vt

g/k

m)

Snelheid (km/h)

0500

1000

1500

2000

2500

3000

3500

4000

4500

5000

0

20

40

60

80

100

120

140

Inte

nsiteit (

vtg/h

)Snelheid (km/h)

Lusdata

(60 s

-aggre

gatie)

Tra

jecto

riedata

(30 s

-aggre

gatie)

Fosim

-uitkom

ste

n

Theore

tische c

ongestieta

k

Norm

aal

Aangepaste

wenssnelh

eden e

n v

olg

tijd

en

Aangepaste

wenssnelh

eden,

volg

- en r

eactietijd

en

Page 34: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 34 van 70

De capaciteit van het normale gedrag blijkt 4 6 9 0 v t g / h te zijn; bij aanpassing

van wenssnelheid en volgtijd blijkt dit terug te lopen tot 3 8 4 0 v t g / h .

Uit het diagram kunnen de volgende conclusies worden getrokken:

De theoretische congestietak komt goed overeen met de empirische.

Voor zover het fundamenteel diagram met aangepaste reactietijd op de

beschreven manier bepaald kan worden, komt dit overeen met het

fundamenteel diagram zonder aangepaste reactietijd.

Wanneer de filegolf de lussen 3 , 3 k m bovenstrooms passeert, vindt een

overgang naar de congestietak plaats, daalt de snelheid verder over de

congestietak en vindt een overgang terug naar de congestievrije tak

plaats.

De wenssnelheden voor de normale configuratie van Fosim lijken wat

aan de lage kant.

De aanpassing van de gewenste volgtijd zorgt voor een aanzienlijke

verbetering van de ligging van de congestietak. Drie punten van de

trajectoriedata lijken ernaast te liggen, maar dit kan worden ve rklaard

door te kijken naar de snelheidscontouren: de file begint in de laatste

drie tijdvakken van 3 0 s op te lossen, waardoor dit als een overgang

naar de congestievrije tak kan worden verklaard.

4.2 Gevoeligheid voor verstoringen

In de trajectoriedata is een file ter hoogte van het ongeluk waar te nemen , die

na enige tijd oplost. Daarnaast is in de lusdata te zien dat

3 , 3 k m bovenstrooms een filegolf de lussen passeert, waarbij de snelheid ter

plaatse korte tijd sterk terugvalt. De vraag is in hoeverre dit is na te bootsen

in Fosim.

Om aan bovenstaande eisen te voldoen, moet er een zekere mate van chaos in

de aangepaste Fosim-simulaties zit.

In onderstaande tabel staan Fosim-snelheidscontouren met het aangepaste

rijgedrag bij verschillende aangeboden verkeersintensiteiten in de opstelling

die hierboven gebruikt werd om de vrije tak van het fundamenteel diagram te

bepalen. Het snelheidsonderdrukkingsgebied dat de wenssnelheden aanpast,

bevindt zich op 1 8 5 0 m 2 0 0 0 mx . Vanwege het stochastische karakter zijn

telkens twee verschillende randomseeds gebruikt.

3 0 0 0 v t g / h

Page 35: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 35 van 70

3 0 2 5 v t g / h

3 0 5 0 v t g / h

3 1 0 0 v t g / h

3 2 5 0 v t g / h

3 5 0 0 v t g / h

Tabel 2: snelheidscontouren uit Fosim tonen instabiliteit van het verkeersbeeld

In de figuren is te zien dat vanaf circa 3 0 5 0 v t g / h filegolven kunnen ontstaan

bij het snelheidsonderdrukkingsgebied. Wanneer deze ontstaan heeft een

stochastisch karakter, maar de kans dat ze binnen een bepaalde tijd

verschijnen, neemt toe met de intensiteit.

Men zou kunnen stellen dat de capaciteit ongeveer 3 0 5 0 v t g / h is, hoewel met

enig geluk gedurende beperkte tijd ook hogere intensiteiten haalbaar zijn. In

alle gevallen is die beperkte tijd minder dan een uur. De capaciteit van

3 8 4 0 v t g / h zonder verhoogde reactietijd is in elk geval niet volledig te

benutten.

Page 36: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 36 van 70

Uiteraard ligt ook deze gereduceerde capaciteit boven de waargenomen

intensiteit van circa 2 5 0 0 v t g / h . Een mogelijke verklaring hiervoor is dat de

reactietijd te laag was ingesteld vanwege een beperking van Fosim. Een

verdere verhoging van de reactietijd lost dit verschil wellicht op.

Uit het feit dat de filegolven niet op willekeurige plaatsen ontstaan, maar

telkens bij het snelheidsonderdrukkingsgebied, kan worden geconcludeerd dat

de verlaging van de wenssnelheden een wezenlijke toevoeging aan het

aangepaste rijgedrag is.

Aan de voortplanting van de filegolf in deze figuren, moet niet te veel waarde

worden gehecht. Bovenstrooms geldt het aangepaste rijgedrag immers niet en

het normale rijgedrag kan anders reageren op de passerende filegolf . Hoewel

de wenssnelheden lokaal zijn aangepast met een

snelheidsonderdrukkingsgebied, gelden de aanpassingen van de volg- en

reactietijden voor de hele simulatie: zoals eerder gezegd is het in de huidige

versie van Fosim niet mogelijk om dit lokaal te veranderen.

4.3 Afrijsimulatie

Uit de snelheidscontouren van de trajectoriedata blijkt dat gedurende de eerste

1 6 0 s van de meting, de kop van de file redelijk op dezelfde plaats blijft.

Door in Fosim een combinatie van verkeersgenerator en een

snelheidsonderdrukkingsgebied te plaatsen om een verkeersstroom met de

gewenste intensiteit en snelheid te genereren, kan vanaf dit punt het afrijden

uit de file worden gesimuleerd.

Door in Fosim elke 5 m detectoren te plaatsen, kunnen de resultaten hiervan

eenvoudig worden vergeleken met de virtuele detectoren van de

trajectoriedata. In de volgende figuur staan de resultaten van de verschillende

Fosim-configuraties, gecombineerd met de eerste 1 6 0 s trajectoriedata. In de

figuur is behalve de macroscopische snelheid ook een hiervan afgeleide

macroscopische acceleratie te zien (zie bijlage C).

Page 37: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 37 van 70

70.870.97171.171.271.371.471.571.671.771.820

30

40

50

60

70

80

90

100

Snelh

eid

(km

/h)

70.870.97171.171.271.371.471.571.671.771.8-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

1.2

1.4

Vers

nelli

ng (

m/s

2)

Plaats (km)

Trajectoriedata

Fosim normaal

Fosim met aangepaste volgtijden

Fosim met aangepaste volg- en reactietijden

Figuur 24: afrijden uit filekop

Met de normale Fosim-configuratie is in het begin de acceleratie te hoog,

waardoor het verkeer te snel optrekt. De aangepaste volgtijden brengen hier

nauwelijks verandering in. Indien de reactietijden ook worden aangepast,

wordt het afrijden aanvankelijk erg goed gesimuleerd, maar op den duur

wordt de snelheid te laag.

De oplossing lijkt te zitten in het halverwege wijzigen van het aangepaste

rijgedrag naar het normale rijgedrag. In de figuur is daarom een nieuwe

afrijsimulatie gestart met de normale instellingen om het stokje vanaf 71,68

over te nemen. Deze plek komt goed overeen met de plek waar het ongeval uit

het zicht verdwijnt. Hierdoor krijgt de acceleratie als het ware een nieuwe

impuls. Het resultaat komt nu goed overeen met de informatie uit de

trajectoriën.

De snelheid bij hectometerpaaltje 70,8 is ongeveer 9 3 k m / h , wat laag is ten

opzichte van de gegevens van de lussen ter plekke, maar wel voorkomt in een

uitschieter. Het effect van de aangepaste acceleratie lijkt op die afstand van

het ongeluk echter uitgedempt, aangezien met normale acceleratie vanaf het

begin een nauwelijks hogere snelheid wordt gehaald.

Page 38: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 38 van 70

5 Conclusies en aanbevelingen

5.1 Conclusies

Fosim is standaard niet goed in staat om kijkfiles te simuleren. Met een

snelheidsonderdrukkingsgebied is weliswaar de wenssnelheid aan te passen,

maar dit is slechts een deel van de oplossing. Door andere volg- en

reactietijden te hanteren, is het volggedrag zowel in de filekop zelf als bij het

wegrijden hieruit een heel stuk beter na te bootsen.

Om deze verbetering door te voeren, is echter wel een aanpassing in de

programmatuur van Fosim nodig, namelijk om de volg- en reactietijden lokaal

te kunnen wijzigen. Pas als dit is gedaan, is een echte ‘overall-validatie’

mogelijk in aanvulling op de nu uitgevoerde validaties op deelaspecten.

Dit gebied met aangepast gedrag zou voor het incident in Apeldoorn een

lengte van circa 1 5 0 m moeten hebben, waarbij het einde samenvalt met het

punt waarop de andere rijbaan niet meer te zien is, te weten 71,68 volgens de

hectometrering.

5.2 Aanbevelingen

5.2.1 ‘Gedragsonderdrukkingsgebied’

De belangrijkste aanbeveling is om de snelheidsonderdrukkingsgebieden van

Fosim uit te breiden tot meer algemene ‘gedragsonderdrukkingsgebieden’,

waarmee lokaal elke gedragsparameter van elke voertuigbestuurdercombinatie

kan worden gewijzigd. Als deze gedragsonderdrukkingsgebieden tevens

tijdafhankelijk worden gemaakt, kunnen bovendien eventuele intreedeffecten

worden onderzocht.

Deze aanbeveling is essentieel om in de praktijk een kijkfile te kunnen

simuleren in Fosim. Hiermee kan tevens het experiment worden uitgevoerd

dat aan het begin van het validatiehoofdstuk is beschreven; het wordt sterk

aanbevolen om dat ook te doen.

5.2.2 Verhoging van de reactietijd

De reactietijd is nu gekalibreerd op 1 , 9 s , wat de voor de rechterstrook

bedoelde waarde was, omdat hogere waarden onmogelijk waren. Voor de

linkerstrook was echter een waarde van 2 , 9 s bedoeld. Aanbevolen wordt om

in Fosim hogere reactietijden toe te staan en de stroken vervolgens

gezamenlijk te fitten om de juiste hogere waarde te vinden.

Page 39: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 39 van 70

De validatie voor de gevoeligheid voor verstoringen dient dan opnieuw te

worden uitgevoerd. Als alles goed is, moeten de filegolven dan ook op gaan

treden bij intensiteiten rond de 2 5 0 0 v t g / h .

5.2.3 Variatie in wenssnelheid en reactietijd

Op dit moment hebben alle voertuigbestuurdercombinaties dezelfde

wenssnelheidsreductie en reactietijd. Aangezien dit best kan verschillen per

bestuurder – het onderzoek van Knoop, Van Zuylen en Hoogendoorn meldt

bijvoorbeeld standaardafwijkingen van maar liefst 1 , 5 s in de reactietijd –

wordt aanbevolen een mogelijkheid in Fosim daarvoor te maken en

vervolgens te onderzoeken wat het effect op de verkeersafwikkeling is.

5.2.4 Gevonden bugs

Tot slot zijn er nog enkele kleine fouten in Fosim, die ook de moeite waard

zijn om op te lossen als men geen ambitie heeft om kijkfiles in Fosim te

simuleren:

Bij het opslaan van wegontwerpen wordt de reductiefactor van

snelheidsonderdrukking onterecht afgerond op tientallen procenten.

Bij een reactietijd van 2 , 0 s crasht het simulatieproces omdat ergens

door nul wordt gedeeld. (Zie kalibratie van reactietijden.)

Verkeerslichten en tijdelijke blokkades hebben een verborgen

parameter 1 0 s die de grootte van het invloedsgebied van de

obstakels bepalen. (Zie bijlage B.) Deze parameter zou gewoon in de

kalibratie aangepast moeten kunnen worden.

Een geel verkeerslicht doet momenteel precies hetzelfde als een rood

verkeerslicht. (Zie bijlage B.) Dit zou in de handleiding duidelijk

vermeld moeten worden. Voor de duidelijkheid zou overwogen moeten

worden om het gele licht te verwijderen.

Page 40: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 40 van 70

6 Evaluatie

██████████████████████████████████████████████

████████████████████

██████████████████████████████████████████████

██████████████████████████████████████████████

██████████████████████████████████████████████

██████████████████████████████████████████████

██████████████████████████████████████████████

██████████████████████████████████████████████

███████████

██████████████████████████████████████████████

██████████████████████████████████████████████

██████████████████████████████████████████████

██████████████████████████

██████████████████████████████████████████████

██████████████████████████████████████████████

██████████████████████████████████████████████

██████████████████████████████████████████████

██████████████████████████████████████████████

██████████████████████████████

██████████████████████████████████████████████

██████████████████████████████████████████████

██████████████████████████████████████████████

██████████████████████████████████████████████

██████████████████████████████████████████████

██████████████████████████████████████████████

███████████████████████

██████████████████████████████████████████████

██████████████████████████████████████████████

██████████████████████████████████████████████

██████████████████████████████████████████████

██████████████

██████████████████████████████████████████████

██████████████████████████████████████████████

████████

Page 41: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 41 van 70

Referenties

Algemene kennis

R. van Nes, F.M. Sanders, J.W.C. van Lint, P.B.L. Wiggenraad, 2010,

Dictaat CT2710: Transport & Planning

Onderzoeken

V.L. Knoop, 2009, Road Incidents and Network Dynamics: Effects on

driving behaviour and traffic congestion (hoofdstuk 3: V.L. Knoop, H.J.

van Zuylen en S.P. Hoogendoorn, Microscopic traffic behaviour around

incidents)

V.L. Knoop, S.P. Hoogendoorn en H.J. van Zuylen, 2007, Empirical

Differences between Time Mean Speed and Space Mean Speed

Q. Ou, 2011, Fusing Heterogeneous Traffic Data: Parsimonious

Approaches using Data-Data Consistency (paragraaf 2.3.2: Loop data)

Informatie over Fosim

T. Dijker, P. Knoppers, 2006, FOSIM 5.1: Gebruikershandleiding

FOSIM 5.1 Help

S.P. Hoogendoorn, 2011, Reader CT4821: Traffic Flow Theory and

Simulation

Data

De trajectorie- en lusdata zijn voor dit onderzoek beschikbaar gesteld door

V.L. Knoop.

Page 42: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 42 van 70

Bijlage A: dataverwerkingsprogramma’s

In deze bijlage zal de broncode van de programma’s worden gegeven die

nodig waren om alle data te verwerken.

Alle programmatuur die nodig was om de trajectoriedata te verwerken, is

geschreven in Matlab. De tekstbestanden met lusdata hadden enige

voorbewerking nodig – meerdere spaties tussen kolommen moesten worden

vervangen door een enkele spatie – maar kunnen daarna ook door het Matlab-

programma worden gelezen.

Fosim heeft een optie om simulatieresultaten op te slaan in een bestand. Die

bestanden zijn verwerkt door een PHP-script. De uitvoer daarvan is, naast

soms wat gegevens op het scherm, een Matlab-script dat door andere Matlab-

scripts wordt aangeroepen om bijvoorbeeld grafieken van de resultaten te

maken, eventueel vermengd met andere data.

Hieronder volgt de code.

Kern: analyse.m

Dit is het hoofdscript dat bijna alles doet.

clc; clear; format shortG;

% PARAMETERS

lengte_linkerrijstrook = 4;

min_lengte_vrachtwagen = 6;

min_lengte_lange_vrachtwagen = 11;

fracties = {[1/3, 1/3, 1/3], [1/2, 1/2]};

kleuren = 'gcbyr';

max_abs_volgacceleratie = 0.5;

min_volgduur = 1;

min_x_gebied = 1900;

z1 = 3;

z3 = 0.005;

doorsnedes = 71.61:0.005:71.785;

tijden = 10:30:280; % gebruik dit bij algemene analyse

%tijden = [0, 160, 300]; % gebruik dit bij afrijsimulatie

% BEREKENINGEN

load('apeldoorn3lane1metleiders.mat');

vtg_rechts = vtg;

load('apeldoorn3lane2metleiders.mat');

for i = 1:length(vtg)

Page 43: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 43 van 70

vtg(i).length = zeros(1, length(vtg(i).time)) +

lengte_linkerrijstrook;

vtg(i).length_leader = vtg(i).length;

vtg(i).nr = vtg(i).nr + length(vtg_rechts);

vtg(i).leader = vtg(i).leader + length(vtg_rechts);

vtg(i).follower = vtg(i).follower + length(vtg_rechts);

vtg(i).net_headway_m = vtg(i).gross_headway_m -

lengte_linkerrijstrook;

vtg(i).net_headway_s = vtg(i).net_headway_m ./ vtg(i).speed;

end; clear i;

vtg = [vtg_rechts, vtg];

clear vtg_rechts;

subtypes = zeros(1, length(fracties));

for i = 1:length(fracties)

subtypes(i) = length(fracties{i});

end;

hoofdtypes = length(subtypes);

aandeel_vrachtwagens = 0;

for i = 1:length(vtg)

vtg(i).strook = 3 - vtg(i).lane(1);

vtg(i).lengte = vtg(i).length(1);

vtg(i).vrachtwagen = vtg(i).lengte > min_lengte_vrachtwagen;

aandeel_vrachtwagens = aandeel_vrachtwagens + vtg(i).vrachtwagen

/ length(vtg);

% laatste tijdstap blijkt snelheid altijd hetzelfde

% te zijn als een-na-laatste tijdstap (fout in dataset)

vtg(i).acceleratie = [NaN, NaN, (vtg(i).speed(5:end-1) -

vtg(i).speed(1:end-5)) ./ (vtg(i).time(5:end-1) - vtg(i).time(1:end-

5)), NaN, NaN, NaN];

vtg(i).max_acceleratie = max(vtg(i).acceleratie);

vtg(i).max_deceleratie = min(vtg(i).acceleratie);

vtg(i).plaats = 71.8-(vtg(i).xpos+224)/1000;

if vtg(i).vrachtwagen

if(vtg(i).lengte > min_lengte_lange_vrachtwagen)

vtg(i).hoofdtype = 3;

else

vtg(i).hoofdtype = 2;

end;

else

vtg(i).hoofdtype = 1;

end;

vtg(i).hoofdtype = min(vtg(i).hoofdtype, hoofdtypes);

end; clear i;

for i = 1:length(vtg)

vtg(i).leider_acceleratie = zeros(1,length(vtg(i).leader));

for j = 1:length(vtg(i).leader)

if isnan(vtg(i).leader(j))

vtg(i).leider_acceleratie(j) = NaN;

else

k = find(vtg(vtg(i).leader(j)).time == vtg(i).time(j));

if isempty(k)

vtg(i).leider_acceleratie(j) = NaN;

else

vtg(i).leider_acceleratie(j) =

vtg(vtg(i).leader(j)).acceleratie(k(1));

end;

Page 44: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 44 van 70

end;

end; clear j;

end; clear i;

hoofdtype_v = cell(1, hoofdtypes);

hoofdtype_d = cell(1, hoofdtypes);

hoofdtype_h = cell(1, hoofdtypes);

hoofdtype_z2 = cell(1, hoofdtypes);

hoofdtype_t = cell(1, hoofdtypes);

hoofdtype_vtg = cell(1, hoofdtypes);

hoofdtype_strook = cell(1, hoofdtypes);

bestuurders_per_hoofdtype = cell(1, hoofdtypes);

for i = 1:length(vtg)

vtg(i).z2 = [];

j = 3;

while j < length(vtg(i).leader) - 2

if isnan(vtg(i).leader(j)) || vtg(i).net_headway_m(j) < 0 ||

abs(vtg(i).acceleratie(j)) > max_abs_volgacceleratie ||

abs(vtg(i).leider_acceleratie(j)) > max_abs_volgacceleratie ||

vtg(i).xworld(j) < min_x_gebied

j = j + 1;

else

k = j + 1;

while k < length(vtg(i).leader) - 2

if vtg(i).leader(k) == vtg(i).leader(j) &&

abs(vtg(i).acceleratie(k)) <= max_abs_volgacceleratie &&

abs(vtg(i).leider_acceleratie(k)) <= max_abs_volgacceleratie &&

vtg(i).xworld(j) >= min_x_gebied

k = k + 1;

else

if vtg(i).time(k-1) - vtg(i).time(j) >=

min_volgduur

v = mean(vtg(i).speed(j:k-1));

h = mean(vtg(i).net_headway_s(j:k-1));

z2 = h - z1/v - z3*v;

vtg(i).z2 = [vtg(i).z2, z2];

hoofdtype_v{vtg(i).hoofdtype} =

[hoofdtype_v{vtg(i).hoofdtype}, v];

hoofdtype_d{vtg(i).hoofdtype} =

[hoofdtype_d{vtg(i).hoofdtype}, mean(vtg(i).net_headway_m(j:k-1))];

hoofdtype_h{vtg(i).hoofdtype} =

[hoofdtype_h{vtg(i).hoofdtype}, h];

hoofdtype_z2{vtg(i).hoofdtype} =

[hoofdtype_z2{vtg(i).hoofdtype}, z2];

hoofdtype_t{vtg(i).hoofdtype} =

[hoofdtype_t{vtg(i).hoofdtype}, vtg(i).time(k-1) - vtg(i).time(j)];

hoofdtype_vtg{vtg(i).hoofdtype} =

[hoofdtype_vtg{vtg(i).hoofdtype}, i];

hoofdtype_strook{vtg(i).hoofdtype} =

[hoofdtype_strook{vtg(i).hoofdtype}, vtg(i).strook];

%plot(vtg(i).time(j:k-1),

vtg(i).net_headway_s(j:k-1));

%pause;

clear v;

clear h;

clear z2;

end;

break;

end;

end;

j = k;

Page 45: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 45 van 70

clear k;

end;

end;

clear j;

vtg(i).z2_gem = mean(vtg(i).z2);

bestuurders_per_hoofdtype{vtg(i).hoofdtype} =

[bestuurders_per_hoofdtype{vtg(i).hoofdtype}; i, vtg(i).z2_gem];

vtg(i).z2_momentaan = vtg(i).net_headway_s - z1./vtg(i).speed -

z3*vtg(i).speed;

end; clear i;

types = 0;

bestuurders_per_type = cell(1, sum(subtypes));

for i = 1:hoofdtypes

bestuurders_per_hoofdtype{i} =

sortrows(bestuurders_per_hoofdtype{i}, 2);

aantal = size(bestuurders_per_hoofdtype{i}, 1) -

sum(isnan(bestuurders_per_hoofdtype{i}(:,2)));

ingedeeld = 0;

if subtypes(i) > 1

for j = 1:subtypes(i)-1

indelen = round(aantal * fracties{i}(j));

types = types + 1;

bestuurders_per_type{types} =

bestuurders_per_hoofdtype{i}(ingedeeld+1:ingedeeld+indelen,1);

ingedeeld = ingedeeld + indelen;

end; clear j;

end;

types = types + 1;

bestuurders_per_type{types} =

bestuurders_per_hoofdtype{i}(ingedeeld+1:aantal,1);

clear aantal;

clear indelen;

clear ingedeeld;

end; clear i;

for i = 1:types

for j = 1:length(bestuurders_per_type{i})

vtg(bestuurders_per_type{i}(j)).type = i;

end; clear j;

end; clear i;

type_v = cell(1, types);

type_d = cell(1, types);

type_h = cell(1, types);

type_z2 = cell(1, types);

type_t = cell(1, types);

type_vtg = cell(1, types);

type_strook = cell(1, types);

for i = 1:hoofdtypes

for j = 1:length(hoofdtype_vtg{i})

t = vtg(hoofdtype_vtg{i}(j)).type;

type_v{t} = [type_v{t}, hoofdtype_v{i}(j)];

type_d{t} = [type_d{t}, hoofdtype_d{i}(j)];

type_h{t} = [type_h{t}, hoofdtype_h{i}(j)];

type_z2{t} = [type_z2{t}, hoofdtype_z2{i}(j)];

type_t{t} = [type_t{t}, hoofdtype_t{i}(j)];

type_vtg{t} = [type_vtg{t}, hoofdtype_vtg{i}(j)];

type_strook{t} = [type_strook{t}, hoofdtype_strook{i}(j)];

clear t;

end; clear j;

Page 46: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 46 van 70

end; clear i;

z2_gemiddeld = zeros(1, types);

for i = 1:types

z2_gemiddeld(i) = type_t{i} * type_z2{i}' / sum(type_t{i});

end; clear i;

strook_hoofdtype_v = {cell(1, hoofdtypes), cell(1, hoofdtypes)};

strook_hoofdtype_d = {cell(1, hoofdtypes), cell(1, hoofdtypes)};

strook_hoofdtype_h = {cell(1, hoofdtypes), cell(1, hoofdtypes)};

strook_hoofdtype_z2 = {cell(1, hoofdtypes), cell(1, hoofdtypes)};

strook_hoofdtype_t = {cell(1, hoofdtypes), cell(1, hoofdtypes)};

strook_hoofdtype_vtg = {cell(1, hoofdtypes), cell(1, hoofdtypes)};

for i=1:hoofdtypes

for j=1:length(hoofdtype_vtg{i})

s = vtg(hoofdtype_vtg{i}(j)).strook;

strook_hoofdtype_v{s}{i} = [strook_hoofdtype_v{s}{i},

hoofdtype_v{i}(j)];

strook_hoofdtype_d{s}{i} = [strook_hoofdtype_d{s}{i},

hoofdtype_d{i}(j)];

strook_hoofdtype_h{s}{i} = [strook_hoofdtype_h{s}{i},

hoofdtype_h{i}(j)];

strook_hoofdtype_z2{s}{i} = [strook_hoofdtype_z2{s}{i},

hoofdtype_z2{i}(j)];

strook_hoofdtype_t{s}{i} = [strook_hoofdtype_t{s}{i},

hoofdtype_t{i}(j)];

strook_hoofdtype_vtg{s}{i} = [strook_hoofdtype_vtg{s}{i},

hoofdtype_vtg{i}(j)];

clear s;

end; clear j;

end; clear i;

strook_type_v = {cell(1, types), cell(1, types)};

strook_type_d = {cell(1, types), cell(1, types)};

strook_type_h = {cell(1, types), cell(1, types)};

strook_type_z2 = {cell(1, types), cell(1, types)};

strook_type_t = {cell(1, types), cell(1, types)};

strook_type_vtg = {cell(1, types), cell(1, types)};

for i=1:types

for j=1:length(type_vtg{i})

s = vtg(type_vtg{i}(j)).strook;

strook_type_v{s}{i} = [strook_type_v{s}{i}, type_v{i}(j)];

strook_type_d{s}{i} = [strook_type_d{s}{i}, type_d{i}(j)];

strook_type_h{s}{i} = [strook_type_h{s}{i}, type_h{i}(j)];

strook_type_z2{s}{i} = [strook_type_z2{s}{i}, type_z2{i}(j)];

strook_type_t{s}{i} = [strook_type_t{s}{i}, type_t{i}(j)];

strook_type_vtg{s}{i} = [strook_type_vtg{s}{i},

type_vtg{i}(j)];

clear s;

end; clear j;

end; clear i;

detector_v = cell(1,length(doorsnedes));

tijddetector_v = cell(length(tijden)-1,length(doorsnedes));

detector_passages = cell(1,length(doorsnedes));

tijddetector_n = zeros(length(tijden)-1,length(doorsnedes));

for i=1:length(vtg)

positie = sum(doorsnedes < vtg(i).plaats(1));

tijd = sum(tijden < vtg(i).time(1));

for j=2:length(vtg(i).time)

positie_nieuw = sum(doorsnedes < vtg(i).plaats(j));

Page 47: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 47 van 70

while positie_nieuw < positie

v = mean(vtg(i).speed(j-1:j));

detector_v{positie} = [detector_v{positie}, v];

if tijd > 0 && tijd < length(tijden)

tijddetector_v{tijd, positie} = [tijddetector_v{tijd,

positie}, v];

end;

clear v;

t = mean(vtg(i).time(j-1:j));

detector_passages{positie} = [detector_passages{positie},

t];

if tijd > 0 && tijd < length(tijden)

tijddetector_n(tijd, positie) = tijddetector_n(tijd,

positie) + 1;

end;

clear t;

positie = positie - 1;

end;

clear positie_nieuw;

tijd = sum(tijden < vtg(i).time(j));

end; clear j;

clear positie;

clear tijd;

end; clear i;

detector_u = zeros(1,length(doorsnedes));

detector_n = zeros(1,length(doorsnedes));

detector_q = zeros(1,length(doorsnedes));

for i=1:length(doorsnedes)

detector_u(i) = 1 / mean(1 ./ detector_v{i});

detector_n(i) = length(detector_passages{i});

detector_q(i) = (detector_n(i) - 1) / (max(detector_passages{i})

- min(detector_passages{i}));

end; clear i;

intensiteit = mean(detector_q(detector_n == max(detector_n)));

snelheid = min(detector_u);

detector_k = intensiteit ./ detector_u;

dichtheid = max(detector_k);

tijddetector_u = zeros(length(tijden)-1,length(doorsnedes));

tijddetector_q = tijddetector_n / mean(diff(tijden));

for i=1:length(tijden)-1

for j=1:length(doorsnedes)

tijddetector_u(i,j) = 1 / mean(1 ./ tijddetector_v{i,j});

end; clear j;

end; clear i;

tijdintensiteit = mean(tijddetector_q(:,detector_n ==

max(detector_n)), 2);

tijdsnelheid = min(tijddetector_u, [], 2);

tijddetector_k = zeros(length(tijden)-1,length(doorsnedes));

for i=1:length(tijden)-1

for j=1:length(doorsnedes)

tijddetector_k(i,j) = tijdintensiteit(i) /

tijddetector_u(i,j);

end; clear j;

end; clear i;

tijddichtheid = max(tijddetector_k, [], 2);

% UITVOER

figure(1);

Page 48: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 48 van 70

markers = 'xo';

hoofdkleuren = cell(0);

for i = 1:hoofdtypes

hoofdkleuren = [hoofdkleuren, kleuren(sum(subtypes(1:i)))];

end; clear i;

schaal = 25;

subplot(3,2,1);

for i = 1:hoofdtypes

for s = 1:2

scatter(3.6*strook_hoofdtype_v{s}{i},

strook_hoofdtype_d{s}{i}, schaal*strook_hoofdtype_t{s}{i},

hoofdkleuren{i}, markers(s));

hold on;

end; clear s;

end; clear i;

xlabel('Snelheid (km/h)');

ylabel('Volgafstand (m)');

legend('Linkerstrook', 'Rechterstrook', 'Vrachtwagens', 'Location',

'NorthWest');

hold off;

%title('Voertuigtypes','FontWeight','Bold');

subplot(3,2,2);

for i = 1:types

for s = 1:2

scatter(3.6*strook_type_v{s}{i}, strook_type_d{s}{i},

schaal*strook_type_t{s}{i}, kleuren(i), markers(s));

hold on;

end; clear s;

end; clear i;

tick = get(gca,'XTick');

v = (min(tick):1:max(tick))/3.6;

tick = get(gca,'YTick');

ylim([min(tick), max(tick)]);

clear tick;

for i = 1:types

plot(3.6*v, z1+z2_gemiddeld(i).*v+z3.*v.*v, ['-',kleuren(i)]);

end; clear i;

xlabel('Snelheid (km/h)');

ylabel('Volgafstand (m)');

hold off;

%title('Voertuigbestuurdercombinaties','FontWeight','Bold');

subplot(3,2,3);

for i = 1:hoofdtypes

for s = 1:2

scatter(3.6*strook_hoofdtype_v{s}{i},

strook_hoofdtype_h{s}{i}, schaal*strook_hoofdtype_t{s}{i},

hoofdkleuren{i}, markers(s));

hold on;

end; clear s;

end; clear i;

plot(3.6*v, z1./v+z3.*v, 'Color', [.8,.8,.8], 'LineStyle', '--');

xlabel('Snelheid (km/h)');

ylabel('Volgtijd (s)');

hold off;

subplot(3,2,4);

for i = 1:types

for s = 1:2

scatter(3.6*strook_type_v{s}{i}, strook_type_h{s}{i},

schaal*strook_type_t{s}{i}, kleuren(i), markers(s));

hold on;

Page 49: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 49 van 70

end; clear s;

end; clear i;

for i = 1:types

plot(3.6*v, z1./v+z2_gemiddeld(i)+z3.*v, ['-',kleuren(i)]);

end; clear i;

plot(3.6*v, z1./v+z3.*v, 'Color', [.8,.8,.8], 'LineStyle', '--');

xlabel('Snelheid (km/h)');

ylabel('Volgtijd (s)');

hold off;

subplot(3,2,5);

for i = 1:hoofdtypes

for s = 1:2

scatter(3.6*strook_hoofdtype_v{s}{i},

strook_hoofdtype_z2{s}{i}, schaal*strook_hoofdtype_t{s}{i},

hoofdkleuren{i}, markers(s));

hold on;

end; clear s;

end; clear i;

xlabel('Snelheid (km/h)');

ylabel('Parameter z_2 (s)');

legend('Linkerstrook', 'Rechterstrook', 'Vrachtwagens', 'Location',

'NorthEast');

hold off;

subplot(3,2,6);

for i = 1:types % voor de legenda

plot(60, 5, ['-',kleuren(i)]);

hold on;

end; clear i;

for i = 1:types

for s = 1:2

scatter(3.6*strook_type_v{s}{i}, strook_type_z2{s}{i},

schaal*strook_type_t{s}{i}, kleuren(i), markers(s));

hold on;

end; clear s;

end; clear i;

for i = 1:types % om lijnen op voogrond te krijgen

plot(3.6*v, zeros(length(v))+z2_gemiddeld(i), ['-',kleuren(i)]);

end; clear i;

clear v;

xlabel('Snelheid (km/h)');

ylabel('Parameter z_2 (s)');

set(gca, 'Box', 'off');

legend('Type 1', 'Type 2', 'Type 3', 'Type 4', 'Type 5', 'Location',

'NorthEast');

hold off;

clear markers;

clear hoofdkleuren;

clear schaal;

disp(' Combinatie z2 (s)');

disp([(1:types)', z2_gemiddeld']);

disp(' Detector u (km/h) q (vtg/h) k (vtg/km) n

(vtg)');

disp([(1:length(doorsnedes))', 3.6*detector_u',

zeros(length(doorsnedes),1)+3600*intensiteit, 1000*detector_k',

detector_n']);

figure(2);

subplot(1,1,1);

Page 50: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 50 van 70

strookkleuren = 'kr';

lijnen = zeros(1,2);

for i = 1:length(vtg)

lijnen(vtg(i).strook) = plot(vtg(i).plaats, vtg(i).time,

strookkleuren(vtg(i).strook));

hold on;

end; clear i;

clear strookkleuren;

set(gca, 'XDir', 'reverse');

xlabel('Plaats (km)');

ylabel('Tijd (s)');

legend(lijnen, {'Linkerstrook', 'Rechterstrook'}, 'Location',

'Best');

clear lijnen;

hold off;

figure(3);

subplot(1,1,1);

midtijden = tijden(1:length(tijden)-1)+diff(tijden)/2;

[x, t] = meshgrid(doorsnedes, midtijden);

u = linspace(min(min(tijddetector_u)), max(max(tijddetector_u)), 85);

[C, h] = contourf(x, t, 3.6*tijddetector_u, 3.6*u);

set(h, 'LineColor', 'none');

clear C;

clear h;

hold on;

[C, h] = contour(x, t, 3.6*tijddetector_u, '-k');

clear x;

clear t;

clear u;

set(h, 'ShowText', 'on');

clear C;

clear h;

tinten = hsv(255);

colormap(tinten(1:85,:));

clear tinten;

set(gca, 'YTick', midtijden);

set(gca, 'XDir', 'reverse');

title('Snelheidscontouren (km/h)');

xlabel('Plaats (km)');

ylabel('Tijd (s)');

hold off;

lussen(midtijden, 1000*tijddichtheid, 3600*tijdintensiteit,

3.6*tijdsnelheid);

n = [zeros(1,3) + 1/3 * (1-aandeel_vrachtwagens), zeros(1,2) + 1/2 *

aandeel_vrachtwagens];

l = [4.5, 4, 4, 8, 14];

z1_bruto = l*n' + z1;

z2_normaal = [0.56, 0.72, 1.28, 2.08, 2.23];

u = 0:.5:25;

k_gemiddeld = 2 ./ (n*z2_gemiddeld'*u + z3*u.^2 + z1_bruto);

k_normaal = 2 ./ (n*z2_normaal'*u + z3*u.^2 + z1_bruto);

q_gemiddeld = 2 ./ (z1_bruto./u + z3*u +

n*z2_gemiddeld'*ones(1,length(u)));

q_normaal = 2 ./ (z1_bruto./u + z3*u +

n*z2_normaal'*ones(1,length(u)));

subplot(2,2,1);

plot(1000*k_normaal, 3600*q_normaal, '-.b');

plot(1000*k_gemiddeld, 3600*q_gemiddeld, '-.m');

scatter(1000*tijddichtheid, 3600*tijdintensiteit, 25, 'y', 'filled');

Page 51: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 51 van 70

hold off;

subplot(2,2,2);

scatter(1, 1, [], 'g', 'filled');

hold on;

scatter(1, 1, [], 'y', 'filled');

plot(1, 1, '-k', 'Marker', '*');

plot(1, 1, '-.k');

plot(1, 1, '-b');

plot(1, 1, '-m');

plot(1, 1, '-r');

set(gca, 'YLim', [0, 5]);

legend('Lusdata (60 s-aggregatie)', 'Trajectoriedata (30 s-

aggregatie)', 'Fosim-uitkomsten', 'Theoretische congestietak',

'Normaal', 'Aangepaste wenssnelheden en volgtijden', 'Aangepaste

wenssnelheden, volg- en reactietijden', 'Location', 'South');

set(gca, 'Visible', 'off');

hold off;

subplot(2,2,3);

plot(1000*k_normaal, 3.6*u, '-.b');

plot(1000*k_gemiddeld, 3.6*u, '-.m');

scatter(1000*tijddichtheid, 3.6*tijdsnelheid, 25, 'y', 'filled');

hold off;

subplot(2,2,4);

plot(3600*q_normaal, 3.6*u, '-.b');

plot(3600*q_gemiddeld, 3.6*u, '-.m');

scatter(3600*tijdintensiteit, 3.6*tijdsnelheid, 25, 'y', 'filled');

hold off;

clear u;

clear k_gemiddeld;

clear k_normaal;

clear q_gemiddeld;

clear q_normaal;

figure(6);

subplot(2,1,1);

plot(doorsnedes, 3.6*tijddetector_u(1,:), '-k');

hold on;

run '../Afrijsimulaties/analyse.m';

plot(afrij_normaal_x, afrij_normaal_u, '-b');

plot(afrij_volgtijd_x, afrij_volgtijd_u, '-m');

plot(afrij_aangepast_x, afrij_aangepast_u, '-r');

plot(afrij_hersteld_x, afrij_hersteld_u, '-b');

set(gca, 'XDir', 'reverse');

hold off;

ylabel('Snelheid (km/h)');

legend('Trajectoriedata', 'Fosim normaal', 'Fosim met aangepaste

volgtijden', 'Fosim met aangepaste volg- en reactietijden',

'Location', 'SouthEast');

subplot(2,1,2);

plot(doorsnedes(3:end-2), (tijddetector_u(1,1:end-4).^2 -

tijddetector_u(1,5:end).^2) ./ (2 * 1000 * (doorsnedes(5:end) -

doorsnedes(1:end-4))), '-k');

hold on;

plot(afrij_normaal_x(3:end-2), (afrij_normaal_u(1:end-4).^2 -

afrij_normaal_u(5:end).^2) ./ (3.6^2 * 2 * 1000 *

(afrij_normaal_x(5:end) - afrij_normaal_x(1:end-4))), '-b');

plot(afrij_volgtijd_x(3:end-2), (afrij_volgtijd_u(1:end-4).^2 -

afrij_volgtijd_u(5:end).^2) ./ (3.6^2 * 2 * 1000 *

(afrij_volgtijd_x(5:end) - afrij_volgtijd_x(1:end-4))), '-m');

Page 52: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 52 van 70

plot(afrij_aangepast_x(3:end-2), (afrij_aangepast_u(1:end-4).^2 -

afrij_aangepast_u(5:end).^2) ./ (3.6^2 * 2 * 1000 *

(afrij_aangepast_x(5:end) - afrij_aangepast_x(1:end-4))), '-r');

plot(afrij_hersteld_x(3:end-2), (afrij_hersteld_u(1:end-4).^2 -

afrij_hersteld_u(5:end).^2) ./ (3.6^2 * 2 * 1000 *

(afrij_hersteld_x(5:end) - afrij_hersteld_x(1:end-4))), '-b');

set(gca, 'XDir', 'reverse');

hold off;

ylabel('Versnelling (m/s^2)');

xlabel('Plaats (km)');

disp(' ');

disp('Laagste snelheid (km/h):');

disp(3.6*tijdsnelheid(1));

disp('Schatting snelheidsonderdrukkingsfactor:');

disp(3.6*tijdsnelheid(1)/109.133333);

disp('Locatie laagste snelheid (km):');

startplaats = doorsnedes(tijddetector_u(1,:) == tijdsnelheid(1));

% startplaats bepaalt de gegenereerde Fosim-codes voor de

afrijsimulatie

% kies een andere waarde om niet op punt met minimale snelheid te

beginnen

disp(startplaats);

disp('Codes voor Fosim:');

afrijeind = round(2000 + (startplaats - 70.80) * 1000);

code = ['sections: 2000 ', int2str(afrijeind), ' ',

int2str(afrijeind + 500)];

disp(code);

code = 'detector positions:';

for i = 2000:5:afrijeind

code = [code, ' ', int2str(i)];

end; clear i;

disp(code);

code = ['flow 0: 0|0', int2str(3600*tijdintensiteit(1))];

disp(code);

code = ['vehicle probabilities 0: ', num2str(n(1)), ' ',

num2str(n(2)), ' ', num2str(n(3)), ' ', num2str(n(4)), ' ',

num2str(n(5))];

disp(code);

clear code;

figure(7);

plot(vtg(1).time, vtg(1).acc, 'r', vtg(1).time(3:end-3),

vtg(1).acceleratie(3:end-3), 'b');

xlabel('Tijd (s)');

ylabel('Acceleratie (m/s^2)');

legend('Origineel', 'Verbeterd');

Functie: lussen.m

Dit script wordt aangeroepen door het hoofdscript om de lusdata te lezen.

function lussen(Heli_t, Heli_k, Heli_q, Heli_u)

Q = dlmread('intensiteiten.txt',' '); U = dlmread('snelheden.txt',' ');

Page 53: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 53 van 70

C =

[0.788402179960077,0.580998922039733,0.724386045258881,0.934290036326

839,0.984796381057232,0.988616703092799,0.981669656383553]; for i=1:size(U,1) for j=1:size(U,2) if U(i,j)>=0 u1 = min(floor(U(i,j)/20)*20,100); u2 = u1+20; c1 = C(u1/20+1); c2 = C(u2/20+1); U(i,j) = ((U(i,j)-u2)/(u1-u2)*c1+(U(i,j)-u1)/(u2-u1)*c2)

* U(i,j); clear u1; clear u2; clear c1; clear c2; end; end; clear j; end; clear i; t = Q(:,1)*60+Q(:,2); qs = Q(:,17)+Q(:,18); us = qs./(Q(:,17)./U(:,17)+Q(:,18)./U(:,18)); ks = qs./us; qv = Q(:,15)+Q(:,16); uv = qv./(Q(:,15)./U(:,15)+Q(:,16)./U(:,16)); kv = qv./uv; qn = Q(:,13)+Q(:,14); un = qn./(Q(:,13)./U(:,13)+Q(:,14)./U(:,14)); kn = qn./un;

Kg = cumsum(qv-qn)/60/4.17; kb = mean([mean(kv(1:30)),mean(kn(1:30))]); ke = mean([mean(kv(length(kv)-29:end)),mean(kn(length(kn)-29:end))]); kg = Kg+linspace(kb,ke-Kg(end),length(Kg))';

figure(4); w=7; subplot(3,w+1,1:w); plot(t,qs,'-m',t,qv,'-b',t,qn,'-g'); ylabel('Intensiteit (vtg/h)'); title('Lusdata'); tb=[0,300]; xb=[min(t),max(t)]; xt=xb(1):30:xb(2); xl=cell(1,length(xt)); for i=1:length(xt)

xl{i}=[int2str(floor(xt(i)/60)),':',int2str(mod(xt(i),60)/10),'0']; end; clear i; set(gca,'XLim',xb); set(gca,'XTick',xt); set(gca,'XTickLabel',xl); p=get(gca,'Position'); spp=(60*diff(xb))/p(3); qb=get(gca,'YLim'); subplot(3,w+1,w+1); plot(Heli_t,Heli_q,'-r'); p=get(gca,'Position'); Tb=[mean(tb)-spp*p(3)/2,mean(tb)+spp*p(3)/2]; set(gca,'XLim',Tb); set(gca,'XTick',tb);

Page 54: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 54 van 70

set(gca,'YLim',qb); title('Trajectoriedata'); subplot(3,w+1,w+2:2*w+1); plot(t,us,'-m',t,uv,'-b',0,0,'-r',t,un,'-g',0,0,'-k'); ylabel('Snelheid (km/h)'); legend('7,0 km bovenstrooms (per 60 s)','3,3 km bovenstrooms (per 60

s)','Bij het ongeval (per 30 s)','0,9 km benedenstrooms (per 60

s)','Gemiddelde over 4,17 km rondom ongeval','Location','SouthEast'); set(gca,'XLim',xb); set(gca,'XTick',xt); set(gca,'XTickLabel',xl); ub=get(gca,'YLim'); subplot(3,w+1,2*w+2); plot(Heli_t,Heli_u,'-r'); set(gca,'XLim',Tb); set(gca,'XTick',tb); set(gca,'YLim',ub); subplot(3,w+1,2*w+3:3*w+2); plot(t,ks,'-m',t,kv,'-b',t,kn,'-g',t,kg,'-k'); ylabel('Dichtheid (vtg/km)'); xlabel('Tijdstip'); set(gca,'XLim',xb); set(gca,'XTick',xt); set(gca,'XTickLabel',xl); kb=get(gca,'YLim'); subplot(3,w+1,3*w+3); plot(Heli_t,Heli_k,'-r'); set(gca,'XLim',Tb); set(gca,'XTick',tb); set(gca,'YLim',kb); xlabel('Tijd (s)');

figure(5); subplot(2,2,1); scatter([ks;kv;kn],[qs;qv;qn],25,'g','filled'); hold on; run '..\Capaciteitstests\analyse.m'; plot(Normaal_k,Normaal_q,'-b','Marker','*','MarkerSize',5); plot(Volgtijd_k,Volgtijd_q,'-m','Marker','*','MarkerSize',5); plot(Aangepast_k(1:Aangepast_gat),Aangepast_q(1:Aangepast_gat),'-

r',Aangepast_k(Aangepast_gat+1:end),Aangepast_q(Aangepast_gat+1:end),

'-r','Marker','*','MarkerSize',5); xlabel('Dichtheid (vtg/km)'); ylabel('Intensiteit (vtg/h)'); subplot(2,2,3); scatter([kv;kn],[uv;un],25,'g','filled'); hold on; plot(Normaal_k,Normaal_u,'-b','Marker','*','MarkerSize',5); plot(Volgtijd_k,Volgtijd_u,'-m','Marker','*','MarkerSize',5); plot(Aangepast_k(1:Aangepast_gat),Aangepast_u(1:Aangepast_gat),'-

r',Aangepast_k(Aangepast_gat+1:end),Aangepast_u(Aangepast_gat+1:end),

'-r','Marker','*','MarkerSize',5); xlabel('Dichtheid (vtg/km)'); ylabel('Snelheid (km/h)'); subplot(2,2,4); scatter([qv;qn],[uv;un],25,'g','filled'); hold on; plot(Normaal_q,Normaal_u,'-b','Marker','*','MarkerSize',5); plot(Volgtijd_q,Volgtijd_u,'-m','Marker','*','MarkerSize',5);

Page 55: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 55 van 70

plot(Aangepast_q(1:Aangepast_gat),Aangepast_u(1:Aangepast_gat),'-

r',Aangepast_q(Aangepast_gat+1:end),Aangepast_u(Aangepast_gat+1:end),

'-r','Marker','*','MarkerSize',5); xlabel('Intensiteit (vtg/h)'); ylabel('Snelheid (km/h)');

disp(' x (hm) q (vtg/h)') disp([-70, mean(qs); -33, mean(qv); 9, mean(qn)]);

fosimgenerator(qv);

Functie: fosimgenerator.m

Dit script zet lusdata om in een code voor de Fosim-verkeersgenerator die in

Fosim-bestanden kan worden geplaatst.

function fosimgenerator(q) code = 'flow 0:'; for i = 61:151 tijd = int2str(60*(i-61)); while length(tijd) < 6 tijd = [' ', tijd]; end; intensiteit = int2str(q(i)); while length(intensiteit) < 5 intensiteit = ['0', intensiteit]; end; code = [code, tijd, '|', intensiteit]; clear tijd; clear intensiteit; end; clear i; disp(code);

Kern: gorinchem.m

Dit script doet de (beperkte) analyse voor de data uit Gorinchem.

clc; clear; format shortG;

% PARAMETERS

doorsnedes = 160:5:380; tijden = 10:30:580; % gebruik dit bij algemene analyse %tijden = [0, 150, 390, 600]; % gebruik dit bij bepalen wenssnelheid

% BEREKENINGEN

load('gorinchem2lane1metleiders.mat');

Page 56: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 56 van 70

vtg_rechts = vtg; load('gorinchem2lane2metleiders.mat'); for i = 1:length(vtg) vtg(i).nr = vtg(i).nr + length(vtg_rechts); vtg(i).leader = vtg(i).leader + length(vtg_rechts); vtg(i).follower = vtg(i).follower + length(vtg_rechts); end; clear i; vtg = [vtg_rechts, vtg]; clear vtg_rechts;

for i = 1:length(vtg) vtg(i).strook = 3 - vtg(i).lane(1); end;

detector_v = cell(1,length(doorsnedes)); tijddetector_v = cell(length(tijden)-1,length(doorsnedes)); detector_passages = cell(1,length(doorsnedes)); tijddetector_n = zeros(length(tijden)-1,length(doorsnedes)); for i=1:length(vtg) positie = sum(doorsnedes < vtg(i).xpos(1)); tijd = sum(tijden < vtg(i).time(1)); for j=2:length(vtg(i).time) positie_nieuw = sum(doorsnedes < vtg(i).xpos(j)); while positie_nieuw > positie positie = positie + 1; v = mean(vtg(i).speed(j-1:j)); detector_v{positie} = [detector_v{positie}, v]; if tijd > 0 && tijd < length(tijden) tijddetector_v{tijd, positie} = [tijddetector_v{tijd,

positie}, v]; end; clear v; t = mean(vtg(i).time(j-1:j)); detector_passages{positie} = [detector_passages{positie},

t]; if tijd > 0 && tijd < length(tijden) tijddetector_n(tijd, positie) = tijddetector_n(tijd,

positie) + 1; end; clear t; end; clear positie_nieuw; tijd = sum(tijden < vtg(i).time(j)); end; clear j; clear positie; end; clear i; detector_u = zeros(1,length(doorsnedes)); detector_n = zeros(1,length(doorsnedes)); detector_q = zeros(1,length(doorsnedes)); for i=1:length(doorsnedes) detector_u(i) = 1 / mean(1 ./ detector_v{i}); detector_n(i) = length(detector_passages{i}); detector_q(i) = (detector_n(i) - 1) / (max(detector_passages{i})

- min(detector_passages{i})); end; clear i; intensiteit = mean(detector_q(detector_n == max(detector_n))); snelheid = min(detector_u); detector_k = intensiteit ./ detector_u; dichtheid = max(detector_k); tijddetector_u = zeros(length(tijden)-1,length(doorsnedes)); tijddetector_q = tijddetector_n / mean(diff(tijden));

Page 57: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 57 van 70

for i=1:length(tijden)-1 for j=1:length(doorsnedes) tijddetector_u(i,j) = 1 / mean(1 ./ tijddetector_v{i,j}); end; clear j; end; clear i; tijdintensiteit = mean(tijddetector_q(:,detector_n ==

max(detector_n)), 2); tijdsnelheid = min(tijddetector_u, [], 2); tijddetector_k = zeros(length(tijden)-1,length(doorsnedes)); for i=1:length(tijden)-1 for j=1:length(doorsnedes) tijddetector_k(i,j) = tijdintensiteit(i) /

tijddetector_u(i,j); end; clear j; end; clear i; tijddichtheid = max(tijddetector_k, [], 2);

% UITVOER

figure(11); strookkleuren = 'kr'; lijnen = zeros(1,2); for i = 1:length(vtg) lijnen(vtg(i).strook) = plot(vtg(i).xpos, vtg(i).time,

strookkleuren(vtg(i).strook)); hold on; end; clear i; clear strookkleuren; xlabel('Plaats (m)'); ylabel('Tijd (s)'); legend(lijnen, {'Linkerstrook', 'Rechterstrook'}, 'Location',

'Best'); clear lijnen; hold off;

figure(12); midtijden = tijden(1:length(tijden)-1)+diff(tijden)/2; [x, t] = meshgrid(doorsnedes, midtijden); u = linspace(min(min(tijddetector_u)), max(max(tijddetector_u)), 85); [C, h] = contourf(x, t, 3.6*tijddetector_u, 3.6*u); set(h, 'LineColor', 'none'); clear C; clear h; hold on; [C, h] = contour(x, t, 3.6*tijddetector_u, '-k'); clear x; clear t; clear u; set(h, 'ShowText', 'on'); clear C; clear h; tinten = hsv(255); colormap(tinten(1:85,:)); clear tinten; set(gca, 'YTick', midtijden); title('Snelheidscontouren (km/h)'); xlabel('Plaats (km)'); ylabel('Tijd (s)');

Page 58: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 58 van 70

hold off;

figure(13); plot(midtijden, tijdintensiteit*3600); xlabel('Tijd (s)'); ylabel('Intensiteit (vtg/h)');

figure(14); subplot(2,1,1); plot(doorsnedes, tijddetector_u(2,:)*3.6, 'k'); ylabel('Snelheid (km/h)'); subplot(2,1,2); plot(doorsnedes(3:end-2), (tijddetector_u(2,5:end).^2 -

tijddetector_u(2,1:end-4).^2) ./ (2 * (doorsnedes(5:end) -

doorsnedes(1:end-4))), 'k'); xlabel('Plaats (m)'); ylabel('Versnelling (m/s^2)');

disp(['Aantal voertuigen: ', int2str(tijddetector_n(2,:)), ' vtg']); disp(['Intensiteit: ', int2str(tijdintensiteit(2)*3600), ' vtg/h']); disp(['Snelheid: ', int2str(tijdsnelheid(2)*3.6), ' km/h']);

Hulpprogramma: route.m

Dit hulpprogramma is gebruikt om inzicht te krijgen in de verschillende

coördinatenstelsels van de dataset van Apeldoorn. Dit heeft onder meer

onderstaande ‘wereldkaart’ opgeleverd (de plaatsing van de luchtfoto is bij

benadering).

Page 59: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 59 van 70

Figuur 25: wereldkaart met assenstelsels (achtergrond: Google Maps)

clc; clear; format shortG;

% subplot(3,2,[1,2]) figure(4); subplot(1,1,1); laag = []; laagTijd = []; hoog = []; hoogTijd = [];

load('apeldoorn3lane1metleiders.mat'); for i=1:length(vtg) plot(vtg(i).xworld, vtg(i).yworld, '-blue'); laag = [laag, min(vtg(i).xworld)]; laagTijd = [laagTijd, max(vtg(i).time)]; hoog = [hoog, max(vtg(i).xworld)]; hoogTijd = [hoogTijd, min(vtg(i).time)]; hold on; plotxpos(vtg(i)); end; clear i;

load('apeldoorn3lane2metleiders.mat'); for i=1:length(vtg) plot(vtg(i).xworld, vtg(i).yworld, '-red'); laag = [laag, min(vtg(i).xworld)]; laagTijd = [laagTijd, max(vtg(i).time)]; hoog = [hoog, max(vtg(i).xworld)]; hoogTijd = [hoogTijd, min(vtg(i).time)]; hold on; plotxpos(vtg(i));

Page 60: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 60 van 70

end; clear i;

set(gca, 'XTick', 1820:20:2040); axis equal; title('Afgelegde routes'); hold off;

% subplot(3,2,3); % hist(laag, 15); % title('Eindpunten'); % subplot(3,2,4); % hist(hoog, 15); % title('Beginpunten'); % % subplot(3,2,5); % scatter(laag, laagTijd); % subplot(3,2,6); % scatter(hoog, hoogTijd);

Functie: plotxpos.m

Functie van het bovengenoemde hulpprogramma.

function plotxpos(vtg) doorsnedes = -224; positie = sum(doorsnedes > vtg.xpos(1)); for j=2:length(vtg.time) positie_nieuw = sum(doorsnedes > vtg.xpos(j)); while positie_nieuw < positie scatter(mean(vtg.xworld(j-1:j)), mean(vtg.yworld(j-1:j)),

'y'); positie = positie - 1; end; clear positie_nieuw; end; clear j; clear positie;

Simulatie fundamenteel diagram: analyse.php

Dit script leest de resulterende Fosim-bestanden van de bepaling van het

fundamenteel diagram en zet de resultaten om in Matlab-code.

<?php

ob_start();

$matlab = '';

foreach(array('Normaal' => 'b', 'Volgtijd' => 'm', 'Aangepast'

=> 'r') as $situatie => $kleur)

{

if($situatie != 'Aangepast')

{

$capaciteiten = $dichtheden = $snelheden = array();

foreach(glob($situatie.'/*.FSR') as $bestand)

{

$capaciteit = 0;

Page 61: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 61 van 70

foreach(file($bestand, FILE_IGNORE_NEW_LINES) as $nr => $reg

el)

if($nr > 1)

{

$velden = explode("\t", $regel);

switch($velden[2])

{

case 'q':

$intensiteit = $velden[3];

break;

case 'u':

$rijsnelheid = $velden[3];

break;

case 'k':

if($intensiteit > $capaciteit)

{

$capaciteit = $intensiteit;

$snelheid = $rijsnelheid;

$dichtheid = $velden[3];

}

}

}

$capaciteiten[] = $capaciteit;

$snelheden[] = $snelheid;

$dichtheden[] = $dichtheid;

}

$capaciteitResultaat = array_sum($capaciteiten) / count($capa

citeiten);

$dichtheidResultaat = array_sum($dichtheden) / count($dichthe

den);

$snelheidResultaat = array_sum($snelheden) / count($snelheden

);

}

$intensiteitenVrijResultaat = $dichthedenVrijResultaat = array

();

foreach(glob($situatie.'/Vrij/*.FSR') as $bestand)

{

$intensiteitenVrij = $dichthedenVrij = array();

foreach(file($bestand, FILE_IGNORE_NEW_LINES) as $nr => $rege

l)

if($nr > 1)

{

$velden = explode("\t", $regel);

if($velden[0] > 900)

switch($velden[2])

{

case 'q':

$intensiteitenVrij[] = $velden[3];

break;

case 'k':

$dichthedenVrij[] = $velden[3];

}

}

$intensiteitenVrijResultaat[] = array_sum($intensiteitenVrij)

/ count($intensiteitenVrij);

$dichthedenVrijResultaat[] = array_sum($dichthedenVrij) / cou

nt($dichthedenVrij);

}

$intensiteitenCongestieResultaat = $dichthedenCongestieResulta

at = array();

foreach(array_reverse(glob($situatie.'/File/*.FSR')) as $besta

Page 62: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 62 van 70

nd)

{

$intensiteitenCongestie = $dichthedenCongestie = array();

foreach(file($bestand, FILE_IGNORE_NEW_LINES) as $nr => $rege

l)

if($nr > 1)

{

$velden = explode("\t", $regel);

if($velden[0] > 900)

switch($velden[2])

{

case 'q':

$intensiteitenCongestie[] = $velden[3];

break;

case 'k':

$dichthedenCongestie[] = $velden[3];

}

}

$intensiteitenCongestieResultaat[] = array_sum($intensiteiten

Congestie) / count($intensiteitenCongestie);

$dichthedenCongestieResultaat[] = array_sum($dichthedenConges

tie) / count($dichthedenCongestie);

}

if($situatie != 'Aangepast')

echo "

", $situatie, "

Capaciteit: " . round($capaciteitResultaat) . " vtg/h

Dichtheid bij capaciteit: " . round($dichtheidResultaat) . " vt

g/km

Snelheid bij capaciteit: " . round($snelheidResultaat) . " km/h

";

$matlab .= '

'.$situatie.'_k=['.implode(',',$dichthedenVrijResultaat).','.((

$situatie=='Aangepast')?'':$dichtheidResultaat.',').implode(','

,$dichthedenCongestieResultaat).'];

'.$situatie.'_q=['.implode(',',$intensiteitenVrijResultaat).','

.(($situatie=='Aangepast')?'':$capaciteitResultaat.',').implode

(',',$intensiteitenCongestieResultaat).'];

'.$situatie.'_u='.$situatie.'_q./'.$situatie.'_k;';

if($situatie == 'Aangepast')

$matlab .= '

Aangepast_gat='.count($intensiteitenVrijResultaat).';';

}

file_put_contents('analyse.m', $matlab);

$resultaat = ob_get_contents();

ob_end_flush();

file_put_contents('analyse.txt', $resultaat);

exec('pause');

?>

Afrijsimulaties: analyse.php

Dit script leest de Fosim-resultaatbestanden van de afrijsimulaties en zet het

om in Matlab-code.

Page 63: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 63 van 70

<?php

ob_start();

$matlab = '';

foreach(array('Normaal', 'Volgtijd', 'Aangepast', 'Hersteld') a

s $situatie)

{

foreach(glob($situatie.'.fsr') as $bestand)

{

$plaatsen = $snelheden = $intensiteiten = array();

foreach(file($bestand, FILE_IGNORE_NEW_LINES) as $nr => $rege

l)

if($nr > 1)

{

$velden = explode("\t", $regel);

if($velden[0] == '43800')

switch($velden[2])

{

case 'u':

$plaatsen[] = 70.800 + 0.005 * ($velden[1] - 1);

$snelheden[] = $velden[3];

break;

case 'q':

$intensiteiten[] = $velden[3];

}

}

}

$matlab .= '

afrij_'.strtolower($situatie).'_x=['.implode(',',$plaatsen).'];

afrij_'.strtolower($situatie).'_u=['.implode(',',$snelheden).']

;';

echo "

", $situatie, "

Verwerkte intensiteit: " . round(array_sum($intensiteiten) / co

unt($intensiteiten)) . " vtg/h";

}

file_put_contents('analyse.m', $matlab);

$resultaat = ob_get_contents();

ob_end_flush();

file_put_contents('analyse.txt', $resultaat);

exec('pause');

?>

Page 64: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 64 van 70

Bijlage B: effecten van Fosim-bottlenecks

In deze bijlage zal wiskundig worden afgeleid wat in Fosim het effect van een

snelheidsonderdrukkingsgebied, een verkeerslichteninstallatie en een

tijdelijke blokkade op een individueel voertuig is. De mogelijke invloeden

van andere voertuigen, zoals een remmende voorligger, is hierin niet

meegenomen.

Alle benodigde informatie over hoe Fosim intern werkt, is gehaald uit de

Gebruikershandleiding van Dijker en Knoppers.

Snelheidsonderdrukkingsgebied

De volgende symbolen zullen worden gebruikt:

x lengte snelheidsonderdrukkingsgebied

snelheidsonderdrukkingsfactor

w

v wenssnelheid exclusief onderdrukking

0

v beginsnelheid

e

v eindsnelheid

g e m

v gemiddelde snelheid

a maximale volgdeceleratie ( 2

0 ,5 m / s )

t verblijftijd in snelheidsonderdrukkingsgebied

x̂ benodigde afstand om nieuwe wenssnelheid te bereiken

t̂ benodigde tijd om nieuwe wenssnelheid te bereiken

Hieronder volgt de afleiding, waarbij wordt aangenomen dat 0 w

v v :

0

0

ˆa l s m a x ,

ˆa l s e w

w

v a t t tv v a t v

v t t

(1)

0ˆ wv v

t

a

(2)

g e m

xt

v

(3)

Met (2) is de gemiddelde snelheid als volgt te schrijven:

Page 65: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 65 van 70

1

0 2

1 1

0 02 2

01

0 2

2

00 0 0

0

ˆa l s

ˆ ˆ ˆ ˆ ˆ

ˆa l s

a l s

a l s

2 2

g e mw w

w w

w

ww w w

w w w

v a t t t

v v a t t v t t v a t v t

v v t t

t t

v vv a t t

a

v vv v v v v vv v v v t

a t a t a

Door (3) in te vullen kan de tijd worden geëlimineerd:

2 1

0 2

2

0

2

0 0

2

0

ˆ0 a l s

ˆ1 a l s

2

2ˆa l s

2

ˆa l s

1

2

g e m g e m

w

g e m w

g e mw

w

v v v a x x x

v vv v x x

a x

v v a xx x

v vx x

v v

a x

Door (3) nogmaals te gebruiken wordt de verblijftijd in het

snelheidsonderdrukkingsgebied gevonden:

2

0 0

2

0

2ˆa l s

2

1ˆa l s

2

w

w

xx x

v v a x

t

v vx x x

v a

Nu kan (1) worden ingevuld:

0

2

0 0

2ˆa l s

2

ˆa l s

e

w

a xv x x

v v v a x

v x x

(4)

Voor x̂ geldt:

0

0

0 0

ˆ2ˆ

ˆ

2

w

w

w w

v v xt

a v v

v v v vx

a

(5)

Page 66: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 66 van 70

Hiermee is de eindconclusie over de eindsnelheid en het snelheidsverlies,

waaraan nu ook de situatie 0 w

v v is toegevoegd:

0 0

0 02

0 0

0 0

0

0 0

0 0

02

0 0

00 0

0 0

0

2a l s

22

a l s

2

a l s

2a l s

22

a l s

2

0 a l s

w w

w

ew w

w w

w

w w

w

ew w

w w

w

v v v va xv v v x

av v a x

vv v v v

v v v x

a

v v v

v v v va xv v x

av v a x

v vv v v v

v v v v x

a

v v

Verkeerslichten

De volgende symbolen zullen worden gebruikt:

t niet-groentijd per cyclus

x lengte invloedsgebied

invloedsgebied omgerekend naar tijd met beginsnelheid (1 0 s )

0

v beginsnelheid

e

v eindsnelheid

a maximale deceleratie bij verkeerslichten

a gekozen deceleratie

x̂ benodigde stopafstand

t̂ benodigde stoptijd bij gekozen deceleratie

Fosim-bestuurders kijken pas naar een verkeerslicht als ze binnen 1 0 s

stroomopwaarts van het verkeerslicht zijn. Dit is niet herkalibreerbaar. Voor

de lengte van dit invloedsgebied geldt:

0

x v (6)

Als een andere lichtkleur dan groen wordt waargenomen, moet het voertuig

kiezen om wel of niet te remmen. Door in (5) en (2) als nieuwe wenssnelheid

0w

v in te vullen, zijn de stopafstand en de stoptijd te vinden:

2

0

0

ˆ

2

ˆ

vx

a

vt

a

(7)

Page 67: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 67 van 70

Als de benodigde stopafstand niet beschikbaar is, remt het voertuig in het

geheel niet. Als dat wel het geval is, maar het verkeerslicht tijdens het

remmen weer op groen springt, remt het voertuig onvolledig. Merk op dat er

in Fosim dus geen verschil zit tussen geel en rood licht, ook al moet de

geeltijd wel apart worden ingevoerd. Deze opvallende constatering is

experimenteel geverifieerd. Daarnaast is het noemenswaardig dat elk voertuig

elke kleurverandering met een niet-herkalibreerbare vertraging van 1 s

waarneemt; omdat dit altijd hetzelfde is, heeft dit geen invloed op de

doorstroming.

Ter vereenvoudiging ten opzichte van Fosim wordt hier aangenomen dat de

beslissing om wel of niet te stoppen aan het begin van het invloedsgebied

wordt genomen. Als het voertuig besluit te remmen, is dit de gekozen

deceleratie:

2

0 0

2 2

v va

x

(8)

Hieruit volgt voor de eindsnelheid:

0

0

0

0

ˆm a x , 0 a l s

ˆa l s

ˆˆ0 a l s

ˆˆa l s

ˆa l s

e

v a t x xv

v x x

x x t t

v a t x x t t

v x x

Uit (7) en (8) volgt bovendien:

ˆ 2t (9)

Door (6), (7), (8) en (9) in te vullen, ontstaan de volgende uitdrukkingen voor

eindsnelheid en snelheidsverschil:

Page 68: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 68 van 70

0

0 0

0

0

0

0

0

0

0

0

0

0 0

0

0 a l s 2

2

a l s 2

2 2

a l s

2

0 a l s 2 2

1 a l s 2 2

2

1 a l s 2

1 a l s 2 2

a l s 2 2

2

0 a l s 2

e

e

vt

a

v t vv v t

a

vv

a

vt

a

vtv t

a

v

a

vt

a

vtv v v t

a

v

a

Hierin is de groentijd als parameter beschikbaar om het aantal voertuigen dat

moet remmen te laten variëren. Merk op dat voertuigen ook kunnen moeten

remmen omdat hun voorligger voor het verkeerslicht remt.

Bij het beperken van de capaciteit, is het niet wenselijk dat voertuigen

volledig tot stilstand komen en ook niet dat alle voertuigen hun volledige

snelheid behouden. Hiervoor moeten zowel de beginsnelheid gedeeld door de

maximale deceleratie en de niet-groentijd kleiner zijn dan 2 2 0 s . De

eindsnelheid is dan 0

/ 2v t . De maximale deceleratie mag dus niet te gering

zijn, want dan wordt het verkeerslicht bij hoge snelheden genegeerd.

Tijdelijke blokkade

De tijdelijke blokkade (over alle stroken) werkt in principe hetzelfde als een

eenmalig rood verkeerslicht. Er zijn wel enkele variabelen veranderd:

t tijd die de blokkade blijft staan

a maximale deceleratie (in nood)

De rest van de variabelen en alle formules blijven hetzelfde. Het verschil is

dus dat het verkeer een stuk harder remt.

Page 69: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 69 van 70

Bijlage C: macroscopische acceleratie

Door in een doorsnede de gemeten snelheden te aggregeren, ontstaat een

macroscopische snelheid. In deze bijlage zal een bijbehorende

macroscopische acceleratie worden geïntroduceerd. Dit begrip kan toegepast

worden als alternatieve visualisatiemogelijkheid van de gegevens van kort op

elkaar geplaatste virtuele lussen onder de trajectoriedata en in Fosim.

De macroscopische acceleratie wordt gedefinieerd als de constante

versnelling u die een voertuig in een wegvak met lengte x nodig heeft om

zijn snelheid te veranderen van de macroscopische snelheid 1

u aan het begin

in de macroscopische snelheid 2

u aan het eind.

Het eerste geval uit vergelijking (4) van de vorige bijlage, waarin de

eindsnelheid nog niet bereikt is, biedt een handvat om de macroscopische

acceleratie te berekenen. Hiermee kan vanuit de macroscopische eindsnelheid

2u met de macroscopische acceleratie u op de plaats van a de

macroscopische beginsnelheid 1

u worden teruggerekend:

1 2

2

2 2

2

2

u xu u

u u u x

Andersom kan het uiteraard ook, maar dan moet u als a worden gekozen.

Dit kan worden omgeschreven naar een dimensieloze vorm met twee

grootheden:

2

1 2

2

2

2

1 2

2

2

2

2

21 1

2

1

21 1

u x

uu u

u x

u

u x

u u

u u x

u

Maple vindt voor deze vergelijking de volgende oplossing:

2

1

2

2 2

21

uu x

u u

Hieruit volgt direct de macroscopische acceleratie:

Page 70: Simuleren van een kijkfile · Jeroen van der Gun . Jeroen van der Gun 4 van 70 Samenvatting Het microscopische simulatiemodel Fosim kent momenteel niet direct een mogelijkheid om

Jeroen van der Gun 70 van 70

2 212 2 2

22 1 2 1

2

1

2 2

uu u u uu

x u x x

In de limiet 0x wordt gevonden:

2 21 1

2 2d u d ud u d u d u

u

d t d x d u d x d x

In het geval van eindige differentie, kan met behulp van centrale differentie

de volgende formule worden toegepast:

2 2

21 1

4

n n

n

u uu O x

x

Om de voortplanting van de meetfout in de snelheid te reduceren, kan ook een

grotere stapgrootte worden genomen. Hierdoor neemt wel de afbreekfout toe.

De breuk wordt dan:

2 2

2 2

8

n nu u

x