Planningsmodel scheepvaartafhandeling bij de Noordersluis in IJmuiden `Ontwikkelen van een standaard methode voor het genereren van een sluisplanning
Eindrapport Auteur: Meike van Haastert Datum: januari 2003
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Voorwoord Dit rapport beschrijft het onderzoek, dat is verricht in het kader van het afstudeerproject aan de Technische Universiteit Delft, Faculteit Civiele Techniek, sectie Waterbouwkunde. Het onderzoek is uitgevoerd voor de Nautische Sector van het Gemeentelijk Havenbedrijf Amsterdam (GHA) onder begeleiding van de heer E. Koster. Er is een model ontwikkeld, dat volgens en standaard methode een planning genereert voor de zeesluis bij IJmuiden. In dit rapport wordt uitvoerig beschreven waarom het model is gemaakt, hoe het model tot stand is gekomen en welke resultaten met het model zijn behaald. Mijn dank gaat uit naar mijn afstudeercommissie en alle personen, die op één of andere wijze een bijdrage hebben geleverd aan de voltooiing van dit afstudeeronderzoek. De afstudeercommissie bestaat uit de volgende personen: -
Prof. Ir H. Ligteringen (TU Delft) Ir R. Groenveld (TU Delft) Ir T.H.W. Horstmeier (TU Delft) E. Koster (GHA)
Meike van Haastert, Amsterdam, januari 2003
i
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
ii
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Samenvatting Het Noordzeekanaal-gebied is voor een aantal havengebonden sectoren een belangrijk havengebied binnen Europa. In het gebied liggen de havens van IJmuiden, Beverwijk, Zaanstad en Amsterdam. Al het scheepvaartverkeer met eindbestemming Beverwijk, Zaanstad of Amsterdam, moet het sluizencomplex in IJmuiden passeren. Het complex bestaat uit vier sluizen, waarvan de Noordersluis de grootste is. Voor de bereikbaarheid van het gebied is de afhandeling van de scheepvaart door deze sluizen een belangrijk aspect. In praktijk blijkt een groot aantal afhankelijkheden te bestaan tussen de verschillende schepen onderling. Bovendien dient men bij de afhandeling van de scheepvaart rekening te houden met een aantal omgevingsvariabelen, zoals het getij en de weersomstandigheden. Door onvolledig inzicht in de logistieke processen rond het sluizencomplex is het efficiënt inzetten van de sluizen geen eenvoudige taak. Bovendien verloopt de communicatie tussen betrokken partijen soms slecht en is de informatievoorziening gebrekkig. Als gevolg van deze tekortkomingen ontstaan vaak onnodig lange wachttijden. Dit wachten kost rederijen veel geld. Met name voor de grotere schepen die alleen door de Noordersluis geschut kunnen worden, kunnen deze kosten hoog oplopen. Het Gemeentelijk Havenbedrijf Amsterdam (GHA) heeft daarom een plan ontwikkeld onder de naam `Ships´ Timeframe Allocation Amsterdam´ (STAA). Het plan is gebaseerd op vernieuwingen op het gebied van huidige regels en procedures en richt zich op de Noordersluis. Het doel van STAA is om met bestaande middelen en activiteiten de bereikbaarheid van het gebied voor Noordersluis-gebonden schepen te vergroten. In dit afstudeerwerk is een model ontwikkeld dat volgens een standaard methode een planning voor de Noordersluis genereert. Het model is ontwikkeld in het kader van het STAA-project. Het huidig aanbod van schepen voor de Noordersluis wordt in een tijdsplanning verwerkt, waarbij wordt gestreefd naar een optimaal gebruik van deze sluis. Het model moet fungeren als ondersteunend systeem voor de menselijke beslisser. Met behulp van het model kan men in praktijk de hinder voor Noordersluis-gebonden schepen terugdringen, door het tijdig signaleren van knelpunten en het efficiënter inzetten van de sluis. Gezien de complexiteit van het systeem is gekozen voor een iteratieve aanpak van het planningsproces. Hiervoor is onderscheid gemaakt tussen: -
-
Het informatiesysteem: Hierin wordt onder andere de invoerstroom (aanmeldingen) gegenereerd en worden alle benodigde gegevens voor het planningsproces verzameld en geordend. De planningsmotor in dit systeem, genereert aan de hand van deze gegevens een planning voor een willekeurig dag in de simulatieperiode. Om inzicht te krijgen in het gedrag van het systeem, maakt hij hierbij gebruik van het verkeerssimulatiemodel; Het verkeerssimulatiemodel: Hierin wordt de verkeerssituatie nagebootst.
De planningsmotor kan voor een willekeurige schutvolgorde de verkeerssituatie nabootsen met behulp van het verkeerssimulatiemodel. Op die manier kan op experimentele wijze naar de meest optimale schutvolgorde worden gezocht. Voor een optimaal gebruik van de sluis en een vermindering van de hinder voor de scheepvaart is een aantal standaardregels opgesteld. Deze regels worden bij de aansturing van de sluis gevolgd. Bij het opstellen van deze regels is onder andere onderscheid gemaakt naar de urgentie van schepen. In deze zogenaamde `prioriteitsregels´ is vastgelegd, in welke situaties bepaalde schepen voorrang krijgen.
iii
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
De prioriteitsregels hebben betrekking op de volgende schepen: -
Tijgebonden schepen: Deze schepen zijn voor het bevaren van het gebied aan westzijde van de sluis afhankelijk van het getij. Zij kunnen slechts in bepaalde perioden de sluis binnen varen. Eén zo´n periode wordt gedefinieerd als een tijpoort. Aan deze schepen wordt voorrang verleend, indien zij anders een tijpoort moeten wachten.
-
Lijndiensten: Onder de lijndiensten vallen de passagiersschepen en de containerschepen. Zij varen volgens een strak schema. Om die rede wordt verondersteld, dat zij meer zullen leiden onder een vertraging. Zij krijgen voorrang indien hun wachttijd anders oploopt tot meer dan 45 minuten.
Voor implementatie van het model is de programmeertaal Prosim gebruikt. De planningsmotor en het verkeerssimulatiemodel zijn in aparte programma’s uitgevoerd. Het verkeerssimulatieprogramma wordt gerund vanuit het hoofdprogramma, waarin de planningsmotor actief is. Met het programma zijn een aantal experimenten uitgevoerd om de gevoeligheid van het systeem ten aanzien van de gekozen regels te toetsen. De uitkomsten van runs met het simulatieprogramma met de prioriteitsregels zijn vergeleken met de resultaten uit runs met de zogenaamde ‘nulvariant’, waarbij deze regels niet gelden. Alle schepen in de nulvariant worden op volgorde van aankomst- en vertrektijd ingepland. Bij de vergelijking van de resultaten uit beide experimenten werd slechts een kleine verbetering waargenomen voor het totaal aanbod ten opzichte van de nulvariant. Dit is terug te voeren op het relatief kleine percentage schepen, dat door de prioriteitsregels voordelen ondervindt. Uit nadere bestudering van de resultaten, waarbij de wachttijden van tijgebonden schepen, lijndiensten en al het overige scheepvaartverkeer zijn vergeleken, blijken de voordelen voor de zogenaamde ‘prioriteitschepen’ echter groot zijn. Algemeen kan worden geconcludeerd dat met behulp van Prosim een simulatiemodel is ontwikkeld, dat in staat is een sluisplanning te genereren. Door de beperkte beschikbare tijd voor het onderzoek is met name het verkeerssimulatiemodel onvolledig. Voordat het model in praktijk gebruikt zou kunnen worden, dient men het model op een aantal punten uit te breiden.
iv
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Inhoudsopgave VOORWOORD................................................................................................................................................ I SAMENVATTING.......................................................................................................................................... III 1. INLEIDING .............................................................................................................................................. 1 1.1. 1.2.
ALGEMEEN ............................................................................................................................ 1 AANPAK................................................................................................................................. 2
2. SYSTEEMANALYSE ............................................................................................................................. 5 2.1. 2.2. 2.3.
OVERZICHT VAN HET GEBIED .................................................................................................... 5 BETROKKEN PARTIJEN EN INVLOEDSFACTOREN .......................................................................... 6 BESCHRIJVING BELANGRIJKSTE PROCESSEN ............................................................................ 11
3. PROBLEEMBESCHRIJVING EN DOELSTELLING..........................................................................13 3.1. PROBLEEMSCHETS ............................................................................................................... 13 3.2. AFBAKENING VAN HET ONDERZOEKSGEBIED ............................................................................ 13 3.3. DOELSTELLING VAN HET PROJECT .......................................................................................... 13 3.4. PROGRAMMA VAN EISEN ........................................................................................................ 14 3.4.1. De planningshorizon ................................................................................................................................14 3.4.2. Doelfunctie bij het opstellen van de planning.............................................................................................14 3.4.3. Toewijzingsstrategie voor de sluis ............................................................................................................15 3.4.4. Gewenste uitvoer.....................................................................................................................................16 3.4.5. Aannamen en uitgangspunten..................................................................................................................16
4. MODELVORMING................................................................................................................................19 4.1. FUNCTIEANALYSE VAN HET MODEL.......................................................................................... 19 4.1.1. Eerste aggregatieniveau: het overkoepelde proces ...................................................................................20 4.1.2. Tweede aggregatieniveau: scheiding tussen het informatiesysteem en het verkeerssimulatiemodel ...........21 4.1.3. Derde aggregatieniveau: nevenfuncties van het informatiesysteem en het verkeerssimulatiemodel............23 4.2. ALGEMENE BESCHRIJVING VAN HET PLANNINGSPROCES ............................................................ 25 4.3. COMMUNICATIE TUSSEN BEIDE SYSTEMEN ............................................................................... 29 4.3.1. Informatiestroom naar het verkeerssimulatiemodel ...................................................................................29 4.3.2. Informatiestroom naar het informatiesysteem............................................................................................29 4.4. SYSTEEM VARIABELEN .......................................................................................................... 30 4.5. MODELINFRASTRUCTUUR ...................................................................................................... 30 4.5.1. De vaarwegen .........................................................................................................................................32 4.5.2. De Noordersluis.......................................................................................................................................33 4.6. SCHEEPVAART BINNEN HET MODEL ......................................................................................... 34 4.6.1. Typen ......................................................................................................................................................35 4.6.2. Dimensies................................................................................................................................................35 4.6.3. Bestemming en vaarschema ....................................................................................................................37 4.6.4. Prioriteit ...................................................................................................................................................39 4.6.5. Tijpoort van het schip...............................................................................................................................39 4.6.6. Benodigd aantal sleepboten .....................................................................................................................39 4.7. VERTALING NAAR PROGRAMMA .............................................................................................. 40
5. BESCHRIJVEND MODEL VAN HET INFORMATIESYSTEEM........................................................41 5.1. BESCHRIJVING VAN DE COMPONENTEN.................................................................................... 41 5.2. PROCESBESCHRIJVING VAN DE LEVENDE COMPONENTEN .......................................................... 41 5.2.1. Proces van main ......................................................................................................................................42 5.2.2. Proces van de invoergenerator.................................................................................................................42 5.2.3. Proces van de getijgenerator....................................................................................................................43 5.2.4. Proces van de planningsmotor .................................................................................................................43
v
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
6. BESCHRIJVEND MODEL VAN DE VERKEERSSIMULATIE...........................................................49 6.1. BESCHRIJVING VAN DE COMPONENTEN.................................................................................... 49 6.2. PROCESBESCHRIJVING VAN DE LEVENDE COMPONENTEN .......................................................... 50 6.2.1. Proces van het schip................................................................................................................................50 6.2.2. Proces van het lichterschip.......................................................................................................................55 6.2.3. Proces van de scheduler..........................................................................................................................55 6.2.4. Proces van de verkeersleider ...................................................................................................................57 6.2.5. Proces van de sluismeester......................................................................................................................58 6.2.6. Proces van de Wijsmuller.........................................................................................................................59 6.2.7. Proces van de sleepboot..........................................................................................................................60
7. VERIFICATIE VAN HET MODEL........................................................................................................63 7.1. 7.2. 7.3. 7.4.
CONTROLE VAN DE SYNTAX AAN DE HAND VAN HET BESCHRIJVENDE MODEL ................................ 63 SIMULATIERUNS ALS CONTROLE ............................................................................................. 66 CONTROLE VIA HET BEELDSCHERM ......................................................................................... 66 CONTROLEREN MET BEHULP VAN HANDBEREKENINGEN ............................................................. 69
8. GEVOELIGHEIDSANALYSE ..............................................................................................................71 8.1. OPZET VAN DE EXPERIMENTEN ............................................................................................... 71 8.1.1. Beïnvloeden toewijzingsstrategie..............................................................................................................71 8.1.2. Runlengte................................................................................................................................................71 8.1.3. Invoer ......................................................................................................................................................72 8.1.4. Prestatie-indicatoren ................................................................................................................................72 8.2. RESULTATEN ....................................................................................................................... 73 8.2.1. Wachttijden totaal aanbod........................................................................................................................74 8.2.2. Wachttijden ontheffingsschepen ...............................................................................................................75 8.2.3. Wachttijden stroomgevoelige schepen......................................................................................................77 8.2.4. Wachttijden lijndiensten............................................................................................................................79 8.2.5. Wachttijden `overig scheepvaartverkeer´ ..................................................................................................80 8.3. INTERPRETATIE WAARNEMINGEN ............................................................................................ 81
9. CONCLUSIES EN AANBEVELINGEN ...............................................................................................83 9.1. CONCLUSIES ........................................................................................................................ 83 9.1.1. Conclusies ten aanzien van het verkeerssimulatiemodel ...........................................................................83 9.1.2. Conclusies met betrekking tot de gebruikte planningsmethode ..................................................................84 9.1.3. Conclusies met betrekking tot de gekozen toewijzingsstrategie .................................................................84 9.2. AANBEVELINGEN .................................................................................................................. 85
BEGRIPPENLIJST.......................................................................................................................................87 LIJST MET AFKORTINGEN .......................................................................................................................91 LITERATUURLIJST.....................................................................................................................................92 BIJLAGEN I..................................................................................................................................................95 BIJLAGE II ...................................................................................................................................................99 BIJLAGE III ................................................................................................................................................105 BIJLAGE IV................................................................................................................................................109 BIJLAGE V.................................................................................................................................................113 BIJLAGE VI................................................................................................................................................117 BIJLAGE VII...............................................................................................................................................123 vi
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
BIJLAGE VIII..............................................................................................................................................133 BIJLAGE IX................................................................................................................................................165
vii
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
viii
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
1. Inleiding
1.1.
Algemeen
De afgelopen jaren heeft het Noordzeekanaal-gebied zijn positie als belangrijk havengebied in Europa weten te versterken. De goederenoverslag in de Zeehavens Amsterdam, bestaande uit de havens van IJmuiden, Beverwijk, Zaanstad en Amsterdam, blijft toenemen (voor een overzicht van het gebied, zie figuur 2.1 op bladzijde 5). De bereikbaarheid van het gebied voor de scheepvaart speelt hierin een belangrijke rol. De huidige groei veroorzaakt een steeds groter druk op het sluizencomplex in IJmuiden. Het complex bestaat uit vier sluizen: de Noordersluis, de Middensluis, de Zuidersluis en de Kleine sluis (zie figuur 1.1). In het verleden konden de grote, minder grote en kleine schepen over de beschikbare sluizen worden verdeeld. De toenemende schaalvergroting in de scheepvaart betekent dat men meer op de Noordersluis is aangewezen. Op bepaalde delen van de dag overtreft het aanbod van schepen zelfs de capaciteit van de sluis en kunnen er lange wachttijden ontstaan voor de scheepvaart. Daarnaast kan de capaciteit van de benodigde diensten (loodsen en sleepboten) een flessenhals vormen op piekmomenten, waardoor schepen moeten wachten. Het wachten kost rederijen veel geld. Het plannen van de inzet van al deze middelen (de sluizen en de benodigde diensten) speelt hierbij een belangrijke rol.
Havenmond
Noordersluis
Noordersluis
Figuur 1.1: Overzicht van het sluizencomplex te IJmuiden
Hoofdstuk 1: Inleiding
1
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Het Gemeentelijk Havenbedrijf Amsterdam (GHA) is verantwoordelijk voor deze planning. De planning wordt ingevuld aan de hand van redelijk betrouwbare aankomst- en vertrektijden, die vaak slechts enkele uren van tevoren worden doorgegeven. De doelstelling bij het opstellen van deze planning is het minimaliseren van de wachttijden voor het scheepvaartverkeer, dat het sluizencomplex wil passeren. Door het groot aantal afhankelijkheden tussen schepen onderling, is het efficiënt inzetten van middelen hierbij geen eenvoudige taak. Uit de praktijk is gebleken dat door gebrek aan inzicht in al deze afhankelijkheden vaak problemen ontstaan, waardoor de planning verstoord wordt en er extra vertragingen optreden. Bovendien treden er door gebrek aan communicatie tussen betrokken partijen (GHA, loodswezen en Wijsmuller) vaak misverstanden op, die eveneens weer kunnen leiden tot vertragingen. Voor optimalisatie van de huidige situatie met bestaande infrastructuur en beschikbare diensten zijn overwegingen, in de zin van alternatieve beleidsstrategieën en planningsmethoden, denkbaar. Het GHA heeft op dit gebied een plan ontwikkeld voor een nieuw managementconcept voor het Noordzeekanaal-gebied (NZK-gebied), onder de naam `Ships´ Timeframe Allocation Amsterdam´ (STAA). Het concept richt zich op de Noordersluis. (Meer informatie over STAA is te vinden in bijlage I.) Het doel van STAA is om tot een standaard planmethode te komen voor de inzet van benodigde middelen en diensten. Hiervoor wordt een STAA-software-systeem ontwikkeld. Het systeem zal een ondersteunende rol krijgen in het besluitvormingsproces van de STAA-coördinator. Deze persoon zal in de toekomst een beslissende rol hebben en dient de betrokken partijen te kunnen aansturen. In dit afstudeerwerk wordt in het kader van het STAA-project een met behulp van een simulatiemodel een standaard planmethode ontwikkeld voor de scheepvaartafhandeling bij de Noordersluis. Dit simulatiemodel zal voor een willekeurige dag een tijdsschema genereren, waarin het totale aanbod van schepen aan beide zijden van de sluis wordt verwerkt.
1.2.
Aanpak
Het NZK-gebied kan worden beschouwd als een complex logistiek systeem, dat bestaat uit veel gelijktijdig verlopende processen, die elkaar onderling beïnvloeden. Alvorens het probleem juist kan worden geformuleerd en de doelstelling van het onderzoek kan worden vastgesteld, dient inzicht te worden verkregen in deze processen en de actoren die binnen het systeem een rol spelen; de systeemanalyse is dan ook de eerste stap in het onderzoek. Bij iedere fase in het onderzoeksproces vindt terugkoppeling plaats naar eerder uitgevoerde fasen. Bij deze systeemanalyse, die wordt beschreven in hoofdstuk 2 wordt met name gelet op de invloed die alle aspecten uit het systeem uitoefenen op het planningsproces. Als duidelijk is waaruit het systeem bestaat en wat er binnen het systeem gebeurt, wordt in hoofdstuk 3 het probleem geformuleerd. Aan de hand van deze probleemschets wordt het onderzoeksgebied vastgesteld, welke aangeeft wat wel en niet wordt meegenomen in het onderzoek. Gezien de beperkte beschikbare tijd zal het onderzoeksgebied slechts bestaan uit een beperkt deel van het totale systeem. Dit zal ongetwijfeld gevolgen hebben voor de validiteit van het model. Bij de evaluatie van het onderzoek moet hiermee rekening worden gehouden. Aan de hand van de probleemformulering wordt de doelstelling voor het onderzoek bepaald. Om een bruikbaar simulatiemodel te ontwikkelen is het van belang om van tevoren precies aan te geven wat van het programma verwacht wordt, welke doelfunctie het planningsmodel heeft en op welke wijze vervolgens een strategie kan worden bepaald voor de indeling van schepen in deze planning. Dit wordt beschreven in het programma van eisen voor het model. Bij de modelvorming zijn bepaalde aspecten binnen het onderzoeksgebied zodanig vereenvoudigd, dat hierdoor het systeem overzichtelijker wordt. De aannames met betrekking tot deze vereenvoudigingen worden tevens beschreven in het programma van eisen. Vervolgens kan worden overgegaan tot het modelleren van het systeem. Het ontwikkelen van een model kan worden beschouwd als het vormen van schematisaties en procedures, die ervoor zorgen dat de in het systeem belangrijke componenten en processen, in het model worden opgenomen. Hiertoe wordt duidelijk onderscheid gemaakt tussen een
Hoofdstuk 1: Inleiding
2
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
verkeerssimulatiemodel, waarin al deze reële processen zich afspelen en een informatiesysteem, dat op zodanige wijze gegevens oproept en verwerkt, dat hieruit een planning kan worden gemaakt. Het informatiesysteem maakt hierbij gebruik van het verkeerssimulatiemodel om inzicht te verwerven in het gedrag van het systeem. De eerste opzet van het model, waarin tevens deze functiescheiding aan de orde komt, wordt behandeld in hoofdstuk 4. In het hoofdstuk wordt een globale modelbeschrijving gegeven, waarin het met name gaat om de structuur van het model. Een complete beschrijving van de componenten en processen van zowel het informatiesysteem en het verkeerssimulatiemodel, volgt in achtereenvolgens hoofdstuk 5 en 6. Aan de hand van deze beschrijving wordt het model vertaald naar een programma. De gebruikte taal voor de implementatie van het model is Prosim. Deze taal leent zich er goed voor om vele gelijktijdige processen te vertalen naar een programma. Gedurende de programmeerfase en na afloop van deze fase vindt verificatie van het simulatiemodel plaats. De verificatie is op te vatten als het systematisch analyseren van het programma, om alle programmeerfouten te elimineren. Verificatie omvat tevens het proces waarin wordt nagegaan of het geïmplementeerde model de letterlijke vertaling is van het beschrijvende model. De verificatie van het model wordt beschreven in hoofdstuk 7. Als alle fouten uit het model zijn verwijderd, kunnen de experimenten met het model worden uitgevoerd. Het uiteindelijke doel van de experimenten is het evalueren van de gehanteerde strategie met betrekking tot de werking van het systeem. Dit gebeurt aan de hand van een gevoeligheidsanalyse, die in hoofdstuk 8 wordt behandeld. Door bepaalde variabelen van het model te wijzigen, kan de invloed van een bepaalde systeemvariabele op het gedrag van het systeem, worden geanalyseerd. Ten slotte worden in hoofdstuk 9 de conclusies en aanbevelingen van het onderzoek behandeld. Hierbij wordt nagegaan of het beoogde doel van het onderzoek is bereikt en welke aanbevelingen kunnen worden gedaan voor een eventuele vervolgstudie
Hoofdstuk 1: Inleiding
3
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
.
Hoofdstuk 1: Inleiding
4
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
2. Systeemanalyse In dit hoofdstuk wordt allereerst een beschrijving gegeven van het systeem en de belangrijkste processen, die zich afspelen in de scheepvaartafhandeling bij de Noordersluis. Voor het onderkennen van het probleem en het definiëren van de doelstelling voor dit afstudeeronderzoek is het noodzakelijk inzicht te hebben in deze processen. Allereerst wordt in paragraaf 2.1 een overzicht gegeven van het gebied. Paragraaf 2.2 geeft vervolgens een beschrijving van alle partijen en factoren, die een rol spelen bij het opstellen van een planning. In paragraaf 2.3 worden de belangrijkste processen binnen het systeem beschreven, vanaf de aanmelding van het schip tot het moment dat het schip de haven weer verlaat.
2.1.
Overzicht van het gebied
Het Noordzeekanaal-gebied strekt zich uit van IJmuiden tot aan Amsterdam. Het gebied bestaat uit verschillende havens (zie figuur 2.1). Centraal in het gebied ligt het Noordzeekanaal (NZK), dat dient als verbinding tussen de havens en de Noordzee. Schepen kunnen het NZK bereiken via het sluizencomplex bij IJmuiden.
IJmuiden
Noordzeekanaal
Amsterdam
Figuur 2.1: Overzicht van het gebied
Buiten het sluizencomplex, aan de zeezijde, ligt het havengebied van IJmuiden en direct achter de sluis liggen de havens van Beverwijk. Op circa 12 kilometer afstand van de sluizen liggen de eerste havens van het Amsterdams Noordzeekanaalgebied. Het gebied strekt zicht uit over bijna 12 kilometer en staat in open verbinding met het IJ.
Hoofdstuk 2: Systeemanalyse
5
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
2.2.
Betrokken partijen en invloedsfactoren
Voor de weergave van alle partijen, die betrokken zijn bij de scheepvaartafhandeling bij de Noordersluis en de factoren, die de planning op eniger wijze kunnen beïnvloeden is de mindmap-methode gehanteerd (zie figuur 2.2). De mindmap dient als een soort geheugensteun voor de rest van het onderzoek. De sluisplanning staat centraal in de figuur weergegeven. Erom heen staan de hoofdaandachtspunten, die voor de sluisplanning van belang zijn. De hoofdaandachtspunten zijn: -
Scheepsaanbod; Hydrografische factoren; Additionele diensten; Het GHA; Meteorologische omstandigheden; Ligplaatsplanning; Infrastructuur; Onverwachte gebeurtenissen; Sluispolitiek; Vaarschema van het schip.
Bulkschepen Roro Passagiersschepen Autoboten Tankers Marineschepen Refrigerated schepen Baggerschepen
Aanlopen Binnenlopen Schutten Varen Aanmeren Havenactiviteiten Ontmeren Varen Schutten Gevaarlijke stoffen Uitlopen DWT
lading Eigenschappen schip Sluitingstijd deuren Openingstijd deuren Nivelleertijden
Type Bijzonderheden
procedures
Sluiskarakteristieken
Lengte Snelheidsbeperkingen
Afwijkingen Getij-afhankelijke schepen Benodigde diensten
lading
Bestemming schip
Infrastructuur
Meteorologische omstandigheden
Vaarschema
Dimensies
Bestemming
Geulschepen Ontheffingsschepen Stroomgevoelige schepen
Lengte Breedte Diepgang
Toelatingseisen
Scheepsaanbod
Horizontaal getij Verticaal getij
Getij
ETA/ETD
Hydrografische factoren
Sleepboot dienst
vletterlieden
Aantal Trekkracht boten Beschikbaarheid boten Locatie
Prioriteit schip
Sluispolitiek Hydrografische factoren
Sluisplanning
wachttijden
Hinder scheepvaartverkeer
Loodsdienst
Additionele diensten
verkeersbe geleiding
Onverwachte gebeurtenissen
GHA SLC Kapiteins Kamer (KK)
Vertragingen schip
Infrastructuur
Storingen sluis Noordersluis Middensluis
Manoeuvres Vaarsnelheid Zwaaipunten Kruispunten Beperkte breedte constructies
Verkeersregels
knelpunten
afmetingen
capaciteit
Beschikbaarheid Waterstand Verstoringen
Ligplaatsplanning
Beschikbaarheid
Meteorologische omstandigheden
Sluisbeschikbaarheid
Indeler wind
CESAR Regisseur
Neerslag Mist
Afhandelingstijd Doorvoercapaciteit Lading schip Beschikbaarheid werkploegen Meteorologische factoren
Figuur 2.2: Overzicht van alle factoren, die een rol spelen bij het opstellen van de planning
Voor ieder hoofdaandachtspunt worden de partijen en invloeden uiteengezet. Hieronder volgt een korte beschrijving van deze punten en de manier waarop zij de planning beïnvloeden. Hoofdstuk 2: Systeemanalyse
6
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Scheepsaanbod Het spreekt voor zich dat het scheepsaanbod in het algemeen en de aankomst- en vertrektijden van de individuele schepen het planningsproces direct beïnvloeden. Ieder individueel schip bezit daarnaast een aantal unieke eigenschappen, die indirect invloed hebben op de manier waarop een planning wordt ingevuld. De dimensies van het schip zijn bijvoorbeeld bepalend voor of het schip al of niet geschut kan worden en of dit eventueel ook tegelijkertijd kan met een ander schip. Hierbij speelt ook de lading een rol: schepen met gevaarlijke stoffen aan boord mogen om veiligheidsredenen niet met andere schepen tegelijkertijd geschut worden. Het type schip zegt veelal iets over bouw en het type voortstuwing, waarmee het schip is uitgerust. Deze eigenschappen zijn mede van invloed op de manoeuvreerbaarheid van het schip en daarmee de benodigde tijd voor het uitvoeren van bepaalde activiteiten, zoals het in- en uitvaren van de sluis. Bovendien heeft manoeuvreerbaarheid invloed op het benodigd aantal sleepboten en het capaciteitsbeslag van een schip op een zeker vaartraject. Hydrografische factoren Aan de kust van IJmuiden is sprake van een getij. Het getij veroorzaakt hier schommelingen in de waterstand en een afwisselend sterke tot zwakke horizontale stroming langs de kust (zie bijlage II). Hierbij wordt onderscheid gemaakt tussen: -
Het horizontaal getij; Het verticaal getij.
Het horizontaal getij weerspiegelt het verloop van de horizontale stroming langs de kust, die gedurende de dag voortdurend in sterkte en in richting verandert. Een snelheidsbeperking voor de scheepvaart bij het binnenlopen van de havenmond heeft tot gevolg dat de maximaal toelaatbare dwarsstroom beperkt is. Op basis van ervaringen van nautische deskundigen, is in het verleden bepaald, dat de maximaal toelaatbare stroming bij het passeren van de havenmond voor stroomgevoelige-, ontheffings- en geulschepen 0,5 m/s bedraagt. Het binnenlopen geschiedt daarom slechts in een bepaalde periode en bij voorkeur tijdens de kentering. Op dit moment vindt wisseling van eb en vloed plaats, waarbij de stroom van richting verandert. De stroomsnelheid is dan gelijk aan nul. De periode waarin de stroomsnelheid kleiner is dan de maximaal toelaatbare snelheid wordt gedefinieerd als de horizontale tijpoort. De schommelingen in de waterstand wordt ook wel het verticaal getij genoemd. Om te zorgen dat een schip manoeuvreerbaar blijft en de kans op bodemroering minimaal is, moet een minimale vrije ruimte tussen het diepste punt van het (stilliggend) schip en het ondiepste punt van de zeebodem worden aangehouden. Deze vrije ruimte is gedefinieerd als de keelclearance van het schip en wordt uitgedrukt in percentage van de diepgang. De keelclearance is opgebouwd uit de volgende factoren (zie figuur 2.3): -
-
Diepgangsvermeerdering als gevolg van golfbewegingen: Door golfbewegingen zakt plaatselijk de waterstand en tegelijkertijd het schip; Squat: Squat is de diepgangsvermeerdering, die in rekening wordt gebracht als gevolg van de snelheid van het schip en het verschil in diepgang tussen de achterkant van het schip en de boeg (trim). Toenemende snelheid en afnemende waterdiepte veroorzaken beide een grotere diepgang van het schip. Het verschijnsel trim wordt veroorzaakt, doordat de waterspiegel daling aan de achterkant van het schip meestal iets groter is dan aan de voorkant van het schip; Onnauwkeurigheden in diepgangsberekeningen, bodemligging en waterstandsbepalingen.
Met behulp van de bodemgegevens en de keelclearance per vaarwegdeel wordt voor iedere diepgang de vereiste waterstand bepaald. Een periode waarin wordt voldaan aan het minimale bruto keelclearance percentage voor een bepaald schip, wordt gedefinieerd als de verticale tijpoort.
Hoofdstuk 2: Systeemanalyse
7
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Figuur 2.3: Keelclearance
Op basis van de getijbeperkingen kan onderscheid worden gemaakt tussen de volgende categorieën: -
-
-
Stroomgevoelige schepen: Deze schepen met een diepgang tussen de 11 en 13,1 meter of een lengte groter dan 200 meter, zijn afhankelijk van het horizontaal getij om de havenmond binnen te varen; Ontheffingsschepen: Deze schepen hebben een diepgang tussen de 13,1 en de 13,7 meter. Ze zijn afhankelijk van het horizontale getij om de havenmond binnen te varen en van het verticale getij voor het bevaren van het havengebied van IJmuiden; Geulschepen: Geulschepen hebben de bestemming overslagpalen of de Chorusterminal. Ze worden hier gelichterd of gelost. Deze schepen hebben een diepgang tussen de 13,7 en de 16,5 meter en zijn voor bevaren van de geul afhankelijk van het verticale getij en voor passage van de havenmond afhankelijk van het horizontale getij. De zogenaamde lichterschepen worden na het lossen van een deel van de lading alsnog geschut, doordat zij in diepgang zijn afgenomen. Op dit moment zijn zij enkel nog afhankelijk van de waterstand voor het passeren van de sluisdrempel.
Additionele diensten De additionele diensten binnen het gebied zijn de vletterlieden, de sleepboten en de loodsen. De vletterlieden maken de schepen vast, zodra zij in de sluis liggen en weer los, voordat zij de sluis uitvaren. De sleepboten begeleiden het schip in het gebied rondom de sluis (zie figuur 2.4). De sleepbootplicht bestaat in principe voor alle schepen, die de Noordersluis en de Middensluis passeren. Dit is om aanvaringen en schade aan de sluisdeuren te voorkomen. In praktijk worden geulschepen (bestemd voor de Corusterminal of de overslagpalen) steeds vergezeld door twee sleepboten. De loods adviseert de kapitein van het schip bij het bevaren van het NZK-gebied. Loodsplicht bestaat in principe voor alle schepen, met een lengte groter dan 60 meter.
Hoofdstuk 2: Systeemanalyse
8
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
De beperkte capaciteit van deze diensten, ofwel het beperkt aantal beschikbare vletterlieden, loodsen en sleepboten, kan mogelijk een flessenhals vormen, waardoor de planning voor de sluis moet worden aangepast.
Figuur 2.4: Zeeschip met sleepboothulp
Het GHA Het GHA heeft drie belangrijke functies: -
Informatiebeheerder; Verkeersplanner; Verkeersleider.
Het GHA heeft als nautisch beheerder en regisseur van het NZK-gebied de bevoegdheden het planningsproces direct te beïnvloeden. Meteorologische omstandigheden Er kunnen aanzienlijke verschillen ontstaan tussen de voorspelde (astronomische) en actuele (gemeten) waterstanden. Deze verschillen zijn vrijwel altijd het gevolg van meteorologische omstandigheden, die slechts op korte termijn te voorspellen zijn. Aanlandige wind veroorzaakt over het algemeen een hogere waterstand en tevens een vervroeging van het tijdstip van hoog- en laagwater. Aflandige wind veroorzaakt het tegenovergestelde effect. De windrichting en de windsnelheid heeft bovendien invloed op: -
-
Het vaargedrag van de schepen: Met name schepen met een hoge bouw en een geringe diepgang, zoals bijvoorbeeld de autoschepen, zijn zeer gevoelig voor zijwind; De sluiskeuze: Bij krachtige wind wordt vaak gekozen voor een grotere sluis. Dit leidt tot een grotere druk op de Noordersluis; Mogelijkheid tot beloodsen: Bij zeer slechte weersomstandigheden wordt de loodsdienst gestaakt. Dit houdt in dat de tender niet meer uitvaart voor het beloodsen van schepen. Onder bepaalde voorwaarden kan een schip dan wel met behulp van radar de haven worden binnengeloodst (‘Loods Op Afstand’ (LOA));
Hoofdstuk 2: Systeemanalyse
9
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
-
Benodigd aantal sleepboten: Aangezien wind in veel gevallen het vaargedrag van een schip sterk beïnvloedt, geldt dit over het algemeen ook voor de toedeling van sleepboten. Veel loodsen prefereren bij slechte weersomstandigheden meerdere sleepboten in plaats van slechts één achteraan. Bovendien wordt er soms voor gekozen de schepen tot aan de haven in Amsterdam te begeleiden.
Ligplaatsplanning Voor de sluisplanning wordt rekening gehouden met de beschikbaarheid van ligplaatsen. In principe dient voor ieder schip, dat in de sluisplanning wordt opgenomen, direct bij aankomst in de haven een ligplaats beschikbaar te zijn, anders zal het schip buitengaats moeten wachten. De doorvoercapaciteit van de betreffende ligplaats en de beladingsgraad bepalen onder meer hoe lang het schip in de haven verblijft en daarmee het moment dat het schip de haven verlaat en opnieuw geschut zal moeten worden. Infrastructuur Op de relatief smalle kanalen aan weerszijde van de sluis is slechts een beperkt aantal passages mogelijk. Hoe groter de afstand van het punt waar in- en uitvarend verkeer elkaar kunnen passeren, tot de sluis, des meer tijd een schutcyclus in beslag neemt. Om het achterliggende land te beschermen tegen overstromingen dient rekening te worden gehouden met de waterstand op het kanaal. Bij waterstanden boven NAP-0,32 meter gaan de waterhuishoudkundige belangen voor en is schutten door de Noordersluis niet mogelijk. Onverwachte gebeurtenissen In het systeem kunnen voortdurend onverwachte gebeurtenissen optreden, die de planning kunnen verstoren. De volgende worden genoemd: -
-
-
-
Onverwachte schepen: Het komt voor dat een schip aankomt, terwijl de agent van dit schip geen melding heeft gemaakt van zijn aankomst, de zogenaamde ‘blindgangers’; Storingen sluis: De sluis kan om bepaalde redenen tijdelijk niet beschikbaar zijn; Zwaaiende schepen: Terminals hanteren een vaste aanmeerrichting. Wanneer de vaarrichting van een schip niet overeenkomt met deze aanmeerrichting, moet het schip zwaaien (keren). Doordat een groot zwaaiend schip veel ruimte inneemt, kan het een deel van het vaargebied in beslag nemen. Grote bulkschepen zwaaien bij het verlaten van de Chorusterminal, tussen het Noorderbuitenkanaal en het Buitentoeleidingskanaal en hinderen hierbij zowel het ingaand als het uitgaand verkeer ten westen van de Noordersluis; Afwijkingen in Estimated Time of Arrival (ETA) en Estimated Time of Departure (ETD): Met name de vertrektijd van een schip uit één van de havens is een onzekere factor. De tijd die het schip nodig heeft om de ankers binnen te halen, te ontmeren en eventueel te zwaaien, waarna het schip uiteindelijk de haven uitvaart kan variëren van een half uur tot anderhalf uur. Deze tijd is van tevoren zeer moeilijk in te schatten; Wijzigingen in de omgevingsvariabelen: De weersomstandigheden zijn onder andere van invloed op het gedrag van schepen en van personen, die deze schepen besturen. Een kleine variatie in bijvoorbeeld de windkracht kan al leiden tot andere beslissingen van deze personen, die de planning kunnen verstoren.
Sluispolitiek Het plannen komt in feite neer op het toewijzen van (schaarse) resources (sluizen, sleepboten etc) aan schepen in de tijd (allocatie). Onveilige verkeerssituaties dienen hierbij te aller tijden voorkomen te worden. Bovendien dient men rekening te houden met de geldende randvoorwaarden binnen het systeem. De sluispolitiek kan worden gezien als een stelsel van Hoofdstuk 2: Systeemanalyse
10
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
regels en afspraken, die aan geven hoe ieder schip wordt behandeld bij het toewijzen van deze resources. Deze regels en afspraken zijn opgesteld, om het proces zodanig te sturen, dat de doelstellingen van het te besturen systeem zo dicht mogelijk worden benaderd en bepalen direct hoe de planning wordt opgesteld. Vaarschema van het schip Het vaarschema kan worden gedefinieerd als een opeenvolging van tijdsintervallen, die ieder het tijdsbeslag van een bepaalde activiteit (varen, schutten, etc) van het schip weergeven. De planning is in feite gebaseerd op al die verschillende (schattingen van) vaarschema’s van alle betrokken schepen. Hoe deze tijdsintervallen worden bepaald, is van invloed op het gehele tijdsvenster van de planning.
2.3.
Beschrijving belangrijkste processen
Deze paragraaf beschrijft het gehele proces, vanaf de aanmelding van een schip tot aan het moment dat hetzelfde schip de haven weer uitvaart. De aanvraag van een schip voor een ligplaats in één van de havens wordt gedaan door de cargadoor van het schip aan het GHA/centrale meldpunt (CPM). Dit voorbericht van aankomst (VBA) vindt enige dagen tot maanden van tevoren plaats. Bij deze melding worden de relevante schipgegevens, de Estimated Time of Arrival (ETA) en eventueel de Estimated Time of Departure (ETD) geregistreerd. Deze ETA en ETD worden tot de werkelijke aankomst- en vertrektijd regelmatig bijgesteld. De ETA van schepen met een diepgang groter dan 13,7 meter, betekent de verwachte aankomsttijd bij het Ankergebied (circa 26 mijl uit de kust). Voor overige schepen is dit de aankomsttijd bij de Kruispost (circa 10 km uit de kust). De gegevens worden ingevoerd in het softwarepakket CESAR (Centrale Scheepvaart Afhandeling en Registratie). Alle betrokken partijen kunnen gebruik maken van dit systeem. Bij het binnenkomen van het VBA worden de gegevens van het schip vergeleken met de scheepsgegevens, zoals die in Lloyd´s register of ships´ staan en indien nodig worden er wijzigingen in CESAR ingevoerd. Voor de ETA wordt doorgaans de code 23:59 uur ingevoerd om aan te geven dat het hier een onzekere aankomsttijd betreft. Wordt er bij het VBA wel een tijdstip gegeven, dan wordt deze als xx.01 uur ingevoerd. Wanneer het schip vanaf zee het marifoongebied binnen vaart, maakt de kapitein melding van zijn aankomst. Het eerste spraakcontact vindt in dit geval plaats met de Verkeersleider Rede (VLR), vanaf het Haven Operatie Centrum (HOC), uiterlijk twee uur vóór ETA. Indien dit niet op tijd gebeurt, wordt het schip later in de planning betrokken, wat het planningsproces bemoeilijkt. De ETA wordt aangepast in CESAR. Deze redelijk betrouwbare aankomsttijd wordt ook wel rondetijd genoemd. Vervolgens wordt met de cargadoor van het schip via het GHA/Kapiteinskamer(KK) overlegd of er een laad/los plaats beschikbaar is op het verwachte tijdstip van aankomst in de haven. Mocht het nodig zijn worden opnieuw de wijzigingen ingevoerd in CESAR. Aan de hand van deze ETA worden de reistijden bepaald. Het traject dat het schip doorloopt wordt opgedeeld in een aantal subtrajecten, bijvoorbeeld traject pieren tot aan sluisdeuren West (PI-SLW). De aankomsttijd bij het beginpunt, de verblijftijd en de vertrektijd van het eindpunt worden per subtraject bepaald. Aan de hand van de verwachte aankomsttijd bij de sluis wordt de sluisplanning gemaakt. De sluismeester is verantwoordelijk voor deze planning. Mochten er nog afwijkingen in de ETA ontstaan, dan worden deze ingevoerd door de VLR of de hoofdverkeersplanner (HVP). De loodsdienst leest de ETA af uit CESAR en neemt het schip mee in de loodsplanning indien het schip loodsplichtig is (over het algemeen zijn alle schepen, die door de Noordersluis moeten worden geschut loodsplichtig).
Hoofdstuk 2: Systeemanalyse
11
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Sleepbootfirma Wijsmuller leest ook de ETA en plant in overleg met de loods hoeveel sleepboten er nodig zijn op het tijdstip van aankomst. Het uiteindelijk aantal sleepboten wordt bepaald door de loods, die de kapitein adviseert. De kapitein bestelt dan de sleepboten. Bij probleemgevallen vindt overleg plaats tussen Wijsmuller en het coördinatieplatform (GHA). Conform de sluisplanning, die is opgesteld door de sluiswachter, wordt het schip beloodst. Voor de reguliere vaart komen loodsen aan boord ter hoogte van de Kruispost. Geulschepen daarentegen worden per helikopter beloodst ter hoogte van Helikopter rendez-vous op circa 20 mijl uit de kust. Vervolgens vaart het schip richting havenmond. Ter hoogte van de pieren worden (indien nodig) de sleepboten vastgekoppeld en wordt het schip naar de sluis (of andere bestemming) begeleid. Als het schip zich in sluis bevindt, wordt de vrije ruimte eventueel opgevuld met andere schepen, voordat de deuren gesloten worden. De vletterlieden maken het schip in de kolk vast aan de sluiswand. De sluismeester in het sluisleidingscentrum (SLC) sluit de deuren, zodra het laatste schip is aangemeerd en eventueel aanwezige sleepboten de kolk uit zijn gevaren. In veel gevallen gaat de voorste sleepboot mee de sluis in en assisteert het schip bij het uitvaren van de kolk. Dan vaart het schip over het NZK naar zijn bestemming toe. Bij veel wind komt het voor, dat grote schepen met een aanzienlijke diepgang of een hoge bouw, zoals bijvoorbeeld bulkcarriers of autoschepen, tot aan hun bestemming worden begeleid door een sleepboot. Bij aankomst in de haven van bestemming meert het schip aan bij de daarvoor aangewezen ligplaats. Ook hiervoor zijn vaak sleepboten nodig. Afhankelijk van de aankomsttijd bij de kade en de beschikbaarheid van ploegen en materieel gaat het laad/los proces van start. Als dit proces is voltooid en het schip heeft geen andere bestemmingen meer binnen het gebied dan kan de terugreis beginnen. Een paar uur voor ETD geeft de agent van het schip zijn (bijgestelde) vertrektijd door aan het GHA. Op de hierboven beschreven manier wordt de aankomsttijd bij de sluis berekend en in de planning verwerkt. Het westelijk traject van de havens tot de Kruispost is nagenoeg identiek aan het oostelijk traject. Bovendien geldt hetzelfde ten aanzien van sleepbootassistentie. In de haven komt opnieuw een loods aan boord. Ter hoogte van de Kruispost wordt hij of zij weer opgehaald door een van de loodsboten.
Hoofdstuk 2: Systeemanalyse
12
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
3. Probleembeschrijving en doelstelling Nu bekend is wat zich allemaal afspeelt binnen het systeem, kan duidelijk een beeld worden gevormd van het probleem. Het probleem wordt beschreven in paragraaf 3.1. Aan de hand hiervan worden in paragraaf 3.2 de onderzoeksgrenzen vastgesteld. Vervolgens wordt in paragraaf 3.3 het doel van dit afstudeeronderzoek bepaald. Tenslotte wordt in paragraaf 3.4 het programma van eisen opgesteld. Hierin wordt beschreven wat er van het model verwacht wordt en welke aannames zijn gedaan.
3.1.
Probleemschets
Gezien de sterke toename van het scheepvaartverkeer en het veranderende verkeersbeeld voor de gehele vaart binnen het gebied is de druk op de Noordersluis en daarmee de gemiddelde wachttijd voor Noordersluis-gebonden schepen ook toegenomen. Met deze wetenschap moet de vraag worden gesteld of de verkeersafwikkeling bij de Noordersluis kan worden verbeterd. Problemen die zich, met betrekking tot deze verkeersafwikkeling, mogelijk kunnen voordoen, hangen onder meer samen met de besturing van de sluis. Het besturen houdt in dit verband in: het plannen, uitvoeren en controleren van activiteiten. In dit onderzoek wordt de planning belicht. Bij het opstellen van een planning voor de Noordersluis wordt voor het totaal aanbod van schepen, met bijbehorende tijdsintervallen, de schutvolgorde bepaald. In het vorige hoofdstuk werden de vele partijen en invloedsfactoren, die hierbij een rol spelen, beschreven. De persoon die deze planning opstelt dient inzicht te hebben in al deze aspecten. De logistieke complexiteit van het systeem vereist een hulpmiddel om over inzicht en overzicht te kunnen beschikken met betrekking tot het operationele verloop van processen binnen dit systeem.
3.2.
Afbakening van het onderzoeksgebied
Dit afstudeerwerk beperkt zich tot de processen die een rol spelen bij de planning van de Noordersluis. Het probleemveld betreft de afhandeling van het scheepvaartverkeer door deze sluis, waarin slechts de (beperkte) capaciteit van de Noordersluis een flessenhals vormt.
3.3.
Doelstelling van het project
De doestelling van dit afstudeerproject is het ontwikkelen van een model dat volgens een standaard methode een planning voor de Noordersluis zal genereren. Het model moet fungeren als planningsondersteunend systeem voor de menselijke beslisser, zodat vroegtijdig conflictsituaties kunnen worden gesignaleerd. In het model wordt het huidig aanbod van schepen voor de Noordersluis in een tijdsplanning verwerkt, zodanig dat het doel van de Nautische Sector wordt ondersteund. Dit doel is: een vlotte en veilige scheepsafhandeling.
Hoofdstuk 3: Probleembeschrijving en doelstelling
13
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
3.4.
Programma van eisen
Om een bruikbaar simulatieprogramma te ontwerpen, is het van belang van tevoren te omschrijven wat van het programma verwacht wordt. De rode draad door het onderzoek is het inzichtelijk maken van processen binnen het systeem en het aandagen van een oplossing voor de planning, door middel van het ontwikkelen van en het experimenteren met een simulatiemodel. De centrale vragen hierbij zijn: -
Wat is de planningshorizon? In welke volgorde moeten de schepen worden ingedeeld om een vlotte en veilige verkeersafwikkeling te realiseren? Welke uitvoer dient het model te geven met betrekking tot de doelstelling? Welke vereenvoudigingen kan men doorvoeren in het model, zonder dat dit de resultaten beïnvloedt?
Op deze vragen wordt achtereenvolgens in onderstaande paragrafen ingegaan.
3.4.1.
De planningshorizon
De planningshorizon wordt gedefinieerd als de tijd waarover vooruit wordt gezien. De planningshorizon bepaalt in dit systeem sterk de mate van onzekerheid. Hoe verder vooruit wordt gezien, des groter het aantal onzekerheden. De planningshorizon bepaalt daarom ook het niveau waarop de planning wordt uitgevoerd (strategisch of operationeel). Een strategische planning houdt in dit verband in, een planning omtrent de doelstellingen en de algemene besturing van de sluis. Bij een strategische planning wordt over het algemeen gekeken op lange termijn. Eén van de onderzekerheden ontstaat, doordat niet alle elementen (zoals het aanbod) bekend zijn. De operationele planning wordt voor de korte termijn uitgevoerd. Bij de operationele planning moet een optimale volgorde worden gevonden voor, in dit geval, het schutten. Alle elementen voor de planning liggen dan grotendeels vast. Voor dit onderzoek wordt een operationele planning gegenereerd. De planningshorizon wordt vastgesteld op circa 24 uur voor aanvang van de dag waarvoor de planning wordt gemaakt. Het scheepsaanbod is dan grotendeels bekend (op blindgangers na). Op die manier kan men vroegtijdig conflictsituaties herkennen en heeft men voldoende tijd om eventueel maatregelen te nemen. De aankomst- en vertrektijden zijn nog wel aan veranderingen onderhevig. Bij wijzigingen kan opnieuw een planning worden gemaakt. Het resultaat van de planning kan worden gebruikt bij de uitvoering ervan.
3.4.2.
Doelfunctie bij het opstellen van de planning
De doelfunctie van het model als planningsondersteunend systeem is om een planning te genereren, waarbij een vlotte en veilige verkeersafwikkeling plaatsvindt. Vlot is in dit verband een subjectief begrip; vlot in het algemeen zal zelden door ieder individueel schip als vlot worden ondervonden. In dit onderzoek wordt uitgegaan van de volgende doelfunctie: De aansturing van de logistieke processen rond de sluis moet leiden tot een vermindering van de hinder voor Noordersluisgebonden schepen, door het optimaliseren van het gebruik van de sluis en het tijdig signaleren van knelpunten. Deze ‘hinder’, die een bepaald schip ondervindt, moet worden afgeleid uit de gevolgen van een vertraging en de gevoeligheid voor (ongeplande) wachttijden. Hierbij worden de gevolgen van deze vertragingen en wachttijden bekeken voor verschillende type schepen. In dit onderzoek is zorgvuldig aandacht besteed aan de manier waarop dit onderscheid wordt gemaakt en hoe dit zich vertaalt naar een standaard planmethode. Dit heeft geresulteerd in een toewijzingsstrategie voor het de sluis: de ‘spelregels’ van het model. De strategie wordt behandeld in de volgende paragraaf.
Hoofdstuk 3: Probleembeschrijving en doelstelling
14
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
3.4.3.
Toewijzingsstrategie voor de sluis
Aan de hand van een toewijzingsstrategie wordt bepaald hoe een schip wordt behandeld bij de indeling van de sluis. Het naleven van bepaalde strategieën is van invloed op: -
De gemiddelde wachttijd; De wachttijdverdeling tussen de schepen onderling; De bezettingsgraad van de sluis; Het aantal lege schuttingen op een dag.
De huidige planning en besturing van de sluis zijn voor een groot deel afhankelijk van menselijk handelen en daarmee nauwelijks modelleerbaar. Aan de hand van interviews met diversen experts uit de praktijk zijn een aantal richtlijnen opgesteld, die bij het toewijzen van de sluis aan schepen een rol zullen spelen. Deze richtlijnen zijn: -
Verwachte aankomst- en vertrektijd van een schip: Men zal bij het opstellen van de planning uiteraard rekening moeten houden met de ETA en ETD van de schepen. Wettelijk gezien heeft het schip dat als eerste komt ook het recht om als eerste geschut te worden. De basisregel luidt dan ook: First Come First Served (FCFS) Dit houdt in dat de schepen in principe worden geschut op volgorde van hun verwachte aankomst- of vertrektijd.
-
Urgentie van schepen: Voor tijgebonden schepen wordt geprobeerd de eerstvolgende tijpoort te benutten. Dit zal mogelijke ten koste van andere schepen moeten gaan. Dan zijn er nog de containerschepen en de passagiersschepen. Beide type schepen varen volgens een strak vaarschema (lijndiensten). Er wordt verondersteld dat deze schepen daarom meer zullen lijden onder een vertraging. Met betrekking tot de urgentie van schepen wordt onderscheid worden gemaakt tussen: a. b. c. d.
Ontheffingsschepen; Stroomgevoelige schepen; Lijndiensten; Overige scheepvaartverkeer.
-
Lege schuttingen vermijden, om langere wachttijden te voorkomen: Indien men niet van de basisregel zou afwijken, dan zal de sluis ongetwijfeld een groot aantal keer leeg moeten worden geschut. Om suboptimalisatie tegen te gaan zal men de sluis bij voorkeur heen en weer schutten zonder lege schuttingen.
-
Efficiënt volplannen: Onder efficiënt volplannen wordt verstaan: het tegelijkertijd schutten van twee schepen, die binnen afzienbare afstand van elkaar varen. Gezien de afmetingen van de sluiskolk wordt uitgegaan van maximaal twee schepen per schutting (zie aannamen en uitgangpunten in paragraaf 3.4.5).
Hoofdstuk 3: Probleembeschrijving en doelstelling
15
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Voor de toewijzing van de sluis aan de schepen zijn vervolgens een aantal regels opgesteld, waarbij zoveel mogelijk aan de verschillende richtlijnen tegemoet wordt gekomen. Deze zogenaamde ‘spelregels’ van het model zijn manipuleerbaar. De invloed ervan op de uiteindelijke resultaten wordt onderzocht met behulp van een gevoeligheidsanalyse, die in hoofdstuk 8 wordt beschreven. 1. 2. 3. 4. 5.
Ontheffingsschepen krijgen voorrang op alle andere schepen (b,c,d) indien zij in dat geval niet een ‘getij over hoeven te liggen’; Stroomgevoelige schepen hebben voorrang op de lijndiensten en al het overig scheepvaartverkeer (c en d), indien zij in dat geval niet ‘over hoeven te liggen’; Lijndiensten hebben voorrang op overige schepen (d) als zij anders langer moeten wachten dan 45 minuten; Er wordt alleen leeggeschut als dit niet leidt tot langere wachttijden. Een en ander wordt verderop in dit rapport toegelicht; Schepen worden tegelijkertijd geschut indien dit leidt tot minder vertragingen.
Deze regels geven aan in welke situatie wordt afgeweken van de basisregel. In bepaalde situaties kan het zijn, dat één of meerdere regels niet kunnen worden nagekomen. Dit zal het geval zijn wanneer in zo´n situatie meerdere regels (beperkingen) moeten worden toegepast, die niet samen gaan. In een dergelijk geval wordt in de eerste plaats de meest belangrijke regel gevolgd (dus eerst regel 1, dan regel 2, etc)
3.4.4.
Gewenste uitvoer
Het programma moet dienen als verlengstuk voor de menselijke beslisser. Uiteindelijk moet het een voorstel voor een planning leveren. Zoals dit werd beschreven in de doelstelling, moeten aan de hand van deze planning conflictsituaties worden herkend. Hierbij is het van belang, dat de planning op een overzichtelijke manier wordt weergegeven. Het resultaat dient te worden weergegeven in de vorm van een balkenschema, waarin alle schuttingen in de tijd worden weergegeven. Bovendien moeten hierin de ETA’s en ETD’s van de schepen worden weergegeven, zodat eenvoudig kan worden afgelezen waar zich precies conflictsituaties voordoen.
3.4.5.
Aannamen en uitgangspunten
Gezien de complexheid van het systeem is het wenselijk een aantal aannames en uitgangspunten op te stellen, die binnen onderzoeksgebied liggen. Deze aannames en uitgangspunten moeten het systeem enigszins vereenvoudigen. Een belangrijk instrument bij deze vereenvoudiging vormde de mindmap (zie figuur 2.2). Het systeem en de systeemgrenzen - Het model wordt aan de westzijde begrensd door de Kruispost. Schepen komen hier volgens ETA het systeem binnen. De vaartijd naar de sluis vanaf dit punt is ongeveer een uur. De grens aan de oostzijde is de Houtrak. Voor de vaartijd naar de sluis vanaf dit punt is eveneens uitgegaan van circa één uur. Scheepsaanbod en vaargedrag - Het model gaat alleen uit van Noordersluisgebonden schepen. Dit zijn: Schepen met een lengte groter dan 180 meter, een breedte groter dan 18 meter of een diepgang groter dan 8 meter. Hierbij wordt aangenomen dat hooguit twee schepen tegelijkertijd in de kolk passen. Meeschutten van ander scheepvaartverkeer wordt niet meegenomen; - Het vaarschema van een schip is opgebouwd uit deterministische grootheden. Aangezien er een planmethode wordt ontwikkeld is het niet relevant om aan de vaartijden van schepen stochastische waarden toe te kennen; - Schepen kunnen elkaar binnen het model niet inhalen, zij kunnen elkaar uiteraard wel ontmoeten; - Schepen met een gevaarlijke lading aan boord worden uit veiligheidsoverwegingen meestal niet met andere schepen tegelijkertijd geschut. Hier wordt geen rekening mee gehouden.
Hoofdstuk 3: Probleembeschrijving en doelstelling
16
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Hydrografische factoren en tijgebondenheid - Omdat weinig informatie beschikbaar is over de diepgang van schepen, wordt aangenomen dat alle oostgaande schepen met een lengte groter dan 200 meter, afhankelijk zijn van het horizontaal getij. Bij westgaande schepen beïnvloedt dit de planning niet of nauwelijks. Deze schepen zijn daarom binnen het model niet afhankelijk van het horizontaal getij; - De diepgang van een schip hangt onder andere af van de mate van belading. Zwaar beladen schepen, die vanwege hun grote diepgang slechts tijdens voldoende hoogwater het gebied aan westzijde van de sluis kunnen bevaren, komen over het algemeen hun lading lossen in het NZK–gebied. Bij het verlaten van de haven is de diepgang van deze schepen, veelal bulkcarriers, dan aanzienlijk afgenomen. Het komt zelden voor dat een westgaand schip afhankelijk is van het verticaal getij. Dit wordt binnen het model dan ook verwaarloosd: westgaande schepen, die het gebied verlaten zijn niet afhankelijk van het verticaal getij; - Slechts ontheffingsschepen met een diepgang groter dan 13,1 meter hebben een waarde voor de diepgang. Voor overige schepen is de diepgang niet van belang en wordt de waarde ervoor gelijk gesteld aan nul; - De geulschepen in het model representeren alleen de zogenoemde lichterschepen. Andere geulschepen, met bestemming Corusterminal, hoeven niet te worden geschut en worden hier buiten beschouwing gelaten; - Lichterschepen komen het systeem binnen ter hoogte van de Kruispost. Zij varen direct als het getij dit toelaat naar de Y-palen in het Noorderbuitenkanaal. Ieder schip verblijft hier precies drie dagen en wordt vervolgens voor die dag meegenomen in de sluisplanning. Meteorologische omstandigheden - De invloed van regen, wind en mist worden niet meegenomen. Ligplaatsen in de haven - De havens en beschikbare ligplaatsen worden in dit model buiten beschouwing gelaten. Er wordt verondersteld dat de capaciteit van de ligplaatsen altijd voldoende groot is om aan de vraag te kunnen voldoen; - De afhandelingtijd in de haven is van zeer veel factoren afhankelijk en verschilt sterk per type schip. In dit model wordt voor ieder type schip een verblijftijd in de haven geloot uit een uniforme verdeling. De verdelingsfunctie is voor ieder schip gelijk. Onverwachte gebeurtenissen - In paragraaf 2.2 werden een aantal onvoorspelbare factoren genoemd, die een planning kunnen verstoren. Deze factoren spelen geen rol in de planning en worden daarom buiten beschouwing gelaten; - De sluis wordt volcontinue bediend. Additionele diensten - Het gebruik van sleepboten wordt slechts geregistreerd. Ze zijn niet beperkt in hun aantal en maken daarom geen deel uit van de beslissingsruimte. Door middel van registratie kan echter wel globaal inzicht worden verkregen in het benodigd aantal sleepboten in de tijd. Bovendien wordt geen onderscheid gemaakt tussen sleepboten met verschillende trekkracht. Loodsen worden in dit onderzoek geheel buiten beschouwing gelaten.
Hoofdstuk 3: Probleembeschrijving en doelstelling
17
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Hoofdstuk 3: Probleembeschrijving en doelstelling
18
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
4. Modelvorming Nadat in voorgaande hoofdstukken is beschreven wat er binnen het systeem gebeurt, gaan de volgende hoofdstukken in op de vraag hoe dit kan worden gemodelleerd. Het systeem wordt ontleed in een aantal aan elkaar verbonden hoofdactiviteiten, die een bepaalde functie vervullen. Deze functieanalyse wordt in paragraaf 4.1 uiteengezet. Hierbij wordt onderscheid gemaakt tussen het informatiesysteem en het verkeerssituatiemodel. In het informatiesysteem worden voornamelijk `abstracte processen´ doorlopen, zoals het plannen. In het verkeerssimulatiemodel wordt de verkeerssituatie nagebootst. In paragraaf 4.2 wordt een algemene beschrijving van het ontwikkelde model gegeven. Vervolgens wordt in paragraaf 4.3 de communicatie tussen het informatiesysteem en het verkeerssimulatiemodel beschreven. De invoervariabelen worden behandeld in paragraaf 4.4. Vervolgens wordt de modelinfrastructuur beschreven in paragraaf 4.5. Paragraaf 4.6 behandelt de scheepvaart binnen het model en tenslotte wordt in paragraaf 4.7 een korte beschrijving gegeven van de gebruikte programmeertaal bij de vertaling van het model naar een simulatieprogramma.
4.1.
Functieanalyse van het model
Aan de hand van de analyse van het systeem wordt een functiemodel gemaakt. Het maken van een functiemodel is een methode die vaak gebruikt wordt om een complex systeem te beschrijven. Het systeem wordt dan doorgaans weergegeven met behulp van diagrammen, waarmee de samenhang tussen de verschillende functies van het te modelleren systeem overzichtelijk wordt weergegeven. Er zijn verschillende manieren om dit te doen. Voor dit project is gekozen voor de Structured Aanlysis Design Technique (SADT). Deze techniek is zeer geschikt voor het modelleren van activiteiten en de informatiestromen tussen de activiteiten. Het model wordt opgesplitst in een serie diagrammen met ondersteunende informatie. Een complex systeem wordt zo opgedeeld in een aantal (ondergeschikte) functies. De opbouw is hiërarchisch; door verschillende lagen van detaillering toe te passen, kunnen ook zeer complexe modellen overzichtelijk blijven. Het eerste diagram is de meest abstracte beschrijving van het systeem. Het toont de hoofdfunctie als een rechthoek (actieblok). De hoofdfunctie bestaat uit een aantal nevenfuncties of processtappen. Van elk van deze nevenfuncties kan vervolgens weer een nieuw diagram worden gemaakt. De detailfuncties worden weergegeven als actieblokken. Elk diagram is dus de decompositie van een functie uit een diagram van een hoger aggregatieniveau. Een actieblok geeft aan wat er bereikt moet worden, ofwel wat de functie van een activiteit is. Een actieblok wordt weergegeven als een rechthoek met daarin een werkwoord als omschrijving van de functie (zie figuur 4.1). Actieblokken zijn met de buitenwereld verbonden met relatiefactoren. Besturing
Invoer
Activiteit
Uitvoer
Mechanisme Figuur 4.1: Actieblok met relatiefactoren
Hoofdstuk 4: Modelvorming
19
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Deze relatiefactoren geven onder andere de relatie tussen verbonden actieblokken weer. Relatiefactoren vallen uiteen in vier categorieën: -
4.1.1.
Invoer: Uitvoer: Besturing: Mechanisme
materiaal of informatie die bewerkt wordt; verwerkt materiaal of verwerkte informatie die de blackbox uitstroomt; instructies, voorwaarden en criteria aan de hand waarvan de activiteit plaatsvindt; bron van de activiteit; concreet de personen of apparatuur, die de activiteit uitvoeren.
Eerste aggregatieniveau: het overkoepelde proces
Sluisgegevens Verkeersregels Toewijzingsstrategie
Beperkingen Beoordelingscriteria
Aanmeldingen Externe factoren
Scheepvaartafhandeling bij de Noordersluis
Sluisplanning
Fysieke componenten Systeemgrens
Figuur 4.2: Eerste aggregatieniveau: het overkoepelende proces
Proces:
Het overkoepelde proces
Functie:
De afhandeling van het scheepvaartverkeer bij de Noordersluis
Doel: In- en uitvoerstroom:
Hoofdstuk 4: Modelvorming
Genereren van een planning volgens een standaard methode, waarbij wordt gestreefd naar een vlotte en veilige afhandeling van het scheepvaartverkeer Invoer: aanmeldingen, externe factoren; Uitvoer: sluisplanning
20
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
4.1.2.
Tweede aggregatieniveau: scheiding tussen het informatiesysteem en het verkeerssimulatiemodel
Zoals te zien is in figuur 4.3, wordt het eerste aggregatieniveau opgesplitst in twee hoofdfuncties, waardoor duidelijk onderscheid wordt gemaakt tussen de activiteiten van een meer administratieve aard en de fysieke activiteiten, zoals het varen en schutten. De belangrijkste component van het informatiesysteem (bovenste actieblok in figuur 4.3) is de planningsmotor. De planningsmotor heeft als doel de planning op te stellen en doet dit door experimenten uit te voeren met behulp van het verkeerssimulatiemodel. Voor een willekeurige schutvolgorde kan de verkeersafwikkeling worden nagebootst. Op deze manier kan inzicht worden verkregen in het gedrag van het systeem. De planningsmotor zal het experiment beoordelen aan de hand van gegevens, zoals wachttijden en schuttijden, die uit de simulatie worden verkregen. - Het verkeerssimulatiemodel dient als tool bij het opstellen van de planning In de figuur worden alleen de in- en uitvoerstromen weergegeven.
Informatiesysteem
Sluisplanning
Aanmeldingen
Plannen Prestatieindicatoren
Schutschema, scheepsgegevens
Simuleren
Externe factoren
Verkeerssimulatiemodel Systeemgrens
Figuur 4.3: Tweede aggregatieniveau: scheiding tussen het reële systeem en het informatiesysteem
Proces:
Plannen
Functie:
Uitvoeren van de ‘abstracte’ activiteiten, waarvan het plannen de voornaamste is
Doel:
Het opstellen van een planning voor een willekeurige dag, door te experimenteren met behulp van een verkeerssimulatiemodel
In- en uitstroom:
Invoer: aanmeldingen; Uitvoer: schutschema, scheepsgegevens en uiteindelijk de sluisplanning
Hoofdstuk 4: Modelvorming
21
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Proces Functie Doel: In- en uitvoerstroom
Hoofdstuk 4: Modelvorming
Simuleren Simuleren van de verkeersafwikkeling volgens een schutschema, dat is opgesteld door de planningsmotor Bepalen van onder andere de schut- en wachttijden behorende bij het schutschema, dat wordt gehanteerd Invoer: schutschema, scheepsgegevens, externe factoren; Uitvoer: prestatieindicatoren
22
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
4.1.3.
Derde aggregatieniveau: nevenfuncties van het informatiesysteem en het verkeerssimulatiemodel Beoordelingscriterium Toewijzingsstrategie
Beperkingen Sluisgegevens
Aanmeldingen
Registreren en rangschikken van gegevens
Toewijzingsstrategie Beperkingen
Toewijzingsstrategie
Aanbod voor een dag
Schutvolgorde bepalen of wijzigen
Schutschema, scheepsgegevens
Sluisplanning Beoordelen verkeersafwikkeling
Planningsmotor Planningsmotor
Plannen
Voorlopige planning
Vaargegevens schepen
Externe factoren
Inlezen gegevens en genereren schepen
Beperkingen Verkeersregels
Toewijzingsstrategie
Schepen
Verkeers afwikkeling simuleren
Fysieke componenten
Simuleren
Schepen
Verzamelen en uitvoeren relevante gegevens
Prestatie-indicatoren
Figuur 4.4: Derde aggregatieniveau: de drie hoofdprocessen van het informatiesysteem en het verkeerssimulatiemodel
Hoofdstuk 4: Modelvorming
23
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Plannen
Proces:
Registreren en rangschikken van gegevens
Functie:
Het verwerken en ordenen van aanmeldingen en het rangschikken van deze gegevens naar prioriteit.
Doel:
Produceren van de juiste input voor de planningsmotor
In- en uitvoerstroom:
Invoer: aanmeldingen voor een zekere periode; Uitvoer: aanmeldingen voor een bepaalde dag, gerangschikt naar prioriteit
Proces:
Schutvolgorde bepalen of wijzigen
Functie:
Vaststellen van (gewenste) volgorde, waarin de schepen worden geschut
Doel:
Bepalen van het gedrag van het systeem, bij het hanteren van deze schutvolgorde. Hierbij wordt gebruik gemaakt van het verkeerssimulatiemodel
In- en uitvoerstroom:
Invoer: aanbod voor een dag naar prioriteit; Uitvoer: schutschema, scheepsgegevens
Proces:
Beoordelen verkeersafwikkeling
Functie:
Vaststellen of het experiment voldoet aan de opgelegde beperkingen en vergelijken van de experimentresultaten met andere uitgevoerde experimenten
Doel:
Bepalen van de meest geschikte volgorde om de schepen te schutten
In- en uitvoerstroom:
Invoer: prestatie-indicatoren; Uitvoer; voorlopige planning, sluisplanning
Simuleren
Proces:
Inlezen gegevens en genereren schepen
Functie:
Inlezen van de gegevens vanuit het informatiesysteem en het vaststellen van de noodzakelijke vaaractiviteiten van de schepen
Doel:
Produceren van de benodigde input voor de simulatie
In- en uitvoerstroom:
Invoer: scheepsgegevens, schutschema, externe factoren; Uitvoer: schepen
Proces
Simuleren verkeersafwikkeling scheepvaart
Functie
Het in scène zetten van de verkeersafwikkeling bij het hanteren van een bepaalde schutvolgorde met als hoofddoel:
Doel
Het verkrijgen van gedetailleerde informatie over schut- en wachttijden
In- en uitvoerstroom
Invoer: schepen; Uitvoer: schepen met bijbehorende informatie over wachttijden en schuttijden
Hoofdstuk 4: Modelvorming
24
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Proces:
Verzamelen en uitvoeren relevante gegevens
Functie:
Verzamelen van relevante scheepsgegevens
Doel:
Uitvoeren van de benodigde gegevens voor de planningsmotor, die het experiment moet beoordelen
In- en uitvoerstroom:
Invoer: schepen; Uitvoer: (interne) prestatie-indicatoren
Een uitvoerige, meer gedetailleerde beschrijving van alle componenten en processen, die zich afspelen in het informatiesysteem en het simulatiemodel wordt achtereenvolgens in hoofdstuk 5 en hoofdstuk 6 gegeven.
4.2.
Algemene beschrijving van het planningsproces
De planning wordt opgesteld door de planningsmotor. Hierin wordt het aanbod ingedeeld volgens een de toewijzingsstrategie, behandeld in paragraaf 3.4.3. In figuur 4.8 is globaal het planningsproces weergegeven. De hoofdlijnen worden hieronder kort behandeld. In de volgende hoofdstukken wordt dieper op het proces ingegaan. In de beschrijving wordt gesproken van een ingepland schip, een nieuw schip, een variant en van een voorlopige planning. Bij het lezen van de volgende hoofdstukken is het relevant om te weten in welk verband deze vier termen worden gebruikt: -
Een schip is ‘ingepland’ op het moment dat deze een plek heeft gekregen in de voorlopige planning. Bijvoorbeeld: op het moment dat het tweede schip uit figuur 4.8 de nieuwe invoer vormt, dan is het eerste schip ‘ingepland’;
-
Met een ‘nieuw schip’ wordt het schip aangeduid dat zal worden ingepland. Uit het voorbeeld hierboven is het tweede schip dan het zogenaamde ‘nieuwe schip’.
-
Een variant kan worden gedefinieerd als een mogelijkheid of één van de mogelijkheden, die wordt geboden om het nieuwe schip in de voorlopige planning in de delen. Bij het onderling vergelijken van varianten worden dus de verschillende mogelijkheden om een nieuw schip in te plannen met elkaar vergeleken;
-
Een voorlopige planning wordt gedefinieerd als een planning die nog niet volledig is; er is slechts een aantal schepen ingepland. De betreffende schuttijden en vaarschema’s van bijbehorende schepen staan daarom nog lang niet vast. Pas als alle schepen voor een bepaalde dag zijn ingepland, wordt er gesproken van een definitieve planning.
Uitgangspunt voor het opstellen van de planning vormt een lijst met aanvragen voor een willekeurige dag, gerangschikt naar prioriteit. De prioriteit hangt samen met de strategie, die werd beschreven in paragraaf 3.4.3. De schepen worden ingepland naar volgorde van deze lijst. Ontheffingsschepen krijgen hierbij de hoogste prioriteit. Op die manier kan voor zo’n tijgebonden schip worden vastgesteld wat de eerste tijpoort is, die kan worden benut en kan men vervolgens, bij het inplannen van de overige schepen, een beperking opleggen, die betrekking heeft op de eerste regel (zie paragraaf 3.4.3). Dan zijn de stroomschepen aan de beurt. Voor enkel stroomgebonden schepen is het aantal tijpoorten groter en bovendien de tijd tussen twee opeenvolgende poorten minder groot. Voor hen geldt dezelfde procedure als voor ontheffingsschepen. De volgende op de prioriteiten lijst zijn de lijndiensten en ten slotte alle overige schepen. Het schip bovenaan de lijst zal dus als eerste worden ingedeeld. Aangezien dit het eerste schip betreft zijn de procedures vrij eenvoudig, slechts één oplossing is denkbaar. Dan volgt het tweede schip. In de meeste gevallen zullen zich ook hier geen problemen voordoen en ligt de oplossing voor de hand. Vervolgens is het derde schip aan de beurt en zo worden achtereenvolgens alle schepen in de planning verwerkt. Hoofdstuk 4: Modelvorming
25
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Het zal duidelijk zijn dat het indelen van het tiende schip een stuk minder eenvoudig zal zijn dan het inplannen van bijvoorbeeld het derde schip. Er zullen ongetwijfeld conflictsituaties optreden, namelijk wanneer twee of meerdere schepen rond dezelfde tijd geschut willen worden. In dergelijke situaties zal minstens één schip moeten wachten. Door de schutvolgorde of het aantal schepen per schutting te wijzigen verschuift deze wachttijd van het ene naar het andere schip. Vaak zijn meerdere oplossingen mogelijk. De vraag is nu welk schip (het grootste deel van) deze wachttijd op zijn bord krijgt. Hiervoor worden de spelregels van het systeem toegepast. Allereerst wordt ingegaan op het volgende: Welke verschillende schutmogelijkheden worden bekeken en hoe worden deze bepaald? Allereerst wordt gekeken of het nieuwe schip bij één van de schuttingen uit het tijdschema, zoals dat er tot zover uit ziet (voorlopige planning) kan worden ingedeeld. Als de resterende ruimte in de sluiskolk voldoende groot is voor het nieuwe schip én de aankomst- of vertrektijden van de schepen verschillen niet al te veel, dan wordt deze schutcombinatie als één van de mogelijkheden aangedragen (voor meer gedetailleerde informatie hierover, zie bijlage VI.2). Er kunnen meerdere combinaties mogelijk zijn. Iedere mogelijke combinatie wordt bekeken (zie figuur 4.5). Het nieuwe schip krijgt het schutnummer toegewezen, gelijk aan dat van het schip waarmee het nieuwe schip tegelijkertijd geschut gaat worden. Verder verandert er niets aan de schutvolgorde. Iedere mogelijke combinatie (variant) wordt in scène gezet met behulp van het verkeerssimulatiemodel. De procedure herhaalt zich voor iedere mogelijke schutcombinatie (maximaal drie). Schutting 1 Schutting 2 Schutting 3 Nieuw schip Schutting 4 Schutting 5
?
? ? tijdas Figuur 4.5: Tegelijkertijd schutten
Vervolgens wordt de mogelijkheid bekeken om het schip in z’n eentje te schutten. Die mogelijkheid is er natuurlijk altijd, de vraag is echter wanneer, in welke volgorde dit dan moet gebeuren (zie figuur 4.6). Bij dit volgordeprobleem wordt gestuurd volgens een de reeds besproken ‘spelregels’ van het systeem (zie paragraaf 3.4.3). Dit gebeurt door experimenten uit te voeren, net zolang totdat aan de spelregels en randvoorwaarden wordt voldaan. Schutting 1 Schutting 2 Schutting 3 Nieuw schip Schutting 4 Schutting 5
2
3
1
tijdas Figuur 4.6: Enkel schutten
Welke gegevens uit de verkeerssimulatie worden bestudeerd voor het beoordelen van een variant en voor het vergelijken van varianten onderling? Om te beoordelen of een variant wel of niet aan de regels voldoet en om varianten onderling te vergelijken wordt tijdens de simulatie een aantal gegevens bijgehouden, de zogenaamde interne prestatie-indicatoren. Intern wil zeggen dat de indicator slechts een rol speelt bij een activiteit of beslissing van een component binnen het systeem. De prestatie-indicatoren, die bij de beoordeling van het totale systeem worden gebruikt komen in hoofdstuk 8 aan de orde.
Hoofdstuk 4: Modelvorming
26
Eerste schip
Hoofdstuk 4: Modelvorming Vijfde schip
Schutmogelijkheden bepalen
Varianten vergelijken
Keuze
Keuze
Voorlopige planning
Varianten vergelijken
Keuze
Experimenteren met simulatie
Varianten vergelijken
Keuze
Experimenteren met simulatie
Varianten vergelijken
Schutmogelijkheden bepalen
Experimenteren met simulatie
Schutmogelijkheden bepalen
Experimenteren met simulatie
Varianten vergelijken
Planningsproces Experimenteren met simulatie
Schutmogelijkheden bepalen
Vierde schip
Schutmogelijkheden bepalen
Derde schip
Tweede schip
Nieuwe aanmelding
Keuze
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Figuur 4.8: Schematisatie van het planningsproces in zijn geheel
27
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
De interne prestatie-indicatoren zijn: -
Wachttijd vóór de sluis van ieder individueel schip: Hiermee wordt het verschil aangeduid tussen de ETA/ETD van het schip en het tijdstip dat het schip daadwerkelijk richting sluis mag gaan varen. Hierbij wordt opgemerkt dat wanneer deze toestemming aan het schip verleent wordt, dan kan het schip altijd direct de sluis binnen varen. De wachttijd van een tijgebonden schip is het verschil tussen het tijdstip dat zijn eerste tijpoort open gaat en het moment dat het schip richting sluis mag gaan varen. De tijd tussen de ETA van het schip en het openen van zijn eerste tijpoort wordt niet als wachttijd geregistreerd;
-
Wachttijd in de sluis van ieder individueel schip De wachttijd in de sluis van het eerste schip, indien twee schepen tegelijkertijd worden geschut;
-
De totale wachttijd voor de sluis van alle schepen: Dit is de som van alle wachttijden voor de sluis van de individuele schepen uit de voorlopige planning;
-
Tijpoort: Voor ieder tijgebonden schip wordt het tijdstip geregistreerd, dat zijn eerste tijpoort open gaat. Dit is het begintijdstip van de eerst mogelijke periode waarin voor het betreffende schip wordt voldaan aan de eisen van het horizontale en/of het verticale getij (de horizontale en de verticale tijpoort, zie paragraaf 2.2). Tevens wordt het begintijdstip van de tijpoort, die daadwerkelijk wordt benut, geregistreerd.
Welke beperkingen gelden er ten aanzien van deze prestatie-indicatoren? Indien een beperking wordt opgelegd, dan houdt dat in dat een bepaalde waarde niet overschreden mag worden of dat een bepaalde gebeurtenis moet worden vermeden. Om de spelregels van het systeem te kunnen naleven is het noodzakelijk om beperkingen op te leggen. De beperkingen worden daar gelegd, waar de regels worden overtreden. De beperkingen hebben betrekking op de individuele beoordeling en bepalen of een variant al of niet geldig is. De beperkingen, die door de onderzoeker zijn opgelegd, luiden als volgt: -
Voor ieder tijgebonden schip wordt in het eerste experiment met het schip, bepaald wat de eerst mogelijke tijpoort is, die het schip zou kunnen halen. Wanneer het schip in de erop volgende experimenten met meerdere schepen, deze tijpoort niet haalt is de variant ongeldig (regel één en regel twee). De volgorde van schutten wordt dan aangepast, net zolang tot dat het tijgebonden schip zijn tijpoort wel haalt. Dit betekent dat het nieuwe schip steeds een schutting later wordt ingedeeld. Hiervoor moeten steeds opnieuw simulaties worden uitgevoerd. Meestal zal het nieuwe schip dan pas na het tijgebonden schip geschut kunnen worden;
-
Voor lijndiensten wordt een wachttijdbeperking opgelegd. Indien de maximale wachttijd voor de sluis, gesteld op 45 minuten, wordt overschreden, dan is de variant niet geldig. Indien het aanbod op een bepaald moment zodanig groot is, dat niet kan worden voldaan aan deze wachttijdbeperking, dan zal het schip De wachttijd in de sluis bedraagt voor alle schepen maximaal 30 minuten. Indien deze tijd wordt overschreden, is de variant eveneens niet geldig.
Tenslotte geldt nog de passagebeperking, die door het getij wordt opgelegd. Deze beperking heeft betrekking op de validiteit van de simulatie: -
Als tijdens de simulatie blijkt dat niet wordt voldaan aan deze beperkingen wordt tevens de variant ongeldig verklaard.
Hoofdstuk 4: Modelvorming
28
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Hoe luidt het beoordelingscriterium dat wordt gebruikt bij de vergelijking van verschillende varianten? Alleen geldige varianten worden vergeleken. Dit houdt in dat de ‘regels hierbij niet overtreden worden’. De hinder voor de scheepvaart vertaalt zich nu slechts naar concrete wachttijden. Dit betekent dat de variant met de minste totale wachttijd van alle schepen (voor de sluis) wordt gekozen.
4.3.
Communicatie tussen beide systemen
De communicatie tussen het informatiesysteem en het verkeerssimulatieprogramma vormt een belangrijk onderdeel van het totale systeem. Hierbij is het van belang dat de informatie, waarin alle relevante gegevens worden ‘doorgegeven’, juist wordt ontvangen. De informatiestromen verlopen via bestanden, die voor de ‘ontvanger’ deel uitmaken van de invoer. Het moet voor de onderzoeker eenvoudig zijn deze communicatie te controleren en eventueel te manipuleren, om een goede verificatie uit te kunnen voeren. Allereerst wordt de informatie-uitwisseling van het informatiesysteem, de planningsmotor, naar het verkeerssimulatiemodel behandeld.
4.3.1.
Informatiestroom naar het verkeerssimulatiemodel
De informatiestroom naar het verkeerssimulatiemodel bestaat uit de volgende onderdelen: Schutschema In het schutschema (schutlist.txt) worden alle schepen weergegeven, die voor een zeker experiment het aanbod representeren. De planningmotor heeft voor deze schepen globaal de schutvolgorde bepaald. Ieder schip op deze lijst krijgt dus een nummer mee, dat betrekking heeft op de volgorde van schutten. Tijpoorten Hierin wordt voor iedere horizontale en verticale tijpoort het tijdstip weergegeven, dat de poort opent en sluit. Sluisinformatie Deze informatie heeft geen betrekking op de karakteristieken van de sluis zelf, zoals de afmetingen en de operatietijd; deze karakteristieken maken deel uit van de constante invoer voor het simulatiemodel. De informatie betreft het tijdstip en de zijde dat de sluis geopend is aan het begin van de simulatiedag en is gebaseerd op gegevens uit de planning voor de voorgaande dag. Lichterschepen Schepen, die eerst gelichterd moeten woren, alvorens zij in de Noordersluis kunnen worden geschut, worden in dit model ook beschouwd. Zij kunnen op de simulatiedag aankomen, gelichterd worden of moeten die dag geschut worden. In hoofdstuk 6 worden deze activiteiten toegelicht en wordt tevens beschreven waarom deze schepen al bij aankomst worden meegenomen. Via deze informatiestroom wordt voor ieder ‘lichterschip’ de activiteit doorgegeven.
4.3.2.
Informatiestroom naar het informatiesysteem
Na afloop van iedere simulatierun moeten de gegevens uit deze run worden doorgestuurd naar de planningsmotor. De informatiestromen hierbij zijn: Signaal Om deze stroom van informatie te beperken, worden de resultaten tijdens de simulatie al getoetst aan de beperkingen (zie paragraaf 4.2). Wanneer hier niet aan wordt voldaan kan de informatiestroom worden beperkt tot een signaal dat aangeeft of de voorgestelde planning geldig is of niet. De planningsmotor weet precies welke handelingen hij moet verrichten bij de verschillen signalen. Hoofdstuk 4: Modelvorming
29
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Dit signaal kan zijn: -
-
Geldig: Het experiment voldoet aan alle eisen en kan worden beschouwd als een geldige variant. Bijbehorende wachttijden, die de planningsmotor gebruikt bij de afweging worden hierbij doorgegeven; Ongeldig: Het experiment is op basis van de ‘spelregels’ van het model afgekeurd; Opnieuw: Het experiment is niet realistisch; er wordt niet voldaan aan de getijbeperkingen. Het nieuwe schip moet een getij over liggen. De nieuwe tijppoort voor het schip wordt hierbij doorgegeven. De planningsmotor zal de schutvolgorde hierop aanpassen en opnieuw een simulatie uitvoeren.
Resultaten De resultaten van ieder geldig experiment worden opgeslagen in een apart bestand. Pas als bekend is met welke variant wordt doorgegaan, worden de gegevens van de betreffende variant, zoals bijvoorbeeld de schuttijden en aanlooptijden, ingelezen en toegekend aan de betreffende schepen (aanvragen).
4.4.
Systeem variabelen
Met het oog op het programma van eisen van het model zijn de volgende systeemvariabelen in het model gedefinieerd: De invoergenerator-variabelen Zowel het aantal schepen dat gegenereerd wordt, als de eigenschappen van iedere individuele aanvraag, dienen variabel ingesteld te worden. Op die manier kan de intensiteit van het scheepvaartverkeer in het model, de samenstelling van verschillende type schepen en de schaal ervan worden gewijzigd. Vaar- en doorlooptijden van ieder schip De duur van de activiteiten, die door het schip worden uitgevoerd zijn vastgesteld, aan de hand van kwalitatieve opinies van ervaren personen uit de praktijk. De vaar- en doorlooptijden van de schepen bepalen sterk de uitkomsten van het model. Benodigd aantal sleepboten van een schip Het benodigd aantal sleepboten van een bepaald type schip onder bepaalde omstandigheden is tevens een invoervariabele van het model. De waarden kunnen als dit nodig wordt geacht eenvoudig worden gewijzigd. Het totaal benodigd aantal sleepboten in de tijd wordt gemeten. Toewijzingsstrategie De toegepaste strategie kan door de onderzoeker eenvoudig worden gemanipuleerd. Op die manier kan de gevoeligheid van de ‘spelregels’ op het uiteindelijke resultaat worden bestudeerd.
4.5.
Modelinfrastructuur
Het fysieke (vaar)proces van een schip bestaat uit het varen van een route, waarbij de sluis gepasseerd moet worden. Deze activiteiten vragen om een schematisatie (zie figuur 4.9). De modelinfrastructuur bestaat uit een tweetal componenten: a) de vaarwegen en b) de Noordersluis. Beide worden achtereenvolgens in paragraaf 4.5.1 en 4.5.2 behandeld.
Hoofdstuk 4: Modelvorming
30
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Figuur 4.9: Schematisatie van de modelinfrastructuur
Hoofdstuk 4: Modelvorming
31
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
4.5.1.
De vaarwegen
De vaarweg wordt onderverdeeld in een reeks van opeenvolgende vaarwegelementen, met een zekere lengte. Ieder element heeft een specifieke naam (Havenmond, Buitenhaven, Noorderbuitenkanaal, etc). De scheiding tussen twee vaarwegdelen kenmerkt zich door een passagepunt (Pieren, Forteiland, etc). Een schip vaart een vaarwegelement aan één zijde binnen en een tijdstip later vaart het schip er aan de andere zijde weer uit. De lengte van een vaarwegelement vertaalt zich, in combinatie met de (maximale) snelheid van het schip, direct in een bepaalde vaartijd, die het schip nodig heeft om een vaarwegelement te doorlopen (zie paragraaf 4.6). De gemiddelde breedte en de bodemligging van een vaarwegdeel is per element verschillend. Bovendien verandert de waterstand aan westzijde van de sluis voortdurend als gevolg van het getij, waardoor ook de diepte van de vaarweg verandert. Door deze factoren wordt de bevaarbaarheid van het element beperkt (zie ook paragraaf 2.2). Deze beperkingen leiden ertoe dat schepen in bepaalde situaties moeten wachten, voordat zij een vaarwegelement mogen binnen varen. Bepalend voor het bevaren van de infrastructuur in het gebied zijn: -
Het capaciteitsbeslag van ieder schip op een vaarwegdeel; Gevoeligheid van het schip voor getijstromen langs havenmond; De keelclearance van een schip in een vaarwegdeel.
Het capaciteitsbeslag van een schip op een vaarwegdeel is niet alleen afhankelijk van de afmetingen van het schip, maar ook van factoren als wind, lading en voortstuwing van het schip. Het is dus niet eenvoudig om de beperkingen die gelden voor een bepaald deel van de route vast te stellen. Bovendien speelt ervaring, kennis en zelfs het humeur van een loods een rol in de beslissing of een manoeuvre daadwerkelijk wordt uitgevoerd. De beperkingen worden wel van belang geacht voor het uiteindelijke resultaat. Met name in het gebied rondom de sluis heeft de bevaarbaarheid invloed op het hele schutproces. Beperkte passeermogelijkheden voor en achter de sluis leiden namelijk tot grotere lustijden en dus tot grotere cyclustijden (zie paragraaf 4.6). Om deze rede wordt allereerst voor een aantal vaargebieden beperkingen opgesteld. Voor iedere beperking wordt een voorrangsregel opgesteld (zie tabel 4.1). De gevoeligheid van het schip voor getijstromen langs de havenmond is behandeld in paragraaf 2.2. Is het schip vanwege zijn afmetingen stroomgevoelig, dan is het schip beperkt in het bevaren van het vaarwegdeel van de Kruispost naar de nieuwe pieren. Het schip moet op het moment dat de stroming is toegenomen tot de kritische waarde van 0,5 m/s de nieuwe pieren zijn gepasseerd. De beperkingen ten aanzien van het verticaal getij werden tevens behandeld in paragraaf 2.2. In praktijk wordt met behulp van de bodemgegevens en de keelclearance per vaarwegdeel, de vereiste waterstand bepaald. Binnen dit model is de verticale tijpoort voor ieder schip gelijk. Voor ontheffingsschepen geldt, dat de waterstand niet beneden NAP mag komen. Er gelden bovendien een aantal maximumsnelheden binnen het gebied. Schepen zullen bij het naderen van de pieren hun snelheid afzwakken. Buiten de havenmond gelden geen snelheidsbeperkingen. Binnen de pieren en op het Noordzeekanaal gelden de volgende snelheidbeperkingen: Schepen met een diepgang > 8 meter: Schepen met een diepgang tussen de 4 en 8 meter: Schepen met een diepgang < 4 meter:
Hoofdstuk 4: Modelvorming
6,5 mijl per uur; 7,5 mijl per uur; 9, 5 mijl per uur.
32
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Vaarwegdeel
Beperkingen
Havenmond
Geen beperkingen
Buitenhaven
Geen beperkingen
-
Schepen met een lengte groter dan 200 meter of met een gezamenlijke breedte groter dan 60 meter ontmoeten elkaar niet in het Noorderbuitenkanaal. Indien een schip ligt aangemeerd aan de Y-palen is alleen verkeer in één richting mogelijk. In- en uitvarend verkeer kan elkaar dan ontmoeten in de Buitenhaven
Westgaande schepen hebben voorrang
Buitentoeleidingskanaal
Schepen kunnen elkaar hier niet ontmoeten
Westgaande schepen hebben voorrang
Binnentoeleidingskanaal
Schepen kunnen elkaar hier niet ontmoeten
Oostgaande schepen hebben voorrang
Velserkom
Schepen met een lengte groter dan 200 meter ontmoeten elkaar niet in de Velserkom.
Oostgaande schepen hebben voorrang
Geen beperkingen
Oostgaande schepen hebben voorrang
Noorderbuitenkanaal
NZK
Regels -
Tabel 4.1: Vaarwegbeperkingen en voorrangsregels
4.5.2.
De Noordersluis
De sluiskolk heeft een bepaalde lengte, breedte en diepgang, die de dimensies van de sluis aangeven. De dimensies zijn mede bepalend voor het aantal schepen en de afmetingen van het grootste schip dat ineens kan worden geschut: de capaciteit van de sluis. Schepen kunnen aan de westzijde de sluis binnenvaren via het Buitentoeleidingskanaal, aan de Noordzeekanaal-zijde gebeurt dit via het Binnentoeleidingskanaal. De dimensies van de sluis zijn hieronder weergegeven: -
Lengte: Breedte: Diepte:
400 meter; 50 meter; 15 meter.
De dimensies van het grootste schip dat in de sluis geschut kan worden zijn: -
Maximale lengte van een schip: Maximale breedte van een schip: Maximale diepgang van een schip:
325 meter; 45 meter; 13,7 meter.
Schepen met afmetingen groter dan de maximale afmetingen, zullen in het aanbod van scheepvaartverkeer niet voorkomen. Voor het bepalen van de mogelijkheden om schepen tegelijkertijd te schutten worden de schepen ingepast in de sluis. Ieder schip wordt hiertoe gemodelleerd tot een plat vlak met een bepaalde lengte en breedte, die overeenkomt met de werkelijke afmetingen van het schip. Er wordt bij het inpassen geen rekening gehouden met het eventueel meeschutten van sleepboten en andere factoren, die het ruimtebeslag beïnvloeden. Een sluis kan echter nooit volledig gevuld worden. Er moet altijd een
Hoofdstuk 4: Modelvorming
33
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
zekere ruimte tussen de schepen aanwezig zijn. In bijlage VI.2 staat beschreven op welke wijze wordt bepaald of er voldoende ruimte in de sluis aanwezig is om twee schepen tegelijkertijd te schutten. Om geen misverstanden te laten ontstaan omtrent de activiteiten, die tot het schutten behoren en om weer te geven hoeveel tijd die deze activiteiten in beslag nemen, wordt kort ingegaan op de activiteit schutten. De activiteit schutten kan worden opgedeeld in de volgende tijdsintervallen: -
Invaren van de schepen; Operatietijd; Uitvaren van de schepen.
Voor het bepalen van de totale invaartijd van de schepen wordt gerekend vanaf het moment dat het eerste schip met zijn boeg de drempel van de Noordersluis passeert. Het tijdsinterval loopt tot het moment dat het laatste schip in de sluis ligt en de deur gesloten wordt. De operatietijd wordt gedefinieerd als de tijd, die het sluiten van de ene deur, de nivelleertijd en het openen van de deur aan de andere zijde in beslag neemt. De nivelleertijd is de tijd die het omzetten van de kolk van het ene waterniveau naar het andere in beslag neemt. In praktijk wordt voor de operatietijd meestal gerekend met circa 19 minuten. De tijd is opgebouwd uit: -
Deuren sluiten: Deur openen: Omzetten kolk:
4 minuten 3 minuten 12 minuten
In het model zijn deze tijden overgenomen. Zodra de deur geopend is begint het eerste schip met uitvaren. Tot de uitvaartijd van een schip wordt dus ook het losmaken en het afmeren gerekend. Dit tijdstip is het begin van het totale tijdsinterval waarin de schepen de sluis uitvaren. Op het moment dat het schip met zijn achtersteven de sluisdrempel passeert is zijn uitvaartijd verstreken. Het volgende schip in de sluis (indien aanwezig) kan nu gaan uitvaren. Het tijdstip dat het laatste schip de sluisdrempel is gepasseerd wordt geregistreerd als het einde van het interval ‘uitvaren’. De sluis is nu ‘vrij’. Dit tijdstip speelt een belangrijke rol in het proces van de verkeersleider, de sluismeester en de scheduler (zie hoofdstuk 6). In de schutcyclus (schutten van de ene naar de ander zijde en weer terug) is de lustijd een belangrijk begrip. De definitie en de relevantie van deze lustijd worden in paragraaf 4.6.3 beschreven.
4.6.
Scheepvaart binnen het model
De planningsmotor werkt met aanvagen. Een aanvraag representeert het VoorBericht van Aankomst (VBA, zie paragraaf 2.3). Iedere aanvraag wordt gecreëerd door de invoergenerator, waarbij, zoals dit in werkelijkheid gebeurt, alle relevante gegevens van het schip worden meegegeven. Een aanvraag kan worden beschouwd als een abstracte component, die in het verkeerssimulatiemodel de fysieke vorm van het schip krijgt. Alle eigenschappen van het schip en het aanbod van schepen in het algemeen wordt in deze paragraaf centraal behandeld. Er wordt onderscheid gemaakt tussen verschillende type schepen, bijvoorbeeld bulkcarriers en passagiersschepen, elk met een verschillend aankomstenpatroon. Ieder schip heeft een bepaalde lengte, breedte en diepgang. Daarnaast heeft het schip een bepaalde bestemming. De bestemming is mede bepalend voor het tijdstip of de dag dat het schip in de
Hoofdstuk 4: Modelvorming
34
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
sluisplanning wordt opgenomen. Aan de hand van deze bestemming kan een vaarschema voor een schip worden opgesteld, waarin de route en de vaartijden van het schip zijn vastgelegd. Bovendien heeft het schip nog een aantal eigenschappen, zoals de tijpoort, een prioriteit en een benodigd aantal sleepboten.
4.6.1.
Typen
De voor dit onderzoek relevante schepen zijn: Alle schepen met een bestemming, gelegen achter de sluis, die vanwege hun afmetingen enkel in de Noordersluis geschut kunnen worden. Er wordt onderscheid gemaakt tussen de volgende typen schepen: -
Bulkcarriers; Bulkcarriers_indirect met een diepgang > 13,7 meter. Deze worden eerst gelichterd aan de overslagpalen in het Noorderbuitenkanaal Bulkcarriers_direct met een diepgang ≤ 13,7 meter. Deze schepen kunnen direct geschut worden
-
Containerschepen;
-
General Cargoschepen;
-
Refrigerated schepen;
-
Roroschepen;
-
Passagiersschepen;
-
Tankers;
-
Chemical Tankers;
-
Dredgers;
-
Autoschepen;
-
Overig scheepvaartverkeer.
4.6.2.
Dimensies
De lengteafmetingen van het schip worden beschouwd als stochastische grootheden en worden in dit model bepaald aan de hand van verdelingen. Voor ieder type schip zijn de minimale en de maximale waarden voor de lengte vastgesteld op basis van gegevens uit het jaar 2001 (zie tabel 4.2). De gegevens zijn afkomstig uit het programma CESAR. De uitkomstenruimte ervan is uniform verdeeld, wat inhoud dat iedere waarde binnen deze ruimte gelijke kans heeft om ‘geloot’ te worden.
Hoofdstuk 4: Modelvorming
35
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Bulkcarriers_OPL
Minimale waarde [m] 245,5
Maximale waarde [m] 289,0
Bulkcarriers_Direct
107,6
290,0
Containerschepen
175,8
189,4
General Cargoschepen
100,5
225,0
Refrigerated schepen
108,0
163,0
Roro schepen
103,0
227,3
Passagiersschepen
110,4
293,2
Tankers
108,8
244,5
Chemical Tankers
107,0
228,6
Dredgers
99,9
113,2
Autoschepen Overige schepen
99,9 39,0
243,8 224,9
Scheepstype
Tabel 4.2: Minimale en maximale lengte in meters voor ieder type schip
De breedte van het schip wordt beschouwd als een functie van de lengte. Hoe de breedte van ieder type schip in verhouding staat tot de lengte van het schip is weergegeven in bijlage III. Per geval is een lineaire functie opgesteld, die deze verhouding zo dicht mogelijk benaderd. De richtingscoëfficiënt en de constante waarde uit deze functie zijn weergegeven in tabel 4.3. Richtingscoëfficiënt
Constante waarde
Bulkcarriers_OPL
0.1425
3.1282
Bulkcarriers_Direct
0.1399
1.5846
Containerschepen
0.3669
-37.725
General Cargoschepen
0.1227
3.727
Refrigerated schepen
0.1068
5.7951
Roro schepen
0.1425
3.1282
Passagiersschepen
0.1046
6.2605
Tankers
0.1557
-0.6101
Chemical Tankers
0.1566
-0.2252
Scheepstype
Dredgers Autoschepen Overige schepen
0
20
0.1125
9.484
0.1425
3.1282
Tabel 4.3: Richtingscoëfficiënt en constante waarde van de lineaire functie voor de lengte/breedte verhouding van schepen
Uit studie van de gegevens is gebleken dat slechts Tankers en Bulkcarriers een diepgang kunnen hebben, waarvoor ontheffing nodig zou kunnen zijn. Daarom krijgen alleen deze type schepen een diepgang, die op dezelfde wijze wordt bepaald als de breedte van het schip. Tabel 4.4 toont de waarden voor de richtingscoëfficiënt en de constante waarde van de lineaire functie voor de lengte/diepgang verhouding. Voor de overige typen schepen heeft de diepgang in dit model geen betekenis en wordt deze gelijk gesteld aan nul.
Hoofdstuk 4: Modelvorming
36
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Bulkcarriers_OPL
Richtingscoëfficiënt 0
Bulkcarriers_Direct
0.059
1.9
Tankers
0.029
6.1
Scheepstype
Constante waarde 13,8
Tabel 4.4: Richtingscoëfficiënt en constante waarde van de lineaire functie voor de lengte/diepgang verhouding van schepen
4.6.3.
Bestemming en vaarschema
Een schip heeft naast de fysieke eigenschappen nog een aantal andere eigenschappen. Ten eerste wordt aan ieder schip een zeker vaarschema toegekend. Hierin is de route van het schip vastgelegd, met bijbehorende vaartijden per vaarwegelement. Het vaarschema staat geheel los van het tijdstip waarop de route wordt afgelegd. Ieder schip in het havengebied heeft namelijk een bepaald vaardoel: een aantal schepen vaart naar een terminal om daar zijn lading te laden of te lossen, andere schepen varen naar de Havenmond om de haven te verlaten. Voor het bereiken van dit vaardoel moet het schip een reeks van activiteiten doorlopen. Het vaarschema van een schip kan worden gedefinieerd als een serie van opeenvolgende tijdsintervallen, die het tijdsbeslag van deze activiteiten weergeeft. De activiteiten worden geschematiseerd tot de volgende (zie figuur 4.10): -
Varen: het varen van de ene locatie naar de andere; Schutten: het schutten in de Noordersluis; Wachten: wachten tot aan de volgende activiteit kan worden deelgenomen.
Iedere activiteit begint op een bepaalde locatie en eindigt op de locatie waar de andere activiteit begint. Deze locaties komen overeen met de passagepunten, die werden beschreven in paragraaf 4.5: de modelinfrastructuur. De duur van de meeste activiteiten, oftewel de lengte van een tijdsinterval, is niet voor ieder schip gelijk. Zo zal een relatief klein containerschip aanzienlijk minder tijd nodig hebben om de sluis in te varen dan de grote bulkcarrier, die met zijn afmetingen maar net in de sluis past. Bovendien gelden er een aantal snelheidbeperkingen in het gebied (zie paragraaf 4.5).
Varen
Varen
Varen
Varen
Wachten
Wachten
Varen
Schutten
Varen
Wachten
Wachten
Varen
Varen
Laden/ Lossen
Oostgaand verkeer Varen
Varen
Varen
Varen
Varen
Wachten
Schutten
Varen
Wachten
Varen
Varen
Wachten
Wachten
Westgaand verkeer Kruispost
Nieuwe pieren
Oude pieren
Forteiland
Zwaaipunt
Sluis West
Sluis Oost
Velserkom
VelsenNoord
Houtrak
Figuur 4.10 Vaarschema van het schip
Hoofdstuk 4: Modelvorming
37
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Om enigszins onderscheid te maken tussen verschillende schepen en de tijd, die zij nodig hebben voor het uitvoeren van bepaalde activiteiten uit het vaarschema, wordt ieder schip in een bepaalde categorie geplaatst. De eerste categorie heeft betrekking op grote trage schepen, onder de tweede categorie vallen de middelgrote schepen en grote schepen, die door hun uitrusting relatief goed manoeuvreerbaar blijven. Tenslotte vallen onder de derde categorie de kleinere schepen. De eerste indeling wordt gemaakt op basis van lengten van schepen. In tabel 4.5 zijn voor drie verschillende categorieën de tijdsintervallen uit het vaarschema weergegeven. De schepen worden als volgt bij één van deze categorieën in gedeeld: -
Categorie I: Schepen met een lengte groter dan 180 meter, behalve Containerschepen, Passagiersschepen en Roroschepen met een lengte kleiner dan 200 meter; Categorie II: Schepen met een lengte tussen de 150 en 180 meter en Containerschepen, Passagiersschepen en Roroschepen met een lengte tussen de 170 en 200 meter; Categorie III: Schepen met een lengte kleiner dan 150 meter en Containerschepen, Passagiersschepen en Roroschepen met een lengte kleiner dan 170 meter.
categorie
Westelijk traject A5 A4
A3
A2
A1
invaren
Oostelijk traject uitvaren A1
A2
A3
1
40
5
8
8
6
15
9
6
5
45
2
35
4
7
6
5
12
7
5
4
42
3
32
4
5
5
4
10
6
4
4
35
Tabel 4.5: Vaartijden van verschillende categorieën schepen
Het zal in de praktijk regelmatig voorkomen, dat een schip niet in één vloeiende beweging de sluis kan binnenvaren, maar even moet wachten in bijvoorbeeld de buitenhaven of het Noorderbuitenkanaal. Waar het schip precies moet wachten hangt af van het capaciteitsbeslag van de interfererende schepen op de betreffende vaarwegelementen. In dit model is het de taak van de verkeersleider op het VerkeersLeidingsCentrum (VLC) om exact te bepalen waar en op welk tijdstip de schepen elkaar kunnen passeren. Aan de hand hiervan bepaalt de verkeersleider wanneer het schip mag vertrekken vanaf de Kruispost of de Houtrak. Deze tijd hangt samen met de lustijd. De lustijd kan worden gedefinieerd als de tijd tussen het moment dat het laatste schip met zijn achtersteven de sluis verlaat en het moment dat het eerste schip met zijn achterkant de sluisdrempel passeert. Om het proces te versnellen zal men trachten deze lustijden te minimaliseren. Een vaaractiviteit begint op het moment dat de boeg van het schip een passagepunt passeert en eindigt op het moment dat de boeg het volgende punt passeert. Voor de activiteiten rondom de sluis geldt een iets andere richtlijnen (zie paragraaf 4.5.2).
Hoofdstuk 4: Modelvorming
38
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
4.6.4.
Prioriteit
De prioriteit van een schip hangt samen met de toewijzingsstrategie, die in de vorige paragraaf werd behandeld. Op basis van deze strategie krijgt ieder schip een bepaalde prioriteit toegewezen. De prioriteitsindeling is in tabel 4.6 weergegeven.
Soort schip Ontheffingsschepen Stroomschepen en tegelijkertijd lijndienst Stroomschepen Lijndiensten Over
prioriteit 1 2 3 4 5
Tabel 4.6: prioriteit van schepen
De onderlinge prioriteit van schepen van dezelfde soort wordt bepaald volgens het FCFS-principe.
4.6.5.
Tijpoort van het schip
De tijpoort van een schip wordt in het model gedefinieerd als het eerstvolgende tijdstip na de ETA van het schip, dat het (tijgebonden) schip conform de getijeisen toestemming heeft om vanaf de Kruispost te vertrekken. Dit tijdstip hoeft dus niet gelijk te zijn aan het tijdstip van openen van een horizontale of verticale tijpoort.
4.6.6.
Benodigd aantal sleepboten
Het benodigd aantal sleepboten wordt per schip vóór het opstellen van de planning bepaald. In de regel bestaat voor iedere passage van de Noordersluis een sleepbootplicht om de sluisdeur te beschermen. Schepen voorzien van een of meerde goed werkende boeg- of hekschroeven, zoals bijvoorbeeld roro- en containerschepen, kunnen afwijken van deze regels. Voor dit onderzoek worden de waarden uit tabel 4.7 aangehouden. Tijgebonden schepen worden doorgaans geassisteerd door een extra sleepboot voor. Type schip Autoschepen Bulkschepen_Direct Bulkschepen_Ypalen Chemical Tanker Container schepen Baggerschepen General Cargoschepen Gas Tanker Passagiers schepen Refridgerated schepen Roroschepen Tankers
Benodigd aantal sleepboten 1 2 2 1 1 1 1 1
Tabel 4.7: Benodigd aantal sleepboten per schiptype
Hoofdstuk 4: Modelvorming
39
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
4.7.
Vertaling naar programma
Met betrekking tot het programmeerwerk kan tevens onderscheid worden gemaakt tussen het informatiesysteem en de verkeerssimulatie. Beide zijn uitgevoerd in twee aparte programma’s. -
Het hoofdprogramma Het verkeerssimulatieprogramma
Beide programma’s zijn geschreven in de taal Prosim (zie bijlage VII en IX voor een programmalisting). Deze taal leent zich er uitstekend voor vele tegelijkertijd verlopende processen met meerdere componenten, die elkaar beïnvloeden, te vertalen naar een goed werkend simulatieprogramma. De taal is dus zeer geschikt voor het verkeerssimulatieprogramma. Voor het hoofdprogramma is de taal echter niet zozeer gekozen om haar kwaliteiten: alle routines vinden plaats op hetzelfde tijdstip (met uitzondering van de getijsimulatie, zie paragraaf 5.2.3) en er zijn slechts drie actieve componenten. De voornaamste rede om ook voor het hoofdprogramma de taal Prosim te gebruiken, is om te voorkomen dat interactieproblemen ontstaan met het simulatieprogramma. Prosim gaat uit van een aantal componenten met bepaalde eigenschappen. Levende componenten doorlopen een proces, waarbij zij elkaars attributen en processen kunnen beïnvloeden. Dode componenten daarentegen, voeren zelf geen activiteiten uit; ze zijn slechts informatiedrager. In de volgende twee hoofdstukken zijn schematisaties en procedures ontwikkeld, die achtereenvolgens de processen van de levende componenten het informatiesysteem en het verkeerssimulatiemodel beschrijven. Deze beschrijvingen van processen en interacties vormen de basis voor de vertaling naar het programma. Bovendien zijn de processen binnen het model voor iemand die minder thuis is in de programmeertaal beter en sneller te begrijpen. Er worden vier soorten onderdelen onderscheiden: -
Componenten; Attributen van een component; Proces of deelproces van een component; Procedures of macro’s.
De componenten vormen de logische delen van het systeem, bijvoorbeeld de sluismeester en het schip in het verkeerssimulatiemodel en de invoergenerator en de planningsmotor van het informatiesysteem. De eigenschappen of de kenmerken zijn de attributen van de component. Deze attributen zijn voor te stellen als eigenschappen met een bepaalde waarde, zoals bijvoorbeeld de lengte van een bepaald schip. Het proces van een component kan men zien als een opeenvolging van activiteiten die door de component worden uitgevoerd. Een macro of procedure, die vaak wordt doorlopen, kan buiten het hoofdproces worden uitgevoerd en kan door een willekeurige component worden gebruikt. Er wordt onderscheid gemaakt tussen enkelvoudige componenten en klasse componenten. Een enkelvoudige component kenmerkt zich door het feit dat deze component gedurende de hele simulatieperiode aanwezig is, zoals bijvoorbeeld de sluismeester. De klasse component, zoals bijvoorbeeld het schip, komt slechts een gedeelte van de tijd in het model voor en bovendien kunnen er meerdere tegelijk actief zijn. Een klasse component kan (tijdelijk) tot een verzameling (set) behoren, waarin alle gelijkwaardige klasse componenten met een bepaalde eigenschap of status bijeen zijn gebracht. Andere componenten maken veelal gebruik van zo’n verzameling voor het uitvoeren van bepaalde activiteiten. Tevens komt het voor dat een component wacht op een bepaalde gebeurtenis of op een sein van een andere component, de component is dan passief. Belangrijk bij het lezen van hoofdstuk 5 en 6 is het onderkennen van het verschil tussen activiteiten die tijd kosten en activiteiten die geen tijd in beslag nemen.
Hoofdstuk 4: Modelvorming
40
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
5. Beschrijvend model van het informatiesysteem Dit hoofdstuk geeft een beschrijving van het informatiesysteem. Allereerst worden in paragraaf 5.1 de componenten van het systeem kort beschreven. Er kan onderscheid worden gemaakt tussen dode en levende componenten. De levende componenten doorlopen een bepaald proces in het model. Een proces is daarbij gedefinieerd als een logisch samenhangend geheel van activiteiten, dat door één enkele component wordt uitgevoerd. De processen van de levende componenten worden in paragraaf 5.2 beschreven.
5.1.
Beschrijving van de componenten
Het informatiesysteem kent zes componenten. De componenten worden als volgt gedefinieerd: Main (levende component) De component main voert naast de hoofdtaken om het programma uit te voeren, nog een aantal andere taken uit. Deze taken vallen onder het registreren en rangschikken van gegevens, waarbij alle relevante gegevens voor de planningsmotor worden verzameld en verwerkt tot de juiste input voor het produceren van de planning. Invoergenerator (levende component) De invoergenerator creëert aanvragen volgens een bepaald patroon. Getijgenerator (levende component) De getijgenerator genereert voor een zekere periode het verloop van de waterstand en de stroomsnelheid. Op basis hiervan kunnen de tijpoorten worden vastgesteld. Aanvraag (dode component) De aanvraag is een klasse component en representeert het voorbericht van aankomst (zie paragraaf 2.2) van een bepaald type schip. Planningsmotor (levende component) De planningsmotor verzamelt alle aanvragen voor een bepaalde dag en genereert voor die dag een tijdsplanning. Dit gebeurt met behulp van het verkeersimulatiemodel. Variant (dode component) Net als de aanvraag is een variant een klasse component, met bepaalde eigenschappen. Een variant draagt gegevens, die met behulp van een simulatierun zijn verkregen.
5.2.
Procesbeschrijving van de levende componenten
De processen van de levende componenten worden in deze paragraaf beschreven. Indien het nodig wordt geacht, wordt het proces weergegeven in de vorm van een stroomschema, waarin stap voor stap het proces kan worden nagelopen.
Hoofdstuk 5: Beschrijvend model van het informatiesysteem
41
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
5.2.1.
Proces van main
Als alle benodigde verzamelingen en bestanden voor in- en uitvoer zijn gecreëerd en gespecificeerd worden de attributen van iedere invoergenerator gedefinieerd en aansluitend worden de invoergeneratoren geactiveerd. Vervolgens wordt ook de getijgenerator geactiveerd. De component main wacht tot de getijgenerator voor een hele maand het verloop van de waterstand en de stroomsnelheid heeft gegenereerd. Dan begint de component met het verzamelen van de benodigde informatie voor de eerste dag. Allereerst worden de aanvragen voor die dag verzameld. Hieronder vallen ook de lichterschepen, die na een verblijf aan de Y-palen deze dag geschut dienen te worden. De aanvragen worden gerangschikt naar verwachte aankomst- of vertrektijd. Dit is zoals bekend de verwachte aankomst- of vertrektijd bij de Kruispost of de Houtrak. De vaartijd naar de sluis is vanaf beide punten ongeveer een uur. Het is dus niet nodig de aanvragen te rangschikken naar aankomsttijd bij de sluis. Vervolgens wordt van iedere aanvraag de prioriteit bepaald (zie paragraaf 4.6.4) en zij worden opnieuw gerangschikt. De aanvragen staan nu op volgorde van prioriteit. Aanvragen met gelijke prioriteit staan onderling op volgorde van aankomst- of vertrektijd. De aanvragen worden opgeslagen in de verzameling ‘Aanboddag[j]’. Voor de duidelijkheid krijgt iedere aanvraag een naam gelijk aan een bepaalde letter uit het alfabet. Het schip dat als eerste wordt ingepland krijgt dan de letter A, het tweede de letter B, enzovoorts. Met deze aanduiding wordt in het verkeerssimulatiemodel gewerkt. Tenslotte dient de relevante informatie over de tijpoorten en de sluisstatus te worden opgeslagen in bestanden. Deze bestanden maken onderdeel uit van de communicatie tussen het informatiesysteem en het verkeerssimulatiemodel. Nu kan de planningsmotor worden geactiveerd. De component main wacht vervolgens tot de planningsmotor een definitieve planning heeft opgesteld voor die dag en begint vervolgens weer opnieuw met het verzamelen van alle benodigde informatie voor de volgende dag.
5.2.2.
Proces van de invoergenerator
De invoergenerator creëert nieuwe aanvragen voor een reeks van dertig dagen. De generator is opgesplitst in twaalf aparte generatoren, zodat deze onafhankelijk van elkaar kunnen genereren. Iedere generator creëert aanmeldingen van een bepaald type schip, volgens een verdeeld aankomstenpatroon. Het systeem kent dus twaalf verschillende type schepen (zie paragraaf 4.6.1). Voor het aankomstenpatroon zijn de tijdsintervallen bekeken, tussen twee opeenvolgende schepen van hetzelfde type in het jaar 2001. De gegevens, zijn net als de dimensies van het schip, verkregen uit het programma CESAR. Voor ieder type schip is het gemiddelde voor de tussenaankomsttijd bepaald (zie tabel 5.1). De uitkomstenruimte voor de tussenaankomsttijd is voor ieder type negatief exponentieel verdeeld. De tussenaankomsttijd van twee opeenvolgende schepen van gelijk type wordt geloot uit deze verdeling. Aan de hand hiervan wordt de ETA van het schip bepaald. Iedere aanmelding krijgt een unieke verzameling eigenschappen mee. In paragraaf 4.6 werden alle eigenschappen van het schip behandeld. Het vaarschema wordt in het verkeerssimulatiemodel bepaald.
Hoofdstuk 5: Beschrijvend model van het informatiesysteem
42
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Scheepstype Bulkcarriers_OPL
Gemiddelde tussentijd [minuten] 9247.7
Bulkcarriers_Direct
1216.1
Containerschepen
16073.2
General Cargoschepen
4364.5
Refrigerated schepen
13499.7
Roro schepen
2095.9
Passagiersschepen
6551.1
Tankers
1477.0
Chemical Tankers
1484.7
Dredgers
3478.7
Autoschepen Overige schepen
15089.8
2548.8
Tabel 5.1: Gemiddelde van de tussenaankomsttijd (in minuten) van de verschillende type schepen
5.2.3.
Proces van de getijgenerator
Voordat met de feitelijke planningsactiviteiten wordt begonnen, wordt allereerst een voorspelling gemaakt van het getij aan de kust bij IJmuiden. Voor de hele simulatieperiode wordt zowel het verloop van de waterstand als het verloop van de stroomsnelheid voor die periode gegenereerd. Hiervoor zijn de gemiddelde waterstanden en stroomsnelheden bij springtij en bij doodtij bestudeerd (zie bijlage II). Gedurende de periode van spring- en doodtij (12 uur en 25 minuten) is voor een groot aantal tijdstippen de waterstand en de stroomsnelheid op dat tijdstip vastgesteld. Deze waarden worden door de component ingelezen. Zowel springtij als doodtij komt eens in de circa 14,5 dagen voor (twee maal per maansmaand). Door middel van interpolatie kan nu zowel de waterstand als de stroomsnelheid op een willekeurig tijdstip in deze periode, van circa een maand, worden bepaald. Als beide variabelen voor ieder willekeurig tijdstip bekend zijn, dan kunnen zowel de horizontale als de verticale tijpoorten worden vastgesteld.
5.2.4.
Proces van de planningsmotor
De planningsmotor stelt steeds opnieuw een schutschema op: hierin wordt globaal de schutvolgorde gegeven. Met behulp van de simulatie kunnen meer inzichten worden verkregen in het gehele proces. In het simulatiemodel is dan ook een component actief die deze volgorde logischerwijs kan aanpassen. De input voor de planningsmotor is een lijst met aanvragen, gerangschikt naar prioriteit. Deze lijst is samengesteld door de component main (zie paragraaf 5.2.1). De planningsmotor selecteert de eerste aanvraag. De procedure hiervoor is eenvoudig: het schip krijgt het schutnummer 1 toegewezen, de benodigde informatie voor de simulatie wordt opgeslagen in een bestand en de verkeerssimulatie kan worden uitgevoerd (zie stroomschema 5.1). Hieruit volgen de schut- en vaartijden van het schip. Het kan zijn dat tijdens de simulatie blijkt dat het schip, indien deze tijdgebonden is, niet op tijd een kritisch punt is gepasseerd. Het schip moet dat getij dan overliggen. Dit getij kan betrekking hebben op het horizontaal getij, een combinatie van het horizontaal en het verticaal getij of alleen het verticaal getij, afhankelijk van de dimensies van het schip en het vertrekpunt. Als nu blijkt dat de eerste volgende tijpoort pas de volgende dag is, dan wordt het schip verwijderd van de lijst en begint de procedure opnieuw met het volgende schip. In het andere geval, als het schip moet overliggen, maar schutten
Hoofdstuk 5: Beschrijvend model van het informatiesysteem
43
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
kan wel deze dag nog, dan wordt de simulatie opnieuw uitgevoerd met hetzelfde schip. Het tijdstip dat het schip toestemming heeft anker op te komen (perm_anker_op van het schip) wordt dan aangepast. PLANMOD
Start [deelproces]
A
Nieuwe aanvraag
Is dit het eerste schip van vandaag?
ja
Bepaal het schutnummer van het schip
Het schutnummer van het eerste schip is natuurlijk 1. De aanvraag wordt opgeslagen in de verzameling ‘voorlopige planning’
Zie bijlage V.1 Simulatie voorbereiden, uitvoeren en gegevens inlezen
Moet de simulatie opnieuw worden uitgevoerd?
Simuleren [Deelproces]
ja
Indien dit allereerste schip tijgebonden is en halverwege de simulatie is gebleken dat het schip niet op tijd een bepaald punt is gepasseerd, moet de simulatie opnieuw worden uitgevoerd met hetzelfde schip. Het schip moet echter een getij over liggen. Herhaal vanaf A
nee nee
Vaart het schip vandaag nog richting sluis?
nee
Wijzig de aankomstdag en aankomsttijd van de aanvraag. Selecteer de volgende aanvraag
ja
Lees de gegevens van het schip in Zie stroomschema 5.2 Tegelijkertijd schutten [Deelproces]
Herhaal vanaf Start
Herhaal vanaf A Inlezen [Macro] Het schip zal pas de volgende dag worden geschut. De aanvraag wordt verwijderd van ‘voorlopige planning’ en wordt in de planning voor de volgende dag opgenomen
Stroomschema 5.1 Procedure voor het inplannen van het eerste schip op een bepaalde dag
Het eerst volgende schip wordt geselecteerd. De planningsmotor bepaalt of het schip tegelijkertijd kan worden geschut met (een van) de andere schepen, die al zijn ingepland (zie stroomschema 5.2). Is dit het geval dan krijgt het nieuwe schip een plaats in het schutschema, waarbij zijn schutnummer gelijk wordt aan dat van het schip waar hij bij kan worden geschut. Opnieuw wordt de simulatie voorbereid, uitgevoerd en verwerkt. Iedere geldige variant wordt meegenomen bij de afweging.
Hoofdstuk 5: Beschrijvend model van het informatiesysteem
44
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
PLANMOD
Tegelijkertijd schutten [deelproces]
Zie bijlage VI.2 Bepaal of het schip met een ander schip gelijk geschut kan worden
Samenschutten [Macro]
Kan het schip met een andere schutting mee?
ja
B
Er worden maximaal drie mogelijkheden bekeken. Over het algemeen zullen er ook niet meer opties zijn om het schip tegelijkertijd te schutten. Het nieuwe schip krijgt het schutnummer gelijk aan het schutnummer van het schip waar hij samen mee wordt geschut
Bepaal het schutnummer van het schip
Simulatie voorbereiden, uitvoeren en gegevens inlezen
Simuleren [Deelproces]
nee
Is er nog een combinatie mogelijk?
ja
Herhaal vanaf B
Zie stroomschema 5.3 Enkelschutten [Deelproces]
nee
Stroomschema 5.2 Procedure waarbij het schip eventueel met een ander schip samen wordt geschut
Ongeacht of het schip wel of niet met een ander schip kan worden meegeschut, wordt de mogelijkheid om het schip alleen te schutten bekeken (zie stroomschema 5.3). In de eerste plaats wordt een simulatie uitgevoerd, waarbij het schip ongeveer volgens zijn ETA/ETD zal worden geschut. Hoe het schutnummer van dit nieuwe schip dan wordt bepaald staat beschreven in bijlage VI.3. Als deze simulatie ongeldig wordt verklaard, dan betekent dit dat één van de andere schepen zijn tijpoort niet haalt of te lang moet wachten als gevolg van deze extra schutting met het nieuwe schip. Het nieuwe schip is dan een schutting later aan de beurt en de simulatie wordt opnieuw uitgevoerd. Hoe de schutnummers van de schepen nu worden vastgesteld wordt tevens beschreven in bijlage VI.3.
Hoofdstuk 5: Beschrijvend model van het informatiesysteem
45
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
PLANMOD Allereerste wordt gekeken of het schip ongeveer volgens zijn ETA of ETD geschut kan worden. Alle aanvragen in ‘voorlopige planning’ worden gerangschikt naar perm_anker_op. Aan de hand hiervan wordt het schutschema met hierin het nieuwe schip vastgesteld. Zie bijlage VI.3
Enkel schutten [deelproces]
Bepaal het schutnummer van het schip
Schutnummer 1 [Deelproces]
Zie bijlage V !.1
C
Simulatie voorbereiden, uitvoeren en gegevens inlezen
Simuleren [Deelproces]
Is de opdracht ongeldig?
ja
Wijzig het schutnummer van de nieuwe aanvraag
Er wordt bij deze schutvolgorde blijkbaar niet aan de randvoorwaarden voldaan. Het nieuwe schip wordt één schutting doorgeschoven. Het schutnummer van het nieuwe schip wordt met één vermeerderd. Het schutnummer van het schip of de schepen, die direct na dit nieuwe schip geschut werden wordt met één verminderd; de schutnummers worden omgewisseld.
Zie bijlage VI.3 Schutnummer 2 [Deelproces]
nee Herhaal vanaf C
Moet de simulatie opnieuw worden uitgevoerd?
ja
Herhaal vanaf enkel schutten
Het schip moet een getij over liggen.
nee
Zie stroomschema 5.4 Variantkeuze [Deelproces]
Stroomschema 5.3 Procedure waarbij het nieuwe schip alleen wordt geschut
Nu alle, voor het model mogelijke opties, zijn bestudeerd en dit meer dan één geldige oplossing heeft opgeleverd, dan dienen deze te worden vergeleken en beoordeeld. De doelfunctie voor dit model is om hinder, die schepen bij het passeren van de sluis ondervinden, te minimaliseren. Voor iedere variant, die wordt beschouwd, zijn de regels één tot en met vijf uit de strategie toegepast. Gezien het feit dat iedere variant, die beschouwd wordt, geldig is verklaard zijn deze regels ook succesvol toegepast. De varianten worden dus slechts op wachttijd beoordeeld. De variant met de minste totale wachttijd (som van de wachttijden van alle schepen vóór de sluis) wordt gekozen.
Hoofdstuk 5: Beschrijvend model van het informatiesysteem
46
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
PLANMOD
Variantkeuze [deelproces]
Afwegen van de varianten en kiezen
Afwegen [Macro]
Inlezen van gegevens van gekozen variant
Inlezen [Macro]
Kan ieder schip vandaag nog richting sluis varen?
nee
Wijzig de aankomstdag en aankomsttijd van alle schepen die niet vandaag richting sluis vertrekken
ja
Verwijder de nieuwe aanvraag uit ‘Aanbod dag’
Is er nog een aanvraag voor vandaag?
ja
Herhaal vanaf start
nee
Simulatie voorbereiden en uitvoeren voor de definitieve planning
Einde wordt true
Simuleren van de definitieve planning voor die dag Simuleren [Deelproces]
De component Main wordt nu weer geactiveerd en zal voor een nieuwe dag benodigde informatie verzamelen en verwerken. Dan wordt opnieuw de planningsmotor geactiveerd.
STOP
Stroomschema 5.4 Proces waarbij verschillende varianten voor de voorlopige planning worden vergeleken
Nu bekend is met welke variant wordt verder gewerkt (voorlopige planning) moeten de eigenschappen van de betrokken schepen worden aangepast aan de nieuwe situatie. De gegevens worden ingelezen vanuit het verkeerssimulatiemodel. Als blijkt dat alle aanvragen voor die dag zijn ingepland, dan kan de laatste planning als definitieve planning worden doorgegeven. De planningsmotor is nu klaar voor ‘vandaag’ en wordt volledig uitgeschakeld. De component Main zal de planningsmotor opnieuw activeren, indien deze een planning voor een nieuwe dag moet genereren.
Hoofdstuk 5: Beschrijvend model van het informatiesysteem
47
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Hoofdstuk 5: Beschrijvend model van het informatiesysteem
48
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
6. Beschrijvend model van de verkeerssimulatie De verkeerssimulatie, waarin alle reële processen zich afspelen, wordt in dit hoofdstuk behandeld. Net als in het vorige hoofdstuk worden allereerst alle componenten kort beschreven. Vervolgens wordt voor iedere levende component in het model, het proces wat deze component doorloopt beschreven.
6.1.
Beschrijving van de componenten
Main (levende component) De component Main voert het programma uit en leest de gegevens in vanuit het informatiesysteem. Het proces van main wordt niet behandeld. Modelinfrastructuur (dode component) De modelinfrastructuur is behandeld in paragraaf 4.5. Schip (levende component) De aanvragen uit het informatiesysteem krijgen in het verkeerssimulatiemodel de fysieke vorm van het schip. Zij doorlopen een bepaald proces, waarbij zij worden aangestuurd door verschillende componenten binnen het systeem. Bij de verschillende schepen wordt onderscheid gemaakt tussen ‘gewone’ schepen en ‘lichterschepen’. Lichterschepen doorlopen namelijk een ander proces, aangezien zij een andere route varen. Scheduler (levende component) De scheduler vult in feite de planningsmotor aan. Hij bepaalt de definitieve schutvolgorde. Hierbij wordt over het algemeen de schutvolgorde, die de planningsmotor aangeeft, gevolgd. Echter als de sluis leegom moet en de wachttijden voor de betrokken schepen daardoor toenemen, zal de scheduler besluiten de volgorde om te draaien. Een en ander wordt in bijlage VII.4 toegelicht aan de hand van een voorbeeld. Berekening(levende component) De berekening is een tool van de scheduler, die hij gebruikt bij het vaststellen van de definitieve schutvolgorde. Een toelichting op deze berekening wordt gegeven in bijlage VII.4 Verkeersleider (levende component) De verkeersleider op het VLC heeft de taak het verkeer van en naar de sluis zodanig te ‘sturen’, zodat onveilige situaties worden vermeden. Nautisch gezien is er sprake van een onveilige situatie wanneer twee of meer schepen elkaar op één of andere manier beïnvloeden. Dit gebeurt als de ‘capaciteitsvelden’ van de schepen elkaar dreigen te overlappen. In twee gevallen treedt een ongewenste of onmogelijke verkeerssituatie op: -
Wanneer twee schepen elkaar passeren en de capaciteitsvelden overlappen elkaar in de breedte; Wanneer twee schepen achter elkaar varen en de capaciteitsvelden overlappen elkaar in de lengte, omdat de snelheid van de achterste schip hoger is dan zijn voorganger.
Om onveilige of onmogelijke conflicten tussen schepen te voorkomen past hij de verkeersregels toe, die in paragraaf 4.5 werden behandeld. Aan de hand van deze regels stelt hij vast wanneer een schip naar de sluis mag gaan varen, opdat het schip in één vloeiende beweging veilig de sluis kan binnen varen. Tegelijkertijd zorgt hij ervoor dat de afstand tussen twee achter elkaar varende schepen voldoende groot blijft.
Hoofdstuk 6: Beschrijvend model van de verkeerssimulatie
49
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Sluismeester (levende component) De sluismeester op het SLC werkt net als de verkeersleider met het tijdsschema dat de verkeersplanner heeft opgesteld en heeft vervolgens slechts de taak om de sluis volgens deze planning te bedienen. Wijsmuller (levende component) Wijsmuller is het bedrijf dat binnen het gebied de sleepboten exploiteert. Wijsmuller dient ervoor te zorgen dat, wanneer een schip de sluis nadert het aantal sleepboten dat het schip besteld heeft, worden gereserveerd en op het juiste moment geactiveerd. Sleepboot (levende component) Een sleepboot kan aan beide zijde van de sluis actief zijn. Wanneer de sleepboot geen opdracht heeft wacht deze aan de kade aan de oost- of westkant van de sluis. Iedere sleepboot heeft dezelfde trekkracht. Tijpoort1 (levende component) De component representeert de horizontale tijpoort. De component heeft slechts de taak om, gedurende de simulatieperiode aan te geven of de horizontale tijpoort geopend dan wel gesloten is. De component wordt niet verder beschreven. Tijpoort2 (levende component) Deze component representeert de verticale tijpoort. De component heeft slechts de taak om, gedurende de simulatieperiode aan te geven of de verticale tijpoort geopend dan wel gesloten is. Deze component wordt eveneens niet verder beschreven. Schutting (dode component) Deze klasse component heeft betrekking op een schutting uit het schutschema. De component draagt de eigenschappen van de schutting, zoals de richting en de schepen van deze schutting.
6.2.
Procesbeschrijving van de levende componenten
In voorgaande paragraaf werden alle componenten, die binnen het model actief zijn, beschreven. Alle levende componenten doorlopen een bepaald proces, waarbij zij elkaars eigenschappen en processen kunnen beïnvloeden. In deze paragraaf wordt het proces van ieder van deze componenten beschreven.
6.2.1.
Proces van het schip
Deze proces beschrijving heeft betrekking op alle schepen, behalve de `Bulkcarriers_direct´. De procesbeschrijving voor deze schepen volgt in paragraaf 6.2.2. Een schip wordt geactiveerd op het tijdstip van zijn ETA/ETD en komt vervolgens het systeem binnen ter hoogte van de Kruispost of ter hoogte van de Houtrak, afhankelijk van de aankomstzijde van het schip. Dan volgen allereerst een aantal hoofdzakelijk administratieve activiteiten, die het schip moet ondergaan. Daarna kan het fysieke vaarproces van het schip beginnen. In onderstaande alinea’s wordt achtereenvolgens op beide deelprocessen ingegaan. Deelproces 1 In stroomschema 6.1 wordt het deelproces 1 weergegeven. De eerste activiteit behoeft alleen te worden uitgevoerd voor het ‘nieuwe schip’: direct wanneer dit schip bij de wachtplaats is aangekomen, wordt vast gesteld of het schip afhankelijk is van het getij. Indien dit zo is dan wordt het eerstvolgende tijdstip bepaald dat het schip zou mogen vertrekken volgens de getijbeperkingen. Voor overige schepen is dit tijdstip al bekend. De volgende procedures gelden voor alle schepen. Het schip wordt in de wachtplaats aan aankomstzijde geplaatst. Voor niet-tijgebonden schepen is dit gelijk aan het tijdstip van ETA/ETD. Tijgebonden schepen zullen pas als ‘wachtend’ worden geregistreerd op het moment dat zij, conform de getijeisen, toestemming hebben om anker op te komen. Hoofdstuk 6: Beschrijvend model van de verkeerssimulatie
50
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Het schip moet nu wachten op een seintje van de verkeerleider om de sluis te naderen. In bijlage VII wordt beschreven wanneer dit signaal wordt gegeven en hoe dit is bepaald. Het schip kan nu richting sluis varen. Er worden echter eerst nog een aantal activiteiten van administratieve aard uitgevoerd (deze activiteiten nemen geen tijd in beslag). Ten eerste wordt de vertrektijd van het schip geregistreerd. Aan de hand hiervan wordt vervolgens voor de gehele vaarroute van het schip tot in de sluis voor ieder passeerpunt op deze route de passeertijd berekend (zie bijlage VII.2). Indien het schip het laatste schip is van deze schutting dan betekent dit, dat de sluisdeur gesloten kan worden op het moment dat dit schip zich in de sluis bevindt. Dan kan dus ook een schatting worden gemaakt van het tijdstip dat de sluis weer vrij komt aan de andere zijde van de sluis. Bovendien kan het tijdstip worden bepaald dat de sluis aan de aankomstzijde van het schip vrijkomt als de sluis leegom moet. Dit tijdstip is van belang als de volgende schutting dezelfde richting heeft. Ten slotte wordt de wachttijd van het schip vóór de sluis geregistreerd en als het schip tijgebonden is, de tijpoort van het schip (zie bijlage VII.5). Deelproces 2 Het schip vaart nu richting sluis. Zowel vanaf de Kruispost als vanaf de Houtrak neemt het varen naar de sluis ongeveer een uur in beslag. In stroomschema 6.2 is het gehele vaarproces van het schip tot aan de sluis geschematiseerd weergegeven. De sluismeester wordt direct op de hoogte gesteld van de schepen, die richting sluis varen en heeft de taak de sluis te bedienen, zodanig dat naderende schepen direct de sluis kunnen binnenvaren (zie paragraaf 6.2.5). Tegelijkertijd wordt Wijsmuller ingelicht over de varende vaart. Deze sleepbootdienst kan nu definitief, met het exacte tijdstip, het benodigd aantal sleepboten voor het schip reserveren (zie paragraaf 6.2.6). De procedure voor oostgaande schepen zal nu enigszins afwijken van de procedure voor West-gaande schepen. Het oostgaande schip, dat afhankelijk is van het horizontale getij, moet namelijk gedurende het vaartraject naar de sluis nogmaals gecontroleerd worden op de eisen ten aanzien van het getij. Het tijdstip dat het schip daadwerkelijk is vertrokken, kan namelijk afwijken van het tijdstip waarop het tijgebonden schip volgens de berekeningen zou mogen vertrekken. Een klein verschil kan er al toe leiden dat de horizontale tijpoort sluit, nog vóórdat het schip de pieren is gepasseerd. Is dit inderdaad het geval dan is de simulatie ongeldig. Gaat het om een ‘nieuw schip’, waarmee de simulatie nog niet eerder is uitgevoerd, dan kan worden geconcludeerd dat het schip deze tijpoort zal moeten ‘overliggen’. Voor alle andere gevallen kan men concluderen dat de eerst mogelijke tijpoort niet wordt benut, want dat was deze. De simulatie moet opnieuw worden uitgevoerd, want door deze ‘foute’ procedure is mogelijke tijd verloren gegaan, die niet meer kan worden teruggedraaid. In paragraaf 4.3 werd beschreven welke uitvoer dit oplevert en hoe de planningsmotor van het informatiesysteem deze uitvoer interpreteert.
Hoofdstuk 6: Beschrijvend model van de verkeerssimulatie
51
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
SCHIPMOD
Deelproces 1
wacht
Pas dan wordt het schip geactiveerd.
De ETA/ETD van het schip
Is het schip tijgebonden en is het schip ‘nieuw’ ?
ja
nee
Bepaal het tijdstip dat het schip toestemming krijgt om anker op te komen
Zie bijlage VII.5
wacht Tot dit moment is aangebroken
Ga in wachtplaats aan aankomstzijde
wacht Op een seintje van de verkeersleider
Tijpoortafgifte [Deelproces]
Voor niet-tijgebonden schepen is dit tijdstip gelijk aan hun ETA/ETD. NB. Dit wil niet zeggen dat het schip op dit moment ook toestemming krijgt om de sluis te naderen.
De verkeersleider weet nu dat het schip, volgens de getijeisen toestemming heeft om te vertrekken. Hij bepaald vervolgens wanneer het schip, volgens de schutplanning de sluis mag naderen
Registreer vertrektijd (aanl_tijdstip van het schip) en bepaal de passeertijden tot aan de sluis
Voor de gehele vaarroute van het schip tot aan de sluis wordt voor ieder passeerpunt van deze route de passeertijd berekend Zie bijlage VII.2
Passtijden1 [Macro]
Is dit schip het laatste schip van deze schutting?
ja
Bepaal de schuttijden en bepaal wanneer de sluis naar verwachting weer vrij zal zijn
Aan de overzijde zal de sluis vrij komen (sluisvrij[overzijde]) op het moment dat het laatste schip is uitgevaren. Aan dezezijde is dat pas als de sluis leeg is omgezet. Zie bijlage VII.3 Tijden bepalen [Macro] Voor ieder schip uit deze schutting wordt de vervolgroute met bijbehorende tijdsintervallen vastgelegd aan de hand van het moment dat de sluis vrij komt Zie bijlage VII.2
nee Bepaal voor ieder schip de vervolg route en tijden na het schutten
Passtijden2 [Macro]
Registreer de wachttijd (wachttijd_voor) van het schip
Verlaat de wachtplaats
Deelproces 2
Stroomschema 6.1: Deelproces 1 van het schip
Hoofdstuk 6: Beschrijvend model van de verkeerssimulatie
52
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Zowel het oostgaande schip als het westgaande schip vaart (verder door) naar de sluis en vaart vervolgens de sluis in. Op het moment dat alle schepen uit deze schutting zich in de sluis bevinden sluit de sluismeester de deur (zie stroomschema 6.6). Opnieuw wordt nu een getijcontrole uitgevoerd. De controle vindt ditmaal echter alleen plaats bij ontheffingsschepen. Men zal nagaan of het schip zich ook daadwerkelijk in de sluis bevindt (met gesloten deuren) op het moment dat de waterstand het kritieke niveau (NAP) heeft bereikt. Is dit niet het geval dan wordt eveneens de simulatie (denkbeeldig) afgebroken. De vervolgprocedure is gelijk aan die voor het stroomgebonden schip. Het schip wacht tot de sluis kan worden uitgevaren. Het eerste schip krijgt op dit moment een seintje van de sluismeester. Wanneer het schip is uitgevaren, wordt het volgende schip (indien aanwezig) in de sluis geactiveerd. Het schip vaart naar de eindbestemming en verlaat hier uiteindelijk het systeem. SCHIPMOD
Deelproces 2: Varen totsluis
Ga invarende vaart
Ga insleeplijst
Het SLC krijgt op dit moment een seintje binnen dat nieuwe schepen de sluis naderen. De resterende vaartijd van het schip naar de sluis is lang genoeg om de sluismeester de gelegenheid te geven de sluis eventueel nog leeg om te zetten Het schipwordt hierbij opgenomen in de `planning’ van Wijsmuller
Wil het schip de havenbinnenvaren (oostgaand)?
ja
In dat geval kan men er zeker van zijn dat het schip de nieuwe pieren is gepasseerd (marge) Vaar naar de oude pieren Dit geldtzowel voor stroomschepenals voor ontheffingsschepen
nee
Is het schipgebondenaan het horizontaal getij?
nee
ja
Voertijcontroleuit
Tijcontrole1 [Macro]
Is de horizontaletijpoortnu gesloten?
ja
nee
Geef een signaaldat deze variant niet geldig is (opnieuw wordttrue)
Vaar naar de sluis Vlak vóór dat het eerste schip begint met invaren wordt de tijd geregistreerdals zijnde de aanvang van de schutting
Controle ofhet schip ook daadwerkelijk vóór het sluiten van de horizontale tijpoort de pieren gepasseerd is.
Vaar desluis in Het schip behoort nu tot de verzameling ‘sluis’
Ga uit varende vaart
Zie stroomschema 6.3
Deelproces 2: Sluis enverder
Stroomschema 6.2: Deelproces 2 van het schip
Hoofdstuk 6: Beschrijvend model van de verkeerssimulatie
53
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
SCHIPMOD
Deelproces 2: Sluis en verder
Is het schip gebonden aan het verticaal getij?
ja
wacht
nee
Tot de deur gesloten is
Voer tijcontrole uit
Is de verticale tijpoort nu gesloten?
nee
wacht
Controle of het schip zich ook daadwerkelijk (met gesloten deuren) in de sluis bevindt, vóór het sluiten van de verticale tijpoort Tijschepen2 [Macro]
ja
Geef een signaal dat deze variant niet geldig is (opnieuw wordt true)
De sluismeester geeft, als het zover is , een seintje aan het eerste schip dat mag uitvaren.
Tot de sluis kan worden uitgevaren
Vaar de sluis uit De schutgegevens van het schip worden op dit moment geregistreerd en opgeslagen Geef een seintje aan een (eventueel) volgende schip dat deze kan uitvaren
Vaar naar eindbestemming (haven of zee)
Verlaat het systeem
Stroomschema 6.3: Vervolg deelproces 2 van het schip
Hoofdstuk 6: Beschrijvend model van de verkeerssimulatie
54
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
6.2.2.
Proces van het lichterschip
De procesbeschrijving van het lichterschip heeft betrekking op de bulkcarriers die bij aankomst, vanwege hun grote diepgang niet direct door de Noordersluis geschut kunnen worden. Een lichterschip vaart eerst naar de Y-palen in het Noorderbuitenkanaal, waar het schip een aantal dagen zal verblijven om een deel van de lading te lossen, totdat de diepgang zodanig is afgenomen, dat het schip geschut kan worden. De rede dat het schip al vanaf aankomst bij het Ankergebied wordt meegenomen is, dat het al of niet aanwezig zijn van schepen aan de Y-palen effect heeft op de scheepspassages in het Noorderbuitenkanaal. Het proces van het lichterschip is echter wel sterk vereenvoudigd: Ieder lichterschip heeft als eigenschap een bepaalde activiteit, deze activiteit kan zijn: -
Vertrekken vanaf het Ankergebied: dit houdt in dat het schip vandaag, vanaf het Ankergebied, naar de Y-palen wil varen. Het schip vaart zodra de verticale tijpoort open gaat, naar de Y-palen. Het schip zal dan, gezien de grote afstand vanaf het Ankergebied naar de pieren, rond kentering de havenmond passeren (stroomsnelheid nul). Hierbij wordt geen rekening gehouden met het feit dat maximaal één geulschip per getij de haven mag binnenvaren. Bovendien wordt er geheel geen rekening gehouden met het schip in het verkeer; het schip is ‘onzichtbaar’. Als het schip bij de Y-palen is aangekomen, kan worden begonnen met lichteren;
-
Lichteren: Dit betekent dat het schip reeds aan de Y-palen ligt. Het schip is hier een andere dag aangekomen en doet niets meer dan ‘liggen’ en gelichterd worden;
-
Schutten: schutten wil zeggen dat het schip vandaag geschut moet worden en dat het schip dus ook door de planningsmotor in de planning is verwerkt. Het proces van dit schip tot aan de sluis wijkt enigszins af, omdat het vaarschema van het gelichterde schip anders is dan voor andere schepen, die aan westzijde aankomen. De af te leggen weg vanaf de Ypalen naar de sluis is namelijk aanzienlijk korter. Het afmeren van het schip neemt echter veel tijd in beslag, in dit model wordt hiervoor 50 minuten ingecalculeerd. Het proces vanaf in de sluis tot aan de haven is hetzelfde als voor het andere scheepvaartverkeer (zie paragraaf 6.2.1).
Zodra het schip is geschut wordt de bestemming van het schip gewijzigd. Het schip wordt op de terugweg, vanuit de haven, dan niet meer erkent als een lichterschip en legt het proces af zoals alle andere schepen dat doen (zie proces van het schip).
6.2.3.
Proces van de scheduler
De scheduler is een denkbeeldige component die aan het model is toegevoegd. De scheduler werkt aan de hand van het schutschema. In dit schema staan alle schuttingen, die in deze simulatie moeten worden uitgevoerd. De scheduler selecteert steeds de eerstvolgende schutting op deze lijst. Voor de schematische weergave van het proces van de scheduler wordt verwezen naar stroomschema 6.4. Vervolgens vergelijkt hij de richting van de schepen uit deze schutting met de richting van de schepen uit de vorige schutting. Is deze richting gelijk dan zal de sluis leegom moeten. Leeg schutten is over het algemeen niet logisch indien er binnen een geringe tijd schepen aan de andere kant verwacht worden of zelfs al liggen te wachten en kan bovendien een toename in wachttijden veroorzaken. Het aanbod aan de overzijde van de sluis moet dus eerst bekeken worden. Staat er inderdaad een schutting met schepen vanaf de andere kant op de lijst, dan wordt voor beide mogelijkheden de totale individuele wachttijd van alle betrokken schepen bepaald.
Hoofdstuk 6: Beschrijvend model van de verkeerssimulatie
55
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Dus voor twee gevallen wordt een berekening uitgevoerd: Geval 1: leegom Geval 2: niet leegom
PLANNEN
Selecteer de eerst volgende schutting (deze schutting) Dit betekent dat de sluis leegom zou moeten. Daarom wordt het aanbod vanaf de andere kant ook bekeken Was de voorgaande schutting ook in deze richting?
nee
ja
Staat er een schutting op de lijst vanaf de andere zijde?
ja
nee
Registreer de schepen in beide schuttingen
Er wordt nu bepaald welke oplossing (leegom of tegenschutten) de minste vertragingen op zal leveren
Schutberekening
De sluis gaat niet leegom
Plaats de schepen uit `deze schutting´ in de verzameling Volgende schutting (deze schutting)
Is de wachttijd bij een tegenschutting kleiner?
ja
nee
Plaats de schepen uit deze `tegenschutting´ in de verzameling Volgende schutting (deze schutting)
Verwijder deze schutting van de schutlijst
Plaats de schepen uit Volgende schutting in Sluisverkeer
wacht Tot het laatste schip uit deze schutting richting sluis vaart
De verkeersleider in het VLC wordt hierbij ingelicht over het scheepvaartverkeer dat hij binnenkort kan verwachten
Op dit moment kan met redelijke nauwkeurigheid bepaald worden wanneer de sluis weer geclaimd kan worden
Herhaal vanaf het begin
Stroomschema 6.4: Proces van de scheduler
Hoofdstuk 6: Beschrijvend model van de verkeerssimulatie
56
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
De berekening wordt uitgevoerd met behulp van de component ‘berekening’ en beschouwd alleen de direct betrokken schepen; de schepen uit deze schutting en uit de tegenschutting. De procedure wordt beschreven in bijlage VII.4. Het geval waarbij de minste wachttijden optreden wordt uitgevoerd. De scheduler legt hier de laatste hand aan de schutvolgorde. Vervolgens wordt de verkeersleider ingelicht over de schutting die als eerstvolgende wordt uitgevoerd. Hij weet dan welke schepen hij binnenkort moet ‘sturen’. Wanneer de schepen richting sluis varen, zal de scheduler de volgende schutting bepalen. Het proces herhaalt zich vanaf het begin, totdat de lijst leeg is.
6.2.4.
Proces van de verkeersleider
Zodra bekend is welke schepen na de laatste schutting aan de beurt zijn om geschut te worden, wordt de verkeersleider hiervan op de hoogte gebracht. In de eerste plaats beschouwd hij het eerste schip uit deze schutting. Er kunnen zich twee verschillende situaties voordoen: 1. 2.
De voorgaande schutting was in dezelfde richting als dat het schip vaart; De voorgaande schutting was in tegengestelde richting als dat het schip vaart.
In de eerste situatie hoeven de schepen uit beide schuttingen elkaar niet te ontmoeten, zij varen immers in de zelfde richting. De sluis is leeg omgeschut en het schip kan de sluis binnenvaren, zodra de deur aan zijn zijde geopend is. In de tweede situatie kunnen de schepen elkaar echter wel tegenkomen in het vaargebied rond de sluis. Om zo min mogelijk tijd te verliezen is het wenselijk de schepen elkaar zo dicht mogelijk in de buurt van de sluis te laten ontmoeten (indien het invarende schip niet nog op zich laat wachten). Echter niet alle passages zijn mogelijk op de relatief smalle toeleidingskanalen naar de sluis. Hiervoor zijn de verkeersregels uit paragraaf 5.1 opgesteld. De verkeersleider zal de minimale lustijd willen bepalen, waarbij hij deze verkeersregels laat gelden. Hierbij dienen de kritische passages van alle uitvarende schepen te worden bekeken. Hier komt een tijdstip uit voort, dat het schip vanaf de Kruispost, dan wel van af de Houtrak kan vertrekken. De lustijd is dan minimaal. Het hoeft uiteraard niet zo te zijn dat het schip op dit tijdstip ook daadwerkelijk kan vertrekken. Het schip kan nog wel in de haven liggen of ergens op zee varen. Voor eventueel volgende schepen uit deze schutting is de procedure eenvoudiger: tussen het invaren van hun voorganger en het invaren van het schip zelf moet minstens 15 minuten tijdsverschil aanwezig zijn. Men kan ervan uitgaan dat eventueel tegenliggend verkeer dan al het kritieke ontmoetingsgebied is uitgevaren.
Hoofdstuk 6: Beschrijvend model van de verkeerssimulatie
57
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
VLC
wacht Zolang de volgende schutting nog niet bekend is
Zodra bekend is welke schepen als eerstvolgend worden geschut wordt de verkeersleider weer actief
Bepaalde aankomszijde van het schip/de schepen uit de volgende schutting De schepen uit beide schuttingen moeten elkaar mogelijk ontmoeten voor de sluis
De schepen uit beide schuttingen hoeven elkaar niet te ontmoeten, want zij varen in dezelfde richting Had de voorgaandechutting s dezelfde richting als deze schutting?
ja
Passtijden1 [macro]
Stel het tijdstip vast dat de sluis aan deze zijde vrijkomt en bepaal wanneer het schip mag vertrekken
nee
Bepaal waar de schepen elkaar kunnen ontmoeten en wanneer het schip dan mag vertrekken
Passtijden1 [macro]
wacht Tot hetschip mag vertrekken
wacht Zolang het schip nog niet in de wachtplaats ligt
Geef het schip een seintje dat hij richting de sluis mag gaan varen
Het schip mag niet eerder de sluis invaren dan 15 minuten nadat zijn voorganger begon met invaren Bepaal wanneer het schip mag vertrekken
ja
Komt er nog een schip dat deze deze schutting mee moet?
nee
Herhaal vanaf het begin
Stroomschema 6.5: Proces van de verkeersleider
6.2.5.
Proces van de sluismeester
De sluismeester wacht zolang er geen schepen richting de sluis varen. Wanneer één of meerdere schepen (aan één zijde) de sluis naderen dan zal de sluismeester de sluis voor deze schepen gereed maken, zodat zij direct de sluis kunnen binnen varen. In sommige gevallen moet de sluis hiervoor eerst worden omgezet. De sluismeester heeft hier voldoende tijd voor, aangezien de vertrektijd van het schip vanaf de Kruispost of vanaf de Houtrak hierop wordt afgestemd.
Hoofdstuk 6: Beschrijvend model van de verkeerssimulatie
58
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
De sluismeester wacht vervolgens tot het schip of de schepen zich in de sluis bevinden. Dan bedient hij de sluis: de deur wordt gesloten, het waterniveau in de kolk wordt omgezet van het ene naar het andere niveau en de deur kan vervolgens weer geopend worden. De sluismeester geeft het eerste schip een seintje dat deze de sluis kan uitvaren. Hij wacht tot te sluiskolk leeg is en begint vervolgens weer van voren af aan.
SLC
wacht Zolang er geen schepen richting sluis varen
Is de sluis aan de juiste kant open?
nee
ja
Sluit deur, zet de kolk om en open de deur
wacht Wacht tot het laatste schip uit deze schutting zich in de sluis bevindt
Sluit deur, zet de kolk om en open de deur
Reactiveer het eerste schip in de sluis
wacht Tot de sluiskolk leeg is
Herhaal vanaf het begin
Stroomschema 6.6: Proces van de sluismeester
6.2.6.
Proces van de Wijsmuller
Bij Wijsmuller wordt er gewacht tot een schip zich aanbied op de ‘sleeplijst’ (zie stroomschema 6.7 voor een geschematiseerde weergave van het hele proces). Ieder willekeurig schip, dat één of meerdere sleepboten heeft besteld, komt op deze lijst terecht, zodra het schip varende is (zie paragraaf 6.2.1). Voor iedere sleepboot die het schip besteld heeft,worden de volgende processtappen doorlopen: de eerste sleepboot in de sleepbootkade aan de aankomstzijde van het schip, die nog beschikbaar is, krijgt van de sleepbootplanner de opdracht het betreffende schip te begeleiden en wordt actief
Hoofdstuk 6: Beschrijvend model van de verkeerssimulatie
59
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
gemaakt. Het schip is op dit moment nog niet op de plaats waar de sleepboot aan het schip vastgekoppeld wordt (het schip is immers net vertrokken) en dus blijft de sleepboot tot dan aan de kade liggen. Bij lichterschepen daarentegen hoeven de sleepboten niet te wachten, deze worden direct bij het afmeren geassisteerd. De sleepboot is nu echter niet meer beschikbaar (zie paragraaf 6.2.7). Het proces van Wijsmuller herhaalt zich vervolgens weer vanaf het begin.
W IJS M U LLE R
w ach t Zo la ng er ge en sc hep en op d e s leep lijs t staa n
Z od ra een s chip rich ting s luis v aart én he t sc hip he eft éé n of m eerd ere sle epbo te n bes teld, d an ko m t d eze op d e ‘sleep lijs t’
Se lectee r h et e erste sc hip va n d e lijs t en b epa al d e aan ko m stz ijde
S elec teer de e ers te s le epb oot in ` `s le epb ootk ade [a ank om stzijde ]’ die nog b esc hikb aar is
G e ef d e sleep boo t de status `n ie t b esc hikb aar’ en w ijs h et s chip toe a an de sle epb oot
E en s le epb oot ka n aan de k ad e ligg en en toch n iet be sc hikb aar zijn: de slee pbo ot w ac ht d an tot h et s ch ip d at h em is toeg ew ez en (zijn opd rac ht) d e p ieren , da n w el de V else rkom hee ft bereik t. Hie r w ord t de s leep boot a an he t s chip v astge kop peld .
A ctivee r d e sleep boo t
He eft he t sc hip no g een s leep boo t bes teld?
ja
ne e
H erha al van af h et beg in
Stroomschema 6.7: Proces van Wijsmuller
6.2.7.
Proces van de sleepboot
De sleepboot wacht aan de kade tot hij een opdracht krijgt van de sleepbootplanner (zie stroomschema 6.8 voor een geschematiseerde weergave van het hele proces). Vervolgens wacht de sleepboot tot zijn opdracht (een bepaald schip) bij de pieren of ter hoogte van Velsen-Noord is, met uitzondering van gelichterde schepen, die direct bij het verlaten van de Ypalen worden begeleid. De sleepboot vaart mee tot in de sluis, vaart weer terug naar de kade en wacht daar op een nieuwe opdracht. De sleepboot wordt in het model niet meegeschut en is dus slechts actief aan één zijde van de sluis. De vaartijd van de kade naar het schip en terug en de manoeuvreertijd van de sleepboot in de sluis worden hierbij niet meegenomen.
Hoofdstuk 6: Beschrijvend model van de verkeerssimulatie
60
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
SLEEPBOOT
Ga in sleepbootkade aan de werkzijde
wacht Op een seintje van de sleepdienst
Oost
Iedere sleepboot heeft een werkzijde (oost of west) waar hij actief is. De werkzijde verandert in dit modelniet, omdat de sleepboot nooit wordt meegeschut met het schip Zodra een schip, dat een sleepboot heeft besteld, richting sluis is vertrokken, kent de sleepdienst één van de beschikbare sleepboten toe aan het schip. Deze sleepboot wordt dan geactiveerd
Aan welke zijde is de sleepboot actief?
West
wacht
wacht
Tot de klant (vaardoel) ter hoogte van de NAM is
Tot de klant (vaardoel) bij de oude pieren is
Voor gelichterde schepen, die vanaf de Y-palen komt, kan de sleepboot direct uitvaren. Het schip dient namelijk direct al bij het afmeren te worden geassisteerd door twee sleepboten
Verlaat de kade
Wacht/Werk
De sleepboot begeleid het schip totdat het schip in de sluis ligt.
Tot het schip in de sluis ligt
Status van de sleepboot wordt `beschikbaar”
Herhaal vanaf het begin
Stroomschema 6.8: Proces van de sleepboot
Hoofdstuk 6: Beschrijvend model van de verkeerssimulatie
61
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Hoofdstuk 6: Beschrijvend model van de verkeerssimulatie
62
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
7. Verificatie van het model De verificatie omvat het proces waarin wordt nagegaan of het simulatieprogramma de letterlijke vertaling is van het conceptuele model. Alle fouten moeten worden opgespoord en gecorrigeerd. In het model zijn veel handelingen, die worden verricht, afhankelijk van combinaties van factoren. Er kunnen tientallen situaties optreden, waarbij in iedere situatie een ander vervolgtraject wordt uitgevoerd (denk hierbij aan de schutvolgorde). Om te controleren of bij iedere combinatie van factoren het juiste vervolgtraject wordt doorlopen, moet iedere situatie worden beschouwd. Dit heeft tot gevolg dat de verificatie zeer veel tijd in beslag neemt. De verificatie van het model kan worden onderverdeeld in vier verschillende onderdelen: 1. 2. 3. 4.
Controleren van de syntax aan de hand van het beschrijvende model; Simulatieruns als controle; Controle via het beeldscherm; Controleren van het verkeerssimulatiemodel aan de hand van handberekeningen.
De vier verschillende onderdelen van de verificatie worden achtereenvolgens in paragraaf 7.1 tot en met paragraaf 7.4 behandeld.
7.1.
Controle van de syntax aan de hand van het beschrijvende model
De eerste stap in de verificatie van het model is om een vergelijkende controle uit te voeren op de procesbeschrijvingen van hoofdstuk 5 en 6 met de procesbeschrijving zoals deze in de syntaxcode in Prosim is geschreven. De controle kan worden uitgevoerd door beide beschrijvingen naast elkaar te leggen en stap voor stap na te gaan of deze overeenkomen. Vanwege de omvang van de gehele syntax van het model is er voor gekozen slechts twee processen hier te behandelen: het proces van de planningsmotor in het informatiesysteem en het proces van het schip en in de verkeerssimulatie. Controleren van het proces van de planningsmotor In deze paragraaf wordt controle op de syntax van het proces van de planningsmotor uitgevoerd. De syntaxcode van dit proces representeert niet alleen de volgorde van de activiteiten, die de planningsmotor uitvoert, het laat ook zien dat alle activiteiten, zoals deze in de procesbeschrijving van paragraaf 5.4.2 zijn weergegeven, inderdaad worden langsgegaan. Een belangrijk hulpmiddel bij de controle van deze syntax vormt de informatiestroom (communicatie) tussen het verkeerssimulatieprogramma en de planningsmotor. In bijlage IV worden een aantal voorbeelden gegeven van deze informatie-uitwisseling, die via bestanden verloopt. Het proces van de planningsmotor wordt hier doorlopen vanaf het begin, zie figuur 7.1. In het rechter scherm wordt onder andere aangegeven naar welke component of attribuutwaarde wordt verwezen, als het om een verwijzing gaat (in de figuur heeft de nieuwe aanvraag op dat moment betrekking op aanvraag 180). Bovendien kunnen op ieder moment de waarde of de status van een willekeurig attribuut van een component of de inhoud van een verzameling (bijvoorbeeld de voorlopige planning) worden opgevraagd met de functie 'state analyses'. Aan de hand van het beschrijvend model kan vervolgens worden gecontroleerd of dit juist is. Bij de eerste aanvraag, die de naam ‘Schip A’ meedraagt zal na het toekennen van het schutnummer van het schip en het variantnummer, direct een simulatie worden uitgevoerd. Met behulp van de informatiestromen van en naar de planningsmotor (schutlist.txt, informatie.txt en results.txt, etc) kan eenvoudig worden nagegaan of de gegevens juist zijn opgeslagen, aangekomen en verwerkt in het verkeerssimulatiemodel. Na het doorlopen
Hoofdstuk 7: Verificatie het model
63
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
van de procedure ‘inlezen’, waarin de gegevens vanuit het verkeerssimulatieprogramma (results.txt) worden ingelezen en toegeëigend aan de betreffende aanvraag (of aanvragen), wordt nagegaan of de attributen van de aanvraag, juist zijn gecorrigeerd.
Figuur 7.1: Controle van de syntaxcode van het proces van de planningsmotor
Figuur 7.2: State analyses
Vervolgens, na wat sprongen door het proces, wordt in de derde regel de volgende aanvraag geselecteerd. Met behulp van een standaard procedure bepaalt de planningsmotor of deze eerste twee schepen met elkaar kunnen worden geschut (dit wordt gecontroleerd aan de hand van handberekeningen, zie paragraaf 7.3). Hoofdstuk 7: Verificatie het model
64
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Indien dit tot de mogelijkheden behoort, wordt een simulatie uitgevoerd. Opnieuw worden alle communicatiemiddelen gecontroleerd. Hierbij moeten de schutnummers van beide schepen overeenkomen. Bij een enkele schutting moet worden gelet op de volgorde waarin de schepen worden geschut. Bij het eerste experiment moet deze volgorde gelijk zijn aan de volgorde van perm_anker_op van beide schepen. Na iedere run van het verkeerssimulatiemodel kan het signaal (of de opdracht) in informatie.txt worden uitgelezen. Vervolgens wordt gecontroleerd of de planningsmotor dit signaal goed opvangt en de handelingen verricht, die bij dit signaal horen. Bij iedere volgende aanvraag, die verwerkt wordt, vindt deze controle plaats. Wanneer aan het einde van een bepaalde dag blijkt dat een schip niet op de betreffende dag kan worden afgehandeld, dient het schip de volgende dag te worden meegeschut. Er moet worden nagegaan of dit daadwerkelijk ook gebeurt en of dit ook op de juiste manier gebeurt. Tevens moet worden nagegaan wanneer de laatste schutting op een dag plaatsvindt. Aan de hand hiervan wordt het moment vastgesteld, dat de sluis aan het begin van de erop volgende dag vrij komt. In deze verificatiestap wordt gecontroleerd of dit juist wordt bepaald en ook juist wordt verwerkt in de planning voor de volgende dag. Controleren van het proces van het schip Een duidelijk verschil met de activiteiten die het schip verricht en de activiteiten, die de planningsmotor uitvoert, is dat de meeste activiteiten van het schip tijd in beslag nemen. Dit maakt het uitvoeren van een controle makkelijker, omdat de gebruiker bij het doorlopen van een proces sprongen in de tijd kan maken. Voor de controle wordt het proces van een willekeurig schip geanalyseerd. De ETA (stel het schip komt aan westzijde aan) van het schip wordt bepaald aan de hand van de ‘state analysis’. Vervolgens wordt een sprong in de tijd gemaakt gelijk aan deze ETA. Het schip wordt nu geactiveerd. Indien het schip gebonden is aan het getij en de tijpoort is nog niet bekend, dan wordt allereerst de tijpoort voor het schip bepaald. De juistheid ervan wordt gecontroleerd aan de hand van de verticale en horizontale tijpoorten, die voor die dag zijn opgesteld. Als het schip moet wachten voor deze tijpoort kan opnieuw een sprong in de tijd worden gemaakt naar het moment dat de tijpoort van het schip open gaat. Vervolgens worden alle overige administratieve activiteiten (zie paragraaf 6.2.1) uitgevoerd. Deze activiteiten nemen geen tijd in beslag. Na afloop van deze activiteiten, direct voor het schip aan zijn vaarproces (deelproces 2 van het schip, zie paragraaf 6.2.1) begint, worden de volgende attributen gecontroleerd: -
-
-
Het aanlooptijdstip van het schip: Dit tijdstip moet overeenkomen met het tijdstip dat deze controle wordt uitgevoerd; Wachttijd van het schip voor de sluis: De wachttijd van het schip voor de sluis moet gelijk zijn aan het verschil tussen het tijdstip dat het schip had kunnen vertrekken (perm_anker_op) en het tijdstip dat het schip begint met aanlopen; Passeertijden van het schip tot aan de sluis: Voor de vaartijden van het schip is het van belang, dat het schip in de juiste categorie wordt geplaatst. Indien de syntaxcode juist is, zou de categorie van ieder schip overeen moeten komen, met de indeling, zoals die in paragraaf 4.6.3 werd beschreven. De vaartijden moeten vervolgens weer overeenkomen met de vaartijden van de bijbehorende categorie; Passeertijden van het schip na het passeren van de sluis (als dit het laatste schip uit de schutting is).
Dan wordt het schip ‘gevolgd’ tijdens het afleggen van zijn hele route van begin tot eind. Met behulp van de attributen van de vaarweg en de sluis kan worden nagegaan waar het schip zich precies bevindt op zijn route. Bovendien kan men eenvoudig zien of zich op dat moment ook ander scheepvaartverkeer op dat vaartraject bevindt en of de verkeersregels hierbij niet overschreden worden.
Hoofdstuk 7: Verificatie het model
65
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
7.2.
Simulatieruns als controle
De beste controle of een volgorde van interactie tussen alle componenten goed geschreven is, is uit te voeren door het programma te runnen. Door het programma meerdere malen te runnen met verschillende `seeds´ van de invoergeneratoren kan men voor zoveel mogelijk verschillende situaties eventuele fouten opsporen Middels het instellen van deze seeds kunnen onderling verschillende runs gedraaid worden. Bij iedere seed zal een generator andere aanbodstromen genereren. De uitvoer van het verkeerssimulatiemodel biedt veel mogelijkheden voor het controleren van een aantal belangrijke processen. Er is een speciaal uitvoerbestand gecreëerd, waarmee slechts controle wordt uitgevoerd (zie bijlage V). Hierin worden de gegevens uit alle runs, die de planningsmotor gedurende een simulatieperiode, met het verkeerssimulatieprogramma heeft uitgevoerd, opgeslagen. Bovendien is de beoordeling van de variant hierbij aangegeven (geldig of ongeldig). Allereerst wordt aan de hand van de verificatie van het proces van het schip (zie paragraaf 6.2.1) gecontroleerd of de informatie juist is weergegeven. Dan vindt controle plaats van de volgende verwikkelingen: -
Volgorde waarin de schepen worden ingedeeld; Beoordeling van een variant op basis van interne prestatie-indicatoren; Schutnummers van de schepen.
Controleren van de volgorde waarin de schepen worden ingedeeld De volgorde waarin de schepen worden ingedeeld in de planning, moet overeenkomen met de prioriteit van de schepen. Ontheffingsschepen dienen altijd als eerste worden ingedeeld, vervolgens de stroomschepen, dan de lijndiensten en tenslotte alle overige schepen. De schepen met gelijke prioriteit worden onderling op volgorde van ETA/ETD ingedeeld. Controle van de beoordeling van de geldigheid van een variant Direct na een simulatierun van het verkeerssimulatiemodel wordt de variant beoordeeld aan de hand van een aantal ‘interne’ prestatie-indicatoren. Deze beoordeling bestaat slechts uit het vaststellen of een variant geldig kan worden verklaard of zal worden afgewezen. Dit gebeurt op basis van vooraf vastgestelde beperkingen van een prestatie-indicator. Deze prestatieindicatoren en beperkingen werden beschreven in paragraaf 4.2. De tijpoorten en de wachttijden kunnen worden afgelezen uit de tekstfile. Op basis van deze twee indicatoren kan een variant ongeldig worden verklaard. Aan de hand van de gegevens uit deze tekstfile kan worden gecontroleerd of deze afwijzing gegrond is. Controleren van de schutnummers De schepen staan gerangschikt naar schutvolgorde. De schutnummers moeten oplopen en hierbij kunnen er geen nummers ontbreken (lege schuttingen worden namelijk niet meegerekend). Voor twee schepen met hetzelfde schutnummer, dienen ook de schuttijden overeen te komen.
7.3.
Controle via het beeldscherm
De meest eenvoudige controle is de controle via het beeldscherm. Voor iedere geldige variant, die is uitgevoerd met het simulatiemodel, worden de resultaten in de vorm van een strokenschema op het beeldscherm getoond (zie figuur 7.3). Iedere balk stelt een schutting voor, waarbij het schip of de schepen uit die schutting direct onder de balk worden vermeld. In de rechthoek direct boven het strokenschema zijn in het blauw de ETA’s van alle aankomsten aan westzijde weergegeven. In rood staan de ETD’s van alle aankomsten aan oostzijde afgebeeld. De horizontale as in het strokenschema is de tijdas (eenheid: uren).
Hoofdstuk 7: Verificatie het model
66
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Bij het uitvoeren van deze controle wordt gelet op de volgende aspecten: -
-
-
Schuttingen kunnen nooit tegelijkertijd plaatsvinden. In de planning kunnen twee schuttingen elkaar dus niet overlappen. Bovendien dient er altijd enige tijd tussen te zitten, waarin de schepen de gelegenheid krijgen de sluis uit te varen; Via het beeldscherm kan ook worden afgelezen of er sprake van is dat twee schepen tegelijkertijd worden geschut. Men kan eenvoudig nagaan of de schepen uit één schutting wel aan dezelfde kant van de sluis aankomen. Bovendien kan met behulp van handberekeningen worden gecontroleerd of deze schepen ook daadwerkelijk samen geschut mogen worden (zie paragraaf 7.4); Een schip kan nooit eerder worden geschut dan zijn ETA/ETD; Schutproces bij twee schepen duurt altijd langer en er kunnen niet meer dan twee schepen tegelijkertijd worden geschut; Ieder schip heeft een zekere vaartijd nodig om bij de sluis te komen: het tijdsverschil tussen de ETA/ETD van een schip en de schuttijd moet minstens een uur bedragen.
-
Figuur 7.3: Voorbeeld van een strokenschema voor de planning op een bepaalde dag
Naast de uitvoer in de vorm van een strokenschema, worden bepaalde gegevens opgeslagen in grafieken, die na afloop van een simulatie kunnen worden geopend. Zo wordt bijvoorbeeld het gebruik van sleepboten in de tijd geregistreerd. In figuur 7.4 is voor dezelfde dag als voor de planning in figuur 7.3, het gebruik van sleepboten in de tijd weergegeven. Door beide figuren naast elkaar te leggen kan het volgende worden gecontroleerd (let hierbij op de tijdas): -
Een sleepboot wordt alleen ingezet bij het invaren van de sluis. Dit is dus altijd direct voor een schutting; Er worden in het model maximaal twee sleepboten per schip ingezet. Er kunnen dus nooit meer dan vier sleepboten tegelijkertijd in gebruik zijn. Bij een enkele schutting zijn dit er maximaal twee; Wanneer men tevens het type van ieder schip uit de planning opzoekt, dan kan worden gecontroleerd of het aantal sleepboten dat voor het schip wordt ingezet juist is (zie paragraaf 4.6.6)
Hoofdstuk 7: Verificatie het model
67
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Figuur 7.4: Voorbeeld van het sleepbootgebruik op een bepaalde dag uitgezet in de tijd
Alle gegevens, die de getijgenerator produceert met betrekking tot het verloop van de waterstand en de stroomsnelheden, worden tevens opgeslagen in grafieken. Op die manier kan eenvoudig worden gecontroleerd of het verloop van waterstand en de stroomsnelheid gedurende een periode waarin een aantal malen spring- en doodtij optreden, overeenkomt met de werkelijkheid. In figuur 7.5 is het verloop van de horizontale stroomsnelheid weergegeven. Daarnaast kan men voor een relatief korte periode (bijvoorbeeld 24 uur) nagaan of het verloop van de waterstand in het model (zie figuur 7.6) een weerspiegeling is van het dagelijks getij (zie bijlage II) en of de stroomsnelheid en de waterstand ten opzichte van elkaar juist verlopen (circa een half uur voor de waterstand zijn top bereikt heeft is de stroomsnelheid maximaal, zie bijlage II).
Hoofdstuk 7: Verificatie het model
68
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Figuur 7.5: Verloop van de horizontale snelheden binnen het model over een periode van ongeveer een maand
Figuur 7.6: Verloop van de waterstand in het model over periode van circa 24 uur
7.4.
Controleren met behulp van handberekeningen
In dit deel van de controle worden berekeningen of bepaalde procedures, die worden uitgevoerd of doorlopen, met behulp van handberekeningen geverifieerd. De controles in deze stap hebben betrekking op bepaalde activiteiten en processen, die met vooraf ingestelde systeemvariabelen een voorspelbare afloop hebben. De verwachtingen van het gedrag, die met
Hoofdstuk 7: Verificatie het model
69
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
behulp van handberekeningen worden bepaald, worden vergeleken met het gedrag van het model. Wanneer de verwachtingen overeenkomen met dat wat in het programma gebeurt, is het systeem op dat gebied geverifieerd. De volgende procedures en berekeningen worden geverifieerd: -
Twee schepen tegelijkertijd schutten; Voor- en achterwaartse berekening van de passeertijden van een schip; Berekening schuttijden; Schutberekening van de scheduler in het verkeerssimulatiemodel.
Twee schepen tegelijkertijd schutten De planningsmotor bepaalt of twee schepen al of niet tegelijkertijd kunnen worden geschut en of het `de moeite waard´ is hiervoor een simulatierun uit te voeren; wanneer twee schepen niet binnen afzienbare tijd na elkaar aankomen is het niet zinvol deze optie te bestuderen. Met behulp van handberekeningen wordt nagegaan, of schepen qua afmetingen wel tegelijkertijd in de sluis passen en of bepaalde mogelijkheden niet over het hoofd worden gezien. Voor- en achterwaartse berekening van de passeertijden van een schip Volgens de categorie-indeling van schepen, wordt het vaarschema van ieder schip bepaald. Op het moment dat een schip richting sluis gaat varen, worden met behulp van dit vaarschema, achtereenvolgens de tijdstippen berekend, dat het schip de zogenaamde passeerpunten zal passeren. Allereerst worden deze voorspelingen met de hand gecontroleerd en vervolgens wordt nagegaan of deze voorspellingen overeenkomen met het gedrag van het schip. Op de manier zoals werd beschreven in paragraaf 7.1, wordt een zeker schip ‘gevolgd’ bij het afleggen van zijn hele vaarroute. De passeertijden, die werden berekend, dienen overeen te komen met de passeertijden tijdens het vaarproces van het schip. Berekening schuttijden Op het moment dat het laatste schip uit een bepaalde schutting richting sluis vaart, wordt een voorspelling gemaakt van de schuttijden en het tijdstip dat de sluis vervolgens weer beschikbaar zal zijn. Deze berekening kan tevens met behulp van handberekeningen worden gecontroleerd. Ten eerste moeten de berekeningen in het model juist zijn uitgevoerd en ten tweede dienen deze berekeningen overeen te komen met schuttijden, die door de sluismeester worden gemeten. Schutberekening van de scheduler De scheduler bepaalt voor twee verschillende schutvolgorden, de wachttijden van de betrokken schepen. Met behulp van de vaarschema’s en andere eigenschappen van de betrokken schepen en de geldende verkeersregels, kan handmatig worden nagegaan of de wachttijden, die de scheduler berekend heeft juist zijn.
Hoofdstuk 7: Verificatie het model
70
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
8. Gevoeligheidsanalyse Om weer te geven wat de effecten zijn van de gekozen toewijzingsstrategie (zie paragraaf 3.4.3) en om te controleren of deze effecten daadwerkelijk een positieve invloed hebben op het behaalde resultaat, wordt een gevoeligheidsanalyse uitgevoerd. Door verschillende experimenten uit te voeren, waarbij de besturingsregels verschillen, kan de gevoeligheid in beeld worden gebracht. In dit hoofdstuk worden de resultaten gegeven van de experimenten.
8.1.
Opzet van de experimenten
8.1.1.
Beïnvloeden toewijzingsstrategie
Er worden twee verschillende serie runs uitgevoerd, waarbij de toewijzingsstrategie voor de sluis in beide varianten sterk verschilt: -
Modelvariant: toewijzing volgens de spelregels van het model; Nulvariant: toewijzing volgens het FCFS-principe (referentierun).
Voor het eerste experiment wordt het ontwikkelde simulatiemodel meerdere malen gerund. Voor het onderzoeken van de nulvariant, worden alle procedures in zowel het verkeerssimulatieprogramma als in het hoofdprogramma (informatiesysteem), die betrekking hebben op de besturingsregels, zodanig aangepast, dat de schepen worden ingedeeld volgens het FCFC-principe (wie het eerst komt, wie het eerst maalt). Alle schepen worden op volgorde van aankomst- of vertrektijd geschut. Bovendien worden alle schepen alleen geschut; er worden geen combinaties gemaakt. De volgorde van schutten is dus in principe gelijk aan de volgorde van alle aankomst- en vertrektijden bij de Kruispost en de Houtrak. Alleen voor tijgebonden schepen kan deze volgorde enigszins veranderen: indien een niet-tijgebonden schip later aankomt dan een tijgebonden schip, maar het tijgebonden schip moet nog wachten tot zijn tijpoort open gaat, dan wordt het niet-tijgebonden schip ervoor geschut. De resultaten van alle experimenten met beide varianten worden na afloop met elkaar vergeleken.
8.1.2.
Runlengte
De inspeeltijd van het programma is zes dagen. Aangezien er voor die tijd geen of nauwelijks westgaand verkeer (uit de haven) aanwezig is. De resultaten zijn dan niet representatief voor de werkelijkheid. In alle simulaties, die in het kader van het onderzoek hebben plaatsgevonden, is een runlengte van 30 dagen gehanteerd. Dit is exclusief zes dagen inspeeltijd. Na iedere run van de modelvariant, wordt steeds een run van de nulvariant uitgevoerd, met een identieke aanbodstroom. Voor beide varianten zijn in totaal acht runs uitgevoerd, met variërende aanbodstromen. De resultaten, die in paragraaf 8.2 worden gepresenteerd, zijn afkomstig uit deze acht verschillende runs.
Hoofdstuk 8: Gevoeligheidsanalyse
71
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
8.1.3.
Invoer
In onderstaande figuur is voor de volgende soorten schepen het percentage van het totaal aanbod weergegeven. -
Ontheffingsschepen; Stroomgevoelige schepen (exclusief stroomgevoelige lijndiensten); Stroomgevoelige lijndiensten; Niet stroomgebonden lijndiensten; Overig scheepvaart verkeer,
In het huidig aanbod bestaat slechts 20 procent van het totaal aanbod, uit schepen die op één of andere manier een `voorkeursbehandeling’ krijgen in de toewijzingsstrategie van het ontwikkelde model (modelvariant). Voor de uiteindelijke beoordeling van de resultaten is het van belang, dat deze voorkeursbehandeling geen negatieve invloed heeft op de wachttijden van het overige scheepvaartverkeer, dat 80% van het totaal aanbod vormt.
7%
9%
Onheffingsschepen
1% 3%
Stroomschepen
Lijndienst en stroomgebonden Lijdiensten niet stroomgebonden
80%
Overig scheepvaartberkeer
Figuur 8.1: Percentage aanbod ontheffingsschepen, stroomschepen, lijndiensten en overige schepen van totaal aanbod
8.1.4.
Prestatie-indicatoren
Een prestatie-indicator is een grootheid, die wordt gemeten tijdens een simulatierun. Na het vergelijken van de waarde van een prestatie-indicator uit de ene variant met de waarde van een prestatie-indicator uit een andere variant, kan worden bepaald in hoeverre de toewijzingsstrategie van invloed is op deze prestatie-indicator. Voor deze gevoeligheidanalyse worden alleen de wachttijden van de schepen geregistreerd. De gevoeligheid van de toewijzingstrategie kan middels deze wachttijden goed in beeld worden gebracht.
Hoofdstuk 8: Gevoeligheidsanalyse
72
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
8.2.
Resultaten
In deze paragraaf worden voor beide experimenten de resultaten getoond. Allereerst wordt een totaalbeeld geschetst van het aantal vertraagde schepen in zowel de nulvariant als in de ‘modelvariant’. In de figuur is te zien dat het totaal aantal vertraagde schepen nagenoeg gelijk is in beide varianten.
percentage vetraagde schepen(%)
100
80 nulvariant
60 43,4
modelvariant 40,6
40
20
0
Figuur 8.2: Percentage vertraagde schepen in beide varianten
Hoofdstuk 8: Gevoeligheidsanalyse
73
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
8.2.1.
Wachttijden totaal aanbod
De vraag is echter hoe groot de wachttijden van de schepen nu zijn en hoe deze wachttijden zijn verdeeld. Hiervoor worden de wachttijden van het totaal aantal schepen bestudeerd. De twee onderstaande figuren geven de grootte en de spreiding van deze wachttijden weer, in beide uitgevoerde experimenten.
B o ve n grens
Cum p e rc
Aa nt
>54 0 <=54 0 <=51 0 <=48 0 <=45 0 <=42 0 <=39 0 <=36 0 <=33 0 <=30 0 <=27 0 <=24 0 <=21 0 <=18 0 <=15 0 <=12 0 <=90 <=60 <=30 < =1
1 0 0 ,0 9 9 ,7 9 9 ,7 9 9 ,7 9 9 ,7 9 9 ,7 9 9 ,7 9 9 ,7 9 9 ,5 9 9 ,2 9 9 ,0 9 8 ,8 9 8 ,4 9 8 ,0 9 7 ,1 9 5 ,0 9 1 ,5 8 3 ,0 7 0 ,0 5 6 ,6
9 0 0 0 1 0 0 8 9 5 8 12 13 32 67 118 280 429 443 1870
0
10
20
30
40
50
60
Frequentiedichtheid (%) G e m id d e ld e :
2 8 .6 4
S ta n d a a rd d e via tie :
6 3 .2 4
95% :
2 .1 5
M in im u m :
0
M a xim u m :
1 1 1 2 .1 1
T o ta a l a a n ta l
3304
Figuur 8.3: Verdeling wachttijden totaal aantal schepen in de nulvariant
B ov en g rens
C um pe rc
A a nt
> 540 <= 540 <= 510 <= 480 <= 450 <= 420 <= 390 <= 360 <= 330 <= 300 <= 270 <= 240 <= 210 <= 180 <= 150 <= 120 <=90 <=60 <=30 <=1
100 ,0 100 ,0 100 ,0 100 ,0 99,9 99,9 99,9 99,9 99,9 99,9 99,8 99,7 99,4 99,1 98,5 96,7 93,9 86,2 74,6 59,4
0 0 1 1 0 0 1 1 0 3 2 11 11 17 61 91 255 383 504 1962
0
10
20
30
40
50
60
Frequentiedichtheid (%) G em idd elde:
21.54
S tand aard de viatie:
40.30
95 % :
1.37
M inim um :
0
M a xim um :
505.72
T otaa l a antal
3304
Figuur 8.4: Verdeling wachttijden totaal aantal schepen in de modelvariant
Hoofdstuk 8: Gevoeligheidsanalyse
74
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Waarnemingen: -
De gemiddelde wachttijd voor schepen in de modelvariant is kleiner; Bij de modelvariant is het percentage schepen, met een vertraging kleiner dan een uur, groter en bovendien heeft het merendeel hiervan een wachttijd kleiner dan 30 minuten; Wat opvalt in de figuur, is dat een klein percentage schepen in de nulvariant meer 540 minuten vertraging heeft, de maximale wachttijd bedraagt zelfs 1112.11 minuten. Deze extreme waarde is terug te voeren op een piek in het aanbod van stroomgevoelige schepen op één bepaalde dag. Door de starre besturing van de sluis in de nulvariant moet het schip meerdere malen een getij over liggen. Deze grote wachttijd is niet realistisch. Er wordt hier daarom verder geen aandacht aan besteed.
In de volgende paragrafen worden de wachttijden voor de volgende categorieën schepen bestudeerd: -
Ontheffingsschepen; Stroomgebonden schepen; Lijndiensten; Overig scheepvaartverkeer.
Hierbij moet worden opgemerkt dat lijndiensten, die tevens stroomgebonden zijn in beide categorieën worden meegenomen. Het totaal aantal schepen van alle categorieën komt dus niet overeen met gegevens uit deze paragraaf.
8.2.2.
Wachttijden ontheffingsschepen
In figuur 8.5 en 8.6 wordt achtereenvolgens de verdeling van de wachttijden voor ontheffingsschepen in de nul variant en in de modelvariant in beeld gebracht.
Hoofdstuk 8: Gevoeligheidsanalyse
75
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Boven grens
Cum perc
Aant
>540
100,0
4
<=540 <=510 <=480 <=450 <=420 <=390 <=360 <=330 <=300 <=270 <=240 <=210 <=180 <=150 <=120 <=90 <=60 <=30 <=1
98,1 98,1 98,1 98,1 98,1 98,1 98,1 97,2 95,3 93,5 92,6 91,6 91,2 91,2 90,2 89,3 84,7 80,9 71,6
0 0 0 0 0 0 2 4 4 2 2 1 0 2 2 10 8 20 154
0
10
20
30
40
50
60
70
80
Frequentiedichtheid (%) Gemiddelde:
43.95
Standaard deviatie:
135.17
95%:
18.17
Minimum:
0.00
Maxim um:
1100.97
Totaal aantal
215
Figuur 8.5: Verdeling wachttijden ontheffingsschepen in de nulvariant
Boven grens
Cum perc
Aant
>540 <=540 <=510 <=480 <=450 <=420 <=390 <=360 <=330 <=300 <=270 <=240 <=210 <=180 <=150 <=120 <=90 <=60 <=30
100,0 100,0 100,0 100,0 100,0 100,0 100,0 100,0 100,0 100,0 100,0 100,0 100,0 100,0 100,0 99,5 98,6 89,8 84,7
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 19 11 22
<=1
74,4
160
0
10
20
30
40
50
60
70
80
Frequentiedichtheid (%) Gemiddelde:
11.26
Standaard deviatie:
23.28
95%:
3.21
Minimum:
0.00
Maximum:
140.13
Totaal aantal
215
Figuur 8.6: Verdeling wachttijden ontheffingsschepen in de modelvariant
Hoofdstuk 8: Gevoeligheidsanalyse
76
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Waarnemingen: -
-
-
8.2.3.
Het effect van de `voorrangsregel’ voor ontheffingsschepen is in de figuur duidelijk zichtbaar. Wachttijden groter dan 150 minuten komen niet voor in de modelvariant. In de nulvariant heeft circa 9% van de schepen een wachttijd boven de 150 minuten; Daarnaast is het opvallend dat een relatief groot aantal schepen in de modelvariant een wachttijd heeft tussen de 60 en 90 minuten. Dit percentage is veel groter dan het percentage schepen met een wachttijd tussen 30 en 60 minuten. Dit komt vermoedelijk doordat de wachttijd van een getijgebonden schip wordt gedefinieerd als het verschil tussen het openen van zijn tijpoort en het moment dat het schip daadwerkelijk richting sluis mag varen. Indien een ander schip, tevens een ontheffingsschip, direct voor het schip, in dezelfde tijpoort wordt geschut, zal het schip minstens een uur moeten wachten; Het is niet zozeer van belang voor de beoordeling van de resultaten, maar wel interessant om op te merken: in figuur 8.5 is te zien, dat er zekere `gaten´ vallen in de lengte van de wachttijd voor schepen. Deze zogenaamde gaten kan men terug voeren op het getij.
Wachttijden stroomgevoelige schepen
Figuur 8.7 en 8.8 tonen achtereenvolgens de wachttijdverdelingen van stroomgevoelige schepen in de nulvariant en de modelvariant.
Boven grens
Cum perc
Aant
>540
100,0
3
<=540 <=510 <=480 <=450 <=420 <=390 <=360 <=330 <=300 <=270 <=240 <=210 <=180 <=150 <=120 <=90 <=60 <=30 <=1
99,0 99,0 99,0 99,0 98,7 98,7 98,7 97,4 96,8 96,5 95,5 94,6 93,6 93,3 92,7 91,1 82,4 71,6 64,9
0 0 0 1 0 0 4 2 1 3 3 3 1 2 5 27 34 21 203
0
10
20
30
40
50
60
70
Frequentiedichtheid (%) Gemiddelde:
38.91
Standaard deviatie:
110.04
95%:
12.24
Minimum:
0.00
Maxim um:
1112.11
Totaal aantal
313
Figuur 8.7: Verdeling wachttijden stroomgevoelige schepen in de nulvariant
Hoofdstuk 8: Gevoeligheidsanalyse
77
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Boven grens
Cum perc
>540 <=540 <=510 <=480 <=450 <=420 <=390 <=360 <=330 <=300 <=270 <=240 <=210 <=180 <=150 <=120 <=90 <=60 <=30 <=1
100,0 100,0 100,0 100,0 100,0 100,0 100,0 100,0 99,7 99,7 99,7 99,7 99,7 99,4 99,4 98,4 97,1 89,5 78,0 66,8
Aant 0 0 0 0 0 0 0 1 0 0 0 0 1 0 3 4 24 36 35 209
0
10
20
30
Gemiddelde:
16.50
Standaard deviatie:
Minimum:
0.00
Maxim um:xxx: Figuur
40
34.39
Histogram 4354.41
50
60
95% :
3.82
Totaal aantal
313
70
Figuur 8.8: Verdeling wachttijden stroomgevoelige schepen in de modelvariant
Waarnemingen: -
Net als bij de ontheffingsschepen is hier, voor de stroomgevoelige schepen een duidelijke verbetering te zien. Circa 97% van de schepen in de modelvariant heeft een vertraging minder dan 90 minuten. Hieruit kan men opmaken dat ongeveer 97% van de schepen, eventueel even moet wachten, maar dat zij wel hun eerste tijpoort halen. Circa 67% van deze schepen hoeft helemaal niet te wachten;
Hoofdstuk 8: Gevoeligheidsanalyse
78
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
8.2.4.
Wachttijden lijndiensten
De lijndiensten in het model zijn de passagiers en containerschepen. Zij krijgen volgens de toewijzingsstrategie (modelvariant) voorrang op ander scheepvaartverkeer, indien zij anders langer dan 45 minuten moeten wachten. Figuur 8.9 laat zien hoe de wachttijden verdeeld zijn in de nulvariant, waarbij de lijndiensten geen voorrang krijgen. Figuur 8.10 geeft deze verdeling voor de modelvariant. B o ven g re n s
Cu m p e rc
A a nt
>5 40 <= 5 40 <= 5 10 <= 4 80 <= 4 50 <= 4 20 <= 3 90 <= 3 60 <= 3 30 <= 3 00 <= 2 70 <= 2 40 <= 2 10 <= 1 80 <= 1 50 <= 1 20 <= 90 <= 60 <= 30 < =1
1 00 ,0 1 00 ,0 1 00 ,0 1 00 ,0 1 00 ,0 1 00 ,0 1 00 ,0 1 00 ,0 1 00 ,0 1 00 ,0 1 00 ,0 99 ,3 98 ,6 98 ,6 97 ,1 95 ,7 90 ,7 83 ,6 67 ,1 52 ,9
0 0 0 0 0 0 0 0 0 0 1 1 0 2 2 7 10 23 20 74
0
10
20
30
40
50
60
70
Frequentiedichtheid (%) G em idd eld e:
2 7.32
S ta nd aa rd d eviatie:
4 4.68
9 5% :
7 .4 7
Min im um :
0 .0 0
M a xim um :
2 65 .4 7
T otaa l a a ntal
140
Figuur 8.9: Verdeling wachttijden lijndiensten in de nulvariant Boven grens
Cum perc
>540 <=540 <=510 <=480 <=450 <=420 <=390 <=360 <=330 <=300 <=270 <=240 <=210 <=180 <=150 <=120 <=90 <=60 <=30 <=1
100,0 100,0 100,0 100,0 100,0 100,0 100,0 100,0 100,0 100,0 100,0 100,0 100,0 100,0 99,3 99,3 98,6 96,4 84,3 67,1
Aant 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 3 17 24 94
0
10
20
30
40
50
60
70
Frequentiedichtheid (%) Gem iddelde:
11.24
Standaard deviatie:
23.83
95% :
3.98
Minimum:
0.00
Maxim um:
173.0
Totaal aantal
140
Figuur 8.10: Verdeling wachttijden lijndiensten in de modelvariant
Hoofdstuk 8: Gevoeligheidsanalyse
79
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Waarnemingen: -
-
8.2.5.
In tegenstelling tot voorgaande resultaten is bij de lijndiensten het verschil van het aantal lijndiensten met een vertraging kleiner dan een minuut in de modelvariant en in de nulvariant relatief groot. In de modelvariant loopt circa 67% van de schepen geen vertraging op. In de nulvariant is dit slechts 53% Er worden geen extreme uitschieters waargenomen, dus men kan de resultaten uit beide varianten goed beoordelen op basis van het gemiddelde. De gemiddelde wachttijd in de modelvariant is aanzienlijk lager door het toepassen van de regel, waarbij lijndiensten maximaal 45 minuten vertraagd mogen worden. Een klein percentage schepen in de modelvariant heeft echter toch een vertraging van meer dan 45 minuten. Deze vertraging wordt opgelopen, indien een conflictsituatie optreedt met een schip met hogere prioriteit. Het containerschip of passagiersschip moet dan wachten. Slechts voor een klein percentage schepen blijkt dit het geval te zijn.
Wachttijden `overig scheepvaartverkeer´
Het `overige scheepvaartverkeer´ bestaat uit alle schepen, die niet tot de voorgaande drie soorten schepen behoren. In figuur 8.11 en 8.12 is de verdeling van de wachttijden voor deze schepen weergegeven.
B oven g re ns
C um p erc
A an t
>5 40
1 00 ,0
2
<=5 40 <=5 10 <=4 80 <=4 50 <=4 20 <=3 90 <=3 60 <=3 30 <=3 00 <=2 70 <=2 40 <=2 10 <=1 80 <=1 50 <=1 20 < =90 < =60 < =30 <=1
99 ,9 99 ,9 99 ,9 99 ,9 99 ,9 99 ,9 99 ,9 99 ,8 99 ,7 99 ,7 99 ,6 99 ,3 99 ,0 97 ,9 95 ,6 91 ,7 82 ,8 68 ,9 54 ,5
0 0 0 0 0 0 2 3 0 3 8 9 29 61 10 5 23 6 36 9 38 3 1 45 2
0
10
20
30
40
50
60
Frequentiedichtheid (%) Ge m idd elde :
2 6 .36
S ta nd a ard de via tie:
44 .54
9 5% :
1.6 9
M in im um :
0 .0 0
M a xim um :
54 7.2 1
To taa l a an tal
26 62
Figuur 8.11: Verdelingen wachttijden overig scheepvaartverkeer in de nulvariant
Hoofdstuk 8: Gevoeligheidsanalyse
80
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
B oven grens
C um perc
A ant
>540 <=540 <=510 <=480 <=450 <=420 <=390 <=360 <=330 <=300 <=270 <=240 <=210 <=180 <=150 <=120 < =90 < =60 < =30 <=1
100,0 100,0 100,0 100,0 99,9 99,9 99,9 99,9 99,9 99,9 99,8 99,7 99,3 98,9 98,3 96,1 93,0 85,1 73,0 57,0
0 0 1 1 0 0 1 0 0 3 2 11 10 17 57 84 210 321 427 1517
0
10
20
30
40
50
60
Frequentiedichtheid (%) G em iddelde:
23.39
S tandaard deviatie:
42.33
95% :
1.61
Minim um :
0.00
M axim um :
505.72
Totaal aantal
2662
Figuur 8.12: Verdelingen wachttijden overig scheepvaartverkeer in de modelvariant
Waarnemingen: -
8.3.
Duidelijke verschillen zijn niet te zien. Beide figuren tonen een aantal uitschieters in wachttijd. In de nulvariant ligt dit aantal net iets hoger en hierin is tevens het maximum iets hoger; De gemiddelde wachttijd in de modelvariant is net iets lager; Door het grote percentage `overige schepen´ van het totaal aanbod, tonen beide figuren veel gelijkenis met figuur 8.3 en 8.4.
Interpretatie waarnemingen
Aan de hand van de waarnemingen van de experimentresultaten, behandeld in de vorige paragraaf, kan men het volgende concluderen: -
De toewijzingsstrategie voor sluis levert aanzienlijk minder wachttijden op voor ontheffingsschepen, stroomgevoelige schepen en lijndiensten, dan wanneer men volgens het FCFS-principe zou schutten; Door het kleine percentage schepen, die in de toewijzingsstrategie voorrang krijgen is het effect nauwelijks terug te zien in het totaalbeeld; De prioriteitsregels hebben geen negatieve invloed op de wachttijden voor het `overige scheepvaartverkeer´, dat 80% van het totaalaanbod vormt. Er is een kleine verbetering te zien; Deze kleine verbetering voor het `overige scheepvaartverkeer´ moet dan de invloed, of een deel van de invloed zijn van het tegelijkertijd schutten (regel 4 van de toewijzingsstrategie) en het voorkomen van lege schuttingen (regel 5 van de toewijzingsstrategie). Het `overige scheepvaartverkeer´ zal immers geen voordelen ondervinden van het voorlaten van andere schepen. Voor een duidelijk beeld van de invloed van deze twee regels op het gedrag van het systeem, is deze methode niet geschikt.
Hoofdstuk 8: Gevoeligheidsanalyse
81
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Hoofdstuk 8: Gevoeligheidsanalyse
82
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
9. Conclusies en aanbevelingen In paragraaf 9.1 worden de conclusies van dit onderzoek beschreven. Hierbij wordt onder andere nagegaan of het beoogde doel van het project is bereikt. In paragraaf 9.2 worden een aantal aanbevelingen gedaan voor eventuele vervolgstudies.
9.1.
Conclusies
Algemeen kan uit het onderzoek geconcludeerd worden, dat met behulp van Prosim een simulatiemodel is ontwikkeld, dat in staat is een sluisplanning te genereren. Het model is opgesplitst in twee delen: 1.
Het verkeerssimulatiemodel Hierin wordt de verkeersafwikkeling nagebootst.
2.
Het informatiesysteem Hierin wordt onder andere de invoerstroom (aanmeldingen) gegenereerd en worden alle benodigde gegevens voor het planningsproces verzameld en geordend. De planningsmotor genereert aan de hand van deze gegevens een planning voor een willekeurig dag in de simulatieperiode. Om inzicht te krijgen in het gedrag van het systeem, maakt hij hierbij gebruik van het verkeerssimulatiemodel.
Voor het lezen van de conclusies en aanbevelingen wordt opgemerkt dat het detailniveau van de planning samenhangt met de planningshorizon. Des te koter je vooruit gaat plannen, des te hoger het detailniveau van de planning moet zijn. Ten aanzien van punten waarop het model verbeterd of verfijnd zou kunnen worden is het van belang hier rekening mee te houden. Er is een duidelijk verschil tussen enerzijds verfijningen, waarmee het model met huidige planningshorizon verbeterd kan worden. Anderzijds kan het model worden verfijnd om op nog kortere termijn (bijvoorbeeld tot enkele uren tevoren) een planning te maken met behulp van het model. Deze twee verschillende soorten verfijningen lopen soms door elkaar.
9.1.1.
Conclusies ten aanzien van het verkeerssimulatiemodel
Het verkeerssimulatiemodel is gedetailleerd, maar door de afbakening van het onderzoeksgebied onvolledig. Omdat het onderzoeksgebied zich beperkt tot slechts een gedeelte van het totale systeem, zijn een aantal processen of onderdelen van het systeem niet in het model verwerkt. De belangrijkste processen, die ontbreken hangen samen met: -
Interactie met andere sluizen; Additionele diensten.
De onvolledigheid van het model heeft ongetwijfeld gevolgen voor de validiteit van het model. Door gebrek aan gegevens uit de praktijk, waarmee de modeluitvoer kan worden vergeleken blijkt een goede validatie niet mogelijk. Het verkeerssimulatiemodel is daarom, voor zover mogelijk slechts kritisch beoordeeld ten aanzien van onvolledigheid van het model. Hieruit worden de volgende conclusies getrokken: -
Omdat in dit onderzoek alleen de Noordersluis-gebonden schepen worden beschouwd, levert dit een sterk vertekend beeld op ten aanzien van de werkelijkheid. In praktijk wordt de Noordersluis vaak opgevuld met kleinere schepen. Door
Hoofdstuk 9: Conclusies en aanbevelingen
83
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
de beperkte capaciteit van het hele sluizencomplex, is dit `opvullen´ noodzakelijk om lange wachttijden voor nietNoordersluis-gebonden schepen te voorkomen. Door dit opvullen zal de totale schuttijd in de meeste gevallen aanzienlijk langer zijn. Hierdoor zullen ook de wachttijden van de schepen toenemen. Dit kan vervolgens weer invloed hebben op beslissingen, die worden genomen in het planningsproces. De planning kan er daardoor anders uit komen te zien; -
Zowel de sleepboten als de loodsen, kunnen mogelijk een flessenhals vormen in het planningsproces. Hierdoor is het mogelijk dat een planning, die door het model wordt gegenereerd, niet uitvoerbaar is wegens een tekort aan sleepboten of loodsen. Ook hierdoor kunnen de wachttijden toenemen en kan de planning enigszins veranderen. Hierbij moet men rekening houden met het feit, dat niet alleen voor de Noordersluis-gebonden schepen sleepboten en loodsen worden ingezet. Ook veel schepen, die door de Middensluis geschut worden maken gebruik van sleepboten en/of loodsen. Bovendien is er nog een aantal schepen, die het sluizencomplex helemaal niet passeren. Hierbij gaat het met name om schepen met bestemming Corusterminal, waarvoor meestal twee en soms zelfs drie sleepboten worden ingezet;
-
De sleepboten gaan in werkelijkheid soms wel en soms niet mee in de sluis. Dit hangt af van waar een sleepboot erna wordt ingezet en of de sleepboot voldoende ruimte heeft om de sluis uit te varen. Wanneer de sleepboot de sluis uitvaart kan dit, door de beperkte manoeuvreerruimte soms wel 20 minuten duren. Pas dan kan de sluisdeur gesloten worden. Met name bij pieken in het aanbod zal dit merkbaar zijn, omdat de totale schuttijd hierdoor toeneemt.
9.1.2.
Conclusies met betrekking tot de gebruikte planningsmethode
Middels een iteratief proces wordt de sluisplanning gegenereerd. Hierbij worden herhaaldelijk experimenten uitgevoerd met het verkeerssimulatiemodel. Met betrekking tot deze methode kunnen de volgende conclusies worden getrokken: -
De methode is geschikt om een volgens de gekozen toewijzingsstrategie een planning te genereren. Door het herhaaldelijk uitvoeren van experimenten met het verkeerssimulatiemodel kan worden gezocht naar de meest optimale schutvolgorde, waarbij voldaan wordt aan alle regels en randvoorwaarden van het model. Door de schepen één voor één in te delen wordt het toepassen van deze regels eenvoudiger en overzichtelijker. Hierbij moet wel worden opgemerkt dat de oplossing, die met behulp van het model wordt aangedragen, in praktijk beslist niet de meest optimale oplossing hoeft te zijn. De bedoeling van het STAA-project is om niet alleen het gebruik van de sluis te optimaliseren, maar ook de loodsen en sleepboten zo efficiënt mogelijk in te zetten. In de oplossingen, die het model aandraagt, is alleen het gebruik van de sluis geoptimaliseerd;
-
Een nadeel van het model is, dat de planningsmethode niet erg flexibel is ten aanzien van het tegelijkertijd schutten van schepen. Beslissingen, die worden genomen, kunnen later in het planningsproces niet meer worden teruggedraaid. Op het totaal aanbod kan het al of niet opvullen van de sluis een ander effect hebben.
9.1.3.
Conclusies met betrekking tot de gekozen toewijzingsstrategie
De invloed van de toewijzingsstrategie voor de sluis, die in het model wordt toegepast, op de wachttijden voor de scheepvaart, is onderzocht. Hiervoor is een gevoeligheidsanalyse uitgevoerd. Als variant op deze toewijzingsstrategie is het model zodanig aangepast, dat alle schepen op volgorde van aankomst- en vertrektijd worden ingedeeld in de planning (nulvariant). Met beide varianten zijn experimenten uitgevoerd. Aan de hand van de resultaten kan het volgende worden geconcludeerd: -
-
Door het toepassen van prioriteitsregels voor ontheffingsschepen, stroomgevoelige schepen en lijndiensten, treedt een aanzienlijke verbetering op ten aanzien van de wachttijden voor deze schepen, dan wanneer men slechts zou sturen op aankomst- en vertrektijd (FCFS); Voor het overige scheepvaartverkeer heeft dit geen negatieve gevolgen;
Hoofdstuk 9: Conclusies en aanbevelingen
84
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
-
Het effect van de toewijzingsstrategie op de totale verkeersafwikkeling is nauwelijks merkbaar. Dit komt doordat de schepen, die voordeel halen uit de prioriteitsregels, een relatief klein percentage vormen van het totaal aanbod; Uit het feit dat het voorlaten van schepen in bepaalde situaties geen negatief effect heeft op de wachttijd van het overige scheepvaartverkeer, kan men concluderen, dat met het tegelijkertijd schutten van schepen en het voorkomen van lege schuttingen in bepaalde situaties, een optimaler resultaat wordt behaald. De opzet van de experimenten bleek echter minder geschikt om dit effect duidelijker in kaart te brengen.
9.2.
Aanbevelingen
-
Het verkeerssimulatiemodel geeft binnen de grenzen van het onderzoeksgebied een goed beeld van het gedrag van het systeem. Om een beeld te krijgen van het gedrag van het gehele systeem, zijn een aantal verfijningen en uitbreidingen mogelijk. De belangrijkste onderdelen, waarop het model verbeterd kan worden, werden beschreven in paragraaf 19.1.1. Om de interactie met andere sluizen in het model te verwerken, is het niet nodig het gehele sluizencomplex in het model te verwerken. Men zou kunnen volstaan met een mogelijkheid om handmatig schepen toe te voegen, die vervolgens ook door de planningsmotor worden meegenomen. Hiervoor zijn slechts een beperkt aantal aanpassingen nodig. Er moet dan met name aandacht worden besteed aan de indeling van de sluiskolk. Een andere mogelijke oplossing is om de schuttijden met een bepaald percentage te laten oplopen. Hiervoor wordt wel aanbevolen te onderzoeken hoe groot dit percentage dient te zijn om een realistisch beeld te geven. Aangezien dit toch ook nog wat tijd vergt, wordt aangeraden voor de eerste oplossing te kiezen. Met deze oplossing kan men tegelijkertijd het probleem van de blindgangers aanpakken. Het probleem van het beperkte beschikbare aantal loodsen en sleepboten zou men kunnen oplossen door aan het gebruik een beperking op te leggen. De iteratieve planningsmethode leent zich er waarschijnlijk goed voor, dit probleem aan te pakken. Om tevens de inzet van deze additionele diensten te optimaliseren wordt uitvoerig onderzoek aanbevolen. Hierbij dient men rekening te houden met de wensen en eisen met betrekking te het gebruik van loodsen en sleepboten.
-
Binnen het onderzoeksgebied zijn een aantal aannamen gedaan. Zo is bijvoorbeeld de invloed van wind buiten beschouwing gelaten. In werkelijkheid is de windkracht en de windrichting van invloed op onder andere het gedrag van schepen en de sluiskeuze. De invloed van wind op het gedrag van schepen, kan bijvoorbeeld worden gemodelleerd, door aanpassingen in het vaarschema van het schip. Dit is echter niet eenvoudig, omdat niet alle schepen hetzelfde reageren op wind. Bij bepaalde schepen gaat alles trager bij veel wind, andere schepen zullen dan juist hun snelheid vergroten, om voldoende controle over het schip te kunnen houden. Bovendien is niet alleen de windkracht, maar ook de windrichting van belang. Voordat men het model op dit punt zou uitbreiden, wordt een uitvoerig onderzoek naar de invloed van wind op alle processen binnen het systeem aanbevolen;
-
Het idee achter het toepassen van een bepaalde toewijzingsstrategie is om het gebruik van de sluis te optimaliseren. Met behulp van de gevoeligheidsanalyse werd aangetoond dat de gekozen strategie voordelen oplevert voor met name de schepen, die op enigerwijs voorrang krijgen in bepaalde situaties. Er wordt aanbevolen de gevoeligheid van de toewijzingsstrategie nader te onderzoeken. Met de in dit onderzoek gebruikte methode kan men door het versterken of verzwakken van de prioriteitsregels de gevoeligheid ervan onderzoeken. Voor het analyseren van de invloed van regel 4 en 5 (zie paragraaf 3.4.3) op de resultaten wordt voorgesteld de resultaten van de modelvariant te vergelijken met resultaten van een variant, waarbij slechts de prioriteitsregels achter wegen worden gelaten in plaats van alle regels, zoals bij de nulvariant. Zo kan men met behulp van het simulatiemodel nader onderzoeken, of het gebruik van de sluis verder geoptimaliseerd kan worden. Het kan interessant zijn om hierin, voor zo ver dit mogelijk is, de kosten voor vertragingen te betrekken. Op die manier kan men onderzoeken of de planningsmethode daadwerkelijk winst oplevert voor de scheepvaart. Het blijkt echter niet eenvoudig te zijn om de kosten, als gevolg van een vertraging vast te stellen,
Hoofdstuk 9: Conclusies en aanbevelingen
85
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
omdat de gevolgen vaak niet bekend zijn: een bepaalde vertraging heeft meestal geen voorspelbare afloop. Het is aan te bevelen op dit punt nader onderzoek te verrichten; -
Voordat het model als planningsondersteunend systeem in praktijk bruikbaar is, zal naast de gehanteerde toewijzingsstrategie en de onvolledigheden, tevens aan een aantal andere zaken aandacht moeten worden besteed. In de eerste plaats dient het model gekoppeld te worden aan het informatiesysteem, dat gebruikt wordt voor de invoer van aanmeldingen (CESAR). Het planningsmodel moet worden gevoed met gegevens uit dit systeem. Bovendien is aandacht nodig voor de presentatiekant van de oplossingen, die het systeem aanbied. Met name de mogelijkheden tot menselijk ingrijpen zijn hierbij van belang en het model dient gebruikersvriendelijk te zijn. Een mogelijkheid variant op het gebruik van het model, zou zijn om alleen het verkeerssimulatiemodel te gebruiken en handmatig de schutvolgorde en bijbelbehorende scheepsgegevens, in te voeren. Op die manier kan men eenvoudig verschillende mogelijkheden `doorrekenen´. Bij de uitvoering van de planning kunnen inschattingsfouten van de sluismeester voorkomen worden. Het model dient dan echter wel het verkeersbeeld tot in detail weer te geven;
-
Voor de validatie van het model wordt aanbevolen het verkeerssimulatiemodel voor te leggen aan diverse ervaren personen uit de praktijk;
-
Aangezien het niet de bedoeling is geweest om met het model een specifiek onderzoek te verrichten, naar bijvoorbeeld de wachttijden voor de scheepvaart, is minder aandacht besteed aan de verificatie van de aanbodstromen. Wanneer men het model echter wel zou willen gebruiken voor onderzoek naar wachttijden bij het huidig aanbod van schepen, wordt aanbevolen de tussenaankomsttijd-verdelingen van alle type schepen binnen het model te controleren aan de hand van gegevens uit CESAR. Bovendien moet worden gecontroleerd of het percentage tijgebonden schepen van het totale aanbod overeenkomt met de realiteit. Hierbij wordt opgemerkt dat de lineaire functies voor de lengte/breedte en lengte/diepgang verhoudingen misschien niet helemaal juist zijn gekozen.
Hoofdstuk 9: Conclusies en aanbevelingen
86
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Begrippenlijst Aanvraag
Aanvraag van de cargadoor van een schip voor een ligplaats in een van de havens van het Noordzeekanaal-gebied
Aggregatieniveau
Niveau waarin denkbeeldig een bepaalde functie of activiteit wordt opgesplitst in een aantal deelfuncties of -activiteiten
Allocatie
Het toewijzen van (schaarse) middelen aan de gebruikersmogelijkheden
Astronomisch getij
Voorspelling van de variërende waterstanden en de in richting en snelheid stroming, als gevolg van de wisselende aantrekkingskrachten van de maan en de zon op de watermassa van de aarde Verzameling van componenten binnen een systeem, die als schaars goed worden omschreven
Beslissingsruimte Buitengaats
In volle zee
Buitenhaven
Vaargebied dat zich bevindt binnen de havenhoofden van IJmuiden en het Forteiland
Cargadoor
Vertegenwoordiger van het schip in de haven van bestemming
CESAR
Software pakket dat wordt gebruikt voor de registratie en planning van het scheepvaartverkeer in het NZK gebied
Estimated time of arrival
Geschatte aankomsttijd bij de Kruispost of bij het Helikopter Rendez-vous
Estimated time of departure
Geschatte vertrektijd van een schip vanaf de kade
Forteiland
Eiland in de haven van IJmuiden aan de zuidzijde van het Noorderbuitenkanaal
Gemeentelijk Havenbedrijf Amsterdam
Beheerder, exploitant en ontwikkelaar van de havens van Amsterdam
Geulschepen
Schepen, die voor het passeren van de IJ-geul vanwege hun diepgang afhankelijk zijn van zowel het vertikaal als het horizontaal getij
Havenmond
De ingang tussen de buitenhaven en de pieren
Helikopter rendez-vous
Op dit punt, 20 mijl uit de kust gelegen, worden alle geulschepen beloodst
Horizontaal getij
Verloop van de horizontale stroomsnelheden langs de kust, als gevolg van het astronomisch getij
IJ-geul
Toegangsgeul naar de havenmond voor diepstekende schepen
Begrippenlijst
87
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Informatiesysteem
Systeem, dat op zodanige wijze gegevens oproept, verwerkt en weergeeft, dat er informatie ontstaat voor de gebruiker
Keelclearance
Vrije ruimte tussen het diepste punt van het (stilliggend) schip en het ondiepste punt van de zee- of kanaalbodem
Kruispost
Op dit punt, 5 mijl uit de kust gelegen, worden alle loodsplichtige schepen, met uitzondering van de geulschepen, beloodst.
Lloyd’s register of ship's
Boek met daarin een overzicht van alle bestaande schepen met bijbehorende gegevens in de wereld
Loods
Persoon die op het schip de kapitein door het havengebied heen loodst
Loodswezen
De loodsen in het NZK-gebied worden geleverd door het Loodswezen
Manoeuvreerbaarheid
Koersstabiliteit en wendbaarheid van een schip
Marifoongebied
Ontvangstgebied van de marifoon van een schip
Mindmap
Systematische weergave van alle relevante aspecten binnen een systeem
Mindmap-methode
Methode om alle aspecten binnen een systeem systematisch weer te geven
Nautische Sector
Afdeling binnen het Gemeentelijk Havenbedrijf Amsterdam, die verantwoordelijk is voor het plannen, uitvoeren en controleren van alle activiteiten binnen het Noordzeekanaal-gebied, die betrekking hebben op de scheepvaart Tijd benodigd voor het omzetten van de kolk van het ene waterniveau naar het andere
Nivelleertijd Noorderbuitenkanaal
Vaarweg in de haven van IJmuiden ten Noorden van het Forteiland
Noordersluis-gebonden schip
Schip, dat vanwege zijn afmetingen, enkel door de Noordersluis geschut kan worden
Noordzeekanaal gebied (NZK-gebied)
Het gebied bestaande uit de havens van IJmuiden, Beverwijk, Zaanstad en Amsterdam
Ontheffingsschepen
Schepen, die voor het passeren van de sluisdrempel en van de havenmond vanwege hun afmetingen, afhankelijk zijn van zowel het verticale als het horizontale getij Tijd waarover bij een bepaalde planning vooruit wordt gezien
Planningshorizon Planningsmotor
Component binnen het informatiesysteem, die een planning opstelt met behulp van een simulatietool
Planningsondersteunend systeem
Systeem dat dient als hulpmiddel bij het plannen van bepaalde processen
Toewijzingsstrategie
Stelsel van regels, die bepalen op welke wijze schepen worden ingedeeld in de sluisplanning
Begrippenlijst
88
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Prestatie-indicator
Gegevens uit een model, die worden geregistreerd voor de beoordeling van de resultaten
Prioriteit
Mate van urgentie
Prioriteitsregel
Een regel die aangeeft welke prioriteit een schip dient te krijgen
Probleemveld
Onderzoeksgebied
Prosim
Simulatietaal
Rondetijd
Redelijk zekere ETA, waarmee in de operationele planning gewerkt wordt
Schaars middel
Middel of component binnen een systeem, waarbij de vraag de capaciteit kan overtreffen
Sluizencomplex
Complex van sluizen bij IJmuiden, bestaande uit de Noordersluis, de Middensluis, de Zuidersluis en de Kleine sluis
STAA-coördinator
Deze persoon overziet de gehele keten en betrekt de partijen bij het nemen van beslissingen
STAA-project
Alternatieve planningsmethodiek, waarbij wordt gewerkt vanuit een ketenoverkoepelend inzicht
STAA-systeem
Beslissingsondersteunende software voor het opstellen van de planning
Strategische planning
Planning omtrent de doelstellingen en het algemene beleid van een bedrijf
Stroomschepen
Schepen, die voor het passeren van de havenmond vanwege hun afmetingen, afhankelijk zijn van het horizontaal getij
Vaarschema
Een serie van opeenvolgende tijdsintervallen, die het tijdsbeslag weergeven, van iedere activiteit, die het schip moet doorlopen om zijn vaardoel te bereiken
Variant
Mogelijkheid om een bepaald schip in te delen in een planning
Velserkom
Vaargebied aan oostzijde van de sluis, dat grenst aan alle toeleidingskanalen naar de verschillende sluizen
Verificatie
Het proces, waarbij een programma systematisch wordt geanalyseerd, om alle programmeerfouten te elimineren
Verkeerssimulatiemodel
Model waarin de verkeersafwikkeling van het scheepvaartverkeer wordt nagebootst, zodat inzicht kan worden verkregen in het gedrag van het systeem
Verticaal getij
Verloop van de waterstand op zee, als gevolg van het astronomisch getij
Vletterlieden
Personen, die een schip helpen bij aan- en afmeren in de sluis
Begrippenlijst
89
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Voorlopige planning
Planning waarin slechts een beperkt deel van het scheepsaanbod is verwerkt.
Wijsmuller
Bedrijf dat de sleepboten binnen het NZK-gebied exploiteert
Begrippenlijst
90
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Lijst met afkortingen CESAR CPM ETA ETD FCFS GHA HVP LOA NZK SLC SLO SLW STAA VBA VLC VLR
Centrale Scheepvaart Afhandeling en Registratie Centraal MeldPunt Estimated Time of Arrival Estimated Time of Departure First Come First Served Gemeentelijk Havenbedrijf van Amsterdam Hoofd Verkeers Planner Loods Op Afstand Noordzeekanaal Sluis LeidingsCentrum Oostzijde van de sluis Westzijde van de sluis Ship´s Time-frame Allocation Amsterdam VoorBericht van Aankomst VerkeersLeidingsCentrum VerkeersLeider Rede
Lijst met afkortingen
91
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Literatuurlijst [1]
Kwaliteit Zeetoegangsweg Noordzeekanaalgebied Simulatie scheepvaartverkeer en prognoses Policy Research Corporation Augustus 1996
[2]
Ships´ Timeframe Allocation Amsterdam Plan van aanpak Evert Koster Juli 2001
[3]
Sluizencomplex IJmuiden Toetsing capaciteitsberekeningen Rijkswaterstaat Directie Noord-Holland Juli 2001
[4]
Model benchmark en EC Nulvariant: Sluizencomplex IJmuiden Modelbeschrijving Rijkswaterstaat Directie Noord-Holland, Incontrol Enterprise Dynamics Juli 2001
[5]
Incontrol Maritime-Sim Conceptueel model Rijkswaterstaat Directie Noord-Holland, Incontrol Enterprise Dynamics juli 2001
[6]
Prosim Modelling Language Tutorial Sierenberg & De Gans BV 1993
[7]
Prosim Reference User Guide Manual Sierenberg & De Gans BV 1993
[8]
Structured Analysis and Design Technique (SADT) D.A. Marca en C.L. McGowan 1988
[9]
Ship’s Timeframe Allocation Amsterdam Analyse en planningsregels Werkgroep STAA April 2002
Literatuurlijst
92
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
[10]
Ships´ Timeframe Allocation Amsterdam Definitiestudie Werkgroep STAA Juni 2002
[11]
Service Systems in Ports and Inland Waterways Ir R. Groenveld November 1999
[12]
Capacities of Inland Waterways Ir R. Groenveld Mei 1999
[13]
Verkeersafwikkeling Maasvlakte G.J. van de Ruit 1995
[14]
Onderzoek naar het horizontale toelatingsbeleid voor zeeschepen voor de haven van IJmuiden Dorieke Broers November 1998
[15]
Technische wiskunde 4 Deel A Technische Universiteit Delft Oktober 1997
Gebruikte internetsites [16]
http://www.getij.nl/
[17]
http://www.amsterdamports.nl
[18]
http://po.wtcm.be/ontwerporganisatie/modelleringsmethodes/idef0.html
[19]
http://www.ipl.citg.tudelft.nl/lexicon/Definities_G/basis/basis_getij.htm
[20]
http://www.hydro.nl/pgs/nl/GenG_P15.htm
[21]
http://www.ipl.citg.tudelft.nl/lexicon/Definities_G/basis/basis_getij.htm
Literatuurlijst
93
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Literatuurlijst
94
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Bijlage I: Beschrijving Ships’ Timeframe Allocation Amterdam
Bijlagen
95
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Bijlagen
96
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
In deze bijlage wordt de nodige informatie over het STAA project gegeven. Allereerst worden de feiten en achtergronden van het project uiteengezet. Vervolgens wordt de doelstelling behandeld en ten slotte wordt een korte omschrijving gegeven van het project.
I.1
Feiten en achtergronden
Het NZK-gebied levert een belangrijke bijdrage aan de Nederlandse economie. Er zijn in het gebied bovendien goede kansen aanwezig voor verdere economische ontplooiing. Men streeft naar een versterking van de concurrentiepositie van de haven binnen Europa. Met deze ambitie is een goede zeetoegang tot het haven- en industriegebied rond het NZK onontbeerlijk. Het verbeteren van de bereikbaarheid van het NZK-gebied vergt mogelijk grootschalige ingrepen, zoals het verruimen van de IJ-geul en het aanleggen van een tweede grote zeesluis. Het STAA-project is daarentegen gebaseerd op vernieuwingen op het gebied van huidige regels en procedures. Hierbij wordt met bestaande middelen en activiteiten getracht de bereikbaarheid te vergroten. Door optimalisatie van de inzet van deze middelen kan dit doel mogelijk worden bereikt. Op het Noordzeekanaal vindt een een keten van activiteiten plaats: − − − −
Het aanlopen van schepen en de begeleiding van schepen op het kanaal Het gebruik van de sluizen; Het gebruik van loodsen; De inzet van sleepboten.
Uit de praktijk is gebleken dat het huidige systeem een aantal zwakheden kent, ten aanzien van deze keten van activiteiten. De volgende worden genoemd: −
Huidige regels en afspraken over de meldingsplicht van schepen maken een lange termijn planning niet mogelijk. Schepen melden zich vaak slechts twee uur tevoren en eventuele vertragingen worden soms niet of pas laat gemeld;
−
Gebrekkige communicatie tussen partijen leidt soms tot misverstanden. Het komt vaak voor dat sleepboten of loodsen te vroeg worden ingezet, doordat zij niet goed op de hoogte zijn van de planning, die de sluismeester hanteert;
−
De korte termijn planning wordt opgesteld en gecoördineerd door de sluismeester. Dit gebeurt veelal naar eigen inschattingen en ervaringen. Het beheersaspect `tijd´ (vaartijden, schuttijden, manoeuvreertijden, etc) speelt hierin een cruciale rol. Een kleine inschattingsfout kan in dit geval al leiden tot vertragingen.
In praktijk bestaat een groot aantal onafhankelijkheden tussen de verschillende schepen, wat het efficiënt inzetten van middelen zeer ingewikkeld maakt. Door het onvoorspelbare gedrag van schepen kunnen activiteiten vaak onvoorzien uitlopen, waardoor de planning wordt verstoord. Een dergelijke planning heeft vaak vertraging op vertraging als gevolg.
I.2
Doelstelling
Het doel van STAA is om tot een standaard methodiek te komen voor de inzet van middelen vanuit een ketenoverkoepeld inzicht in de processen en afhankelijkheden in de keten. STAA richt zich met name op de Noordersluis-gebonden schepen waarbij zicht over de inzet van sleepboten en loodsen ook tot de scope wordt gerekend. Alle schakels in de keten worden op zodanige wijze ingezet dat het gebruik van de Noordersluis als kritieke factor geoptimaliseerd wordt.
Bijlagen
97
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
I.3
Omschrijving van het project
Het STAA-concept is ruim een jaar geleden gelanceerd. In maart 2002 is het bedrijf Incontrol Enterprose Dynamics in opdracht van de toenmalig havenmeester Jan Thiermann gestart met het project. STAA zal de tekortkomingen van de huidige situatie zoveel mogelijk moeten wegnemen. De methodiek omvat de volgende onderdelen: -
Een ketenoverschrijdend inzicht in de inzet en afhankelijkheden van middelen; Een planmethode die uitgaat van transparante regels; Een totaalbeeld van de actuele stand van zaken; Het voortdurend bewaken van de planning door middel van coördinatie; Communicatie van een standaard procedure; Maatregelen om in te kunnen grijpen bij de afwijking van de planning; Bevoegdheden die hierbij horen.
De STAA-methodiek omvat een planmethode en een ketenoverkoepelend inzicht. Vanwege de complexiteit van het geheel zal ondersteuning plaats vinden door een STAA-systeem. Het systeem zal een rol spelen in het besluitvormingsproces van alle betrokken partijen. Het zal dienen als een menselijke beslisser, die de berekeningen uitvoert, planningen opstelt en relevante gegevens analyseert.
Bijlagen
98
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Bijlage II: Informatie over het getij
Bijlagen
99
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Bijlagen
100
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
II.1
Algemeen
Er kan onderscheid worden gemaakt tussen het verticaal en het horizontaal getij (zie figuur B1). Met het verticaal getij wordt het verloop van de waterstand op zee aangeduid. Het horizontaal getij weerspiegelt het verloop van horizontale snelheden langs de kust.
Figuur B1 : Variatie in waterstand en in stroomsnelheid langs de kust als gevolg van het getij
De variërende waterstanden en de in richting en snelheid veranderende getijstromen zijn bijna geheel het gevolg van de wisselende aantrekkingskrachten van de maan en de zon op de watermassa van de aarde. Bij nieuwe en volle maan versterken de krachten van zon en maan elkaar en treedt springtij op, bij het eerste en laatste kwartier staan beide krachten haaks op elkaar en treedt doodtij op. Door middel van het waarnemen van lange reeksen waterstanden op een bepaalde locatie kan men met behulp van harmonische componenten een getijvoorspelling maken voor deze locatie. Men noemt dit het astronomisch getij. De fluctuaties in de waterstand gaan gepaard met stromingen langs de kust. Zowel het horizontaal getij als het verticaal getij bij IJmuiden wordt in onderstaande paragrafen behandeld.
Bijlagen
101
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
II.2
Verticaal getij bij IJmuiden
Tabel B1 geeft de gemiddelde waarden weer van hoog- en laagwater bij de verschillende maanstanden. Waterstand in cm t.o.v. NAP Springtij Gemiddeld HW Gemiddeld LW Gemiddeld tij Gemiddeld HW Gemiddeld LW Doodtij Gemiddeld HW Gemiddeld LW
+106 -76 +91 -74 +70 -68
Tabel B1: Gemiddelde waterstanden bij hoog- en laagwater bij springtij, gemiddeld tij en bij doodtij
Figuur B2 geeft het gemiddeld verloop van de waterstand weer bij IJmuiden. In de figuur is te zien dat het ruim vier uur duurt na LW voordat het water weer op zijn hoogst is. Na ruim 7 uur is het water dan weer op zijn laagst. Het is aan de kust bij IJmuiden dus veel langer eb dan vloed. Dit verschil wordt veroorzaakt door de relatieve ondiepte van de Noordzee. Het water wordt bij vloed met grote kracht de Noordzee ingedrukt. Als het water bij eb weer weg moet is deze kracht niet meer aanwezig, eb doet er daarom langer over om het water weg te krijgen.
150
waterstand in cm tov NAP
100
50
springtij gemiddeld tij doodtij
0
-50
-100
-5 -4 -3 -2 -1
0
1
2
3
4
5
6
7
8
9 10 11 12
tijd in uren tov HW
Figuur B2: Gemiddeld verloop van de waterstand aan de kust bij IJmuiden bij springtij, gemiddeld tij en bij doodtij
Bijlagen
102
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
II.3
Horizontaal getij bij IJmuiden
De fluctuaties in de waterstand gaan, zoal gezegd gepaard met stromingen langs de kust. IJmuiden kent een noordwaartse vloedstroom en een zuidwaartse ebstroom. Circa een half uur voor de waterstand zijn top bereikt heeft is de stroomsnelheid maximaal. Daarbij is de stroomsnelheid bij springtij maximaal ongeveer 1,25 m/s, en bij doodtij hoogstens 0,8 m/s. Onderstaande tabel geeft een overzicht van de stroomgegevens. In figuur B3 worden de stroomkrommen bij IJmuiden weergegeven, bij springtij, gemiddeld tij en doodtij ten opzichte van hoogwater.
Richting Duur Maximum op tijdstip Maximale stroomsnelheid
Vloedstroom
Ebstroom
NNO ca. 6 uur Ca. ½ uur voor HW Ca. 1 m/s
ZW ca. 6 uur Ca. 5 uur na HW Ca. 1,25 m/s
Tabel B2: eigenschappen van het horizontaal getij aan de kust bij IJmuiden
Bijlagen
103
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Figuur B3: Stroomkromme IJmuiden bij springtij, gemiddeld tij en doodtij ten opzichte van hoogwater
Bijlagen
104
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Bijlage III: Breedte als functie van de lengte voor de verschillende type schepen
Bijlagen
105
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Bijlagen
106
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
In de onderstaande figuren, is voor het totale aanbod van schepen over het jaar 2001 de breedte (verticale as) van ieder schip uitgezet tegen de lengte (horizontale as). Hierbij is onderscheid gemaakt naar de verschillende type schepen, die het model kent. Bulk Overslagpalen
Bu_direct
50.00
50.00
45.00
45.00
40.00
40.00
35.00
35.00
30.00
30.00
25.00
25.00
20.00
20.00
15.00
15.00
10.00 100.00
150.00
200.00
250.00
300.00
10.00 75.00
125.00 175.00 225.00 275.00 325.00
Containerschepen
General Cargoschepen 50.00
50.00 45.00
45.00
40.00 35.00 30.00 25.00
40.00
20.00 15.00 10.00 50.00
20.00
35.00 30.00 25.00 15.00 100.00
150.00
200.00
250.00
300.00
10.00 50.00
100.00
200.00
250.00
300.00
250.00
300.00
Roro schepen
Refrigerated schepen 50.00 45.00 40.00
50.00
35.00 30.00 25.00 20.00
35.00
15.00 10.00 50.00
15.00
45.00 40.00 30.00 25.00 20.00
100.00 150.00 200.00 250.00 300.00
10.00 50.00
100.00
150.00
200.00
Tankers
Passagiersschepen 50.00 45.00 40.00
50.00
35.00 30.00 25.00 20.00
35.00
15.00 10.00 50.00
15.00
Bijlagen
150.00
45.00 40.00 30.00 25.00 20.00
100.00 150.00 200.00 250.00 300.00
10.00 75.00
125.00
175.00
225.00
275.00
107
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Dredgers
Chemical Tankers
50.00
50.00
45.00
45.00 40.00
40.00 35.00
35.00 30.00
30.00 25.00
25.00 20.00
20.00 15.00 10.00 50.00
100.00
150.00
200.00
250.00
300.00
15.00 10.00 50.00
100.00
150.00
200.00
250.00
300.00
200.00
250.00
300.00
Overig
Autoschepen
50.00
50.00
45.00
45.00
40.00
40.00
35.00
35.00
30.00
30.00
25.00
25.00
20.00
20.00
15.00
15.00
10.00 50.00 100.00 150.00 200.00 250.00 300.00
10.00 50.00
100.00
150.00
Figurr B4: Breedte als functie van de lengte voor iedere type schip
Bijlagen
108
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Bijlage IV: Voorbeelden van communicatiebestanden
Bijlagen
109
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Bijlagen
110
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
In deze bijlage worden een aantal voorbeelden gegeven van de belangrijkste communicatiebestanden: schutlijst (schutlist.txt) en `resultaten ´ (results.txt). De eerste figuur toont de schutvolgorde, die de planningmotor aangeeft, waarbij schip H wordt ingepland (nieuw schip). De schuttijden, wachttijden en andere gegevens zijn verkregen uit voorgaande simulatieruns (voorlopige planning). Alle tijden zijn uitgedrukt in minuten. Voor schip H zijn deze gegevens nog niet bekend. Schip H wordt tegelijktijd geschut met schip F(schutnummer zijn gelijk).
Figuur B5 Voorbeeld 1 van schutlist.txt
De tweede figuur toont het schutschema voor een variant op de eerste schutindeling: schip H wordt alleen geschut.
Figuur B6: Voorbeeld 2 van schutlist.txt
Bijlagen
111
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
De resultaten van beide runs met het verkeerssimulatiemodel zijn in de onderstaande figuur te zien.
Alle tijdstippen in minuten Figuur B7: Voorbeel van results.txt
Bijlagen
112
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Bijlage V: Voorbeeld Uitvoer.txt
Bijlagen
113
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Bijlagen
114
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
De onderstaande figuur laat een deel zien van de uitvoer van het verkeerssimulatiemodel, die gebruikt is bij de verificatie van het model. De resultaten van alle experimenten, die zijn uitgevoerd met het verkeerssimulatiemodel, worden hierin opgeslagen. In de figuur is slechts een klein deel weergegeven. In de figuur is duidelijk te zien, dat de schepen één voor één worden ingedeeld. Tevens is te zien, dat het eerste experiment, waarbij schip D wordt ingepland, niet aan de eisen voldoet. De variant is ongeldig en dit staat bovenaan de resultaten voor het experiment weergegeven. Uit de tijpoortgegevens blijkt, dat schip A bij deze schutvolgorde zijn eerste tijpoort mist. Er wordt dus niet voldaan aan de spelregels van het model. Op dezelfde manier, kan voor iedere ongeldige variant, worden nagegaan, waarom de variant is afgekeurd.
Bijlagen
115
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Bijlagen
116
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Bijlage VI: Beschrijving deelprocessen en procedures van het informatiesysteem
Bijlagen
117
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Bijlagen
118
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
VI.1 Simulatie voorbereiden, uitvoeren en opdracht inlezen Iedere keer als de planningsmotor een experiment wil uitvoeren met behulp van het verkeerssimulatiemodel, wordt dezelfde procedure doorlopen: -
Relevante gegevens opslaan (informatiebron voor verkeersimulatie, zie paragraaf 4.3); Simulatieprogramma runnen; Inlezen van de opdracht (zie paragraaf 4.3).
VI.2 Bepalen of twee schepen tegelijkertijd geschut kunnen worden Macro: Samenschut De planningsmotor bepaalt aan de hand van een standaardprocedure of het nieuwe schip met één of met meerde van de (al ingeplande) schepen tegelijkertijd kan worden geschut. De eerste selectie vindt plaats door globaal de grenzen aan te geven voor het verschil in aankomsttijd van beide schepen. Vervolgens wordt bepaald of de schepen qua afmetingen wel samen kunnen worden geschut. Voor het bepalen van de mogelijkheden om schepen tegelijkertijd te schutten worden de schepen ingepast in de sluis. Ieder schip wordt hiertoe gemodelleerd tot een plat vlak met een bepaalde lengte en breedte, die overeenkomen met de afmetingen van het schip. Er wordt bij het inpassen geen rekening gehouden met het eventueel meeschutten van sleepboten en andere factoren, die het ruimtebeslag beïnvloeden. Bij het schutten van meerder schepen wordt in de lengte aan beide zijde een vrije ruimte van 10 meter aangehouden om schade aan de deuren te voorkomen. De effectieve lengte van de sluis is in dit geval 380 meter. De effectieve breedte van de sluis bedraagt 47 meter. Gezien de forse afmetingen van Noordersluis-gebonden schepen is het aantal mogelijkheden om schepen gezamenlijk te schutten beperkt. Daarom wordt aangenomen dat maximaal twee Noordersluis-gebonden schepen tegelijkertijd in de sluis kunnen. Het bepalen van de sluisindeling per schutting wordt hierdoor vrij eenvoudig. Het eerste schip meert aan aan de Noordzijde en neemt hierbij zowel in de breedte als de lengte een bepaalde ruimte in beslag. De resterende effectieve breedte en lengte is afhankelijk van de marges die gelden bij verschillende indelingen. In figuur B8 zijn de verschillende mogelijkheden voor een indeling weergegeven.
Bijlagen
119
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Schip B
Schip A
Schip B
Schip A
Schip B Schip A
Figuur B8: Sluisindeling
De volgende stappen worden doorlopen om te kijken of en tegelijkertijd schutten mogelijk is: 1. Bepaal de resterende effectieve lengte bij een veiligheidsmarge van 10 meter en bepaal of volgens de eerste indeling een combinatie mogelijk is, anders 2. Bepaal de resterende effectieve breedte met een marge van 10 meter en bepaal of volgens de tweede indeling een combinatie mogelijk is, anders 3. Bepaal de resterende effectieve breedte en lengte zonder marges en bepaal of volgens de derde indeling een combinatie mogelijk is.
VI.3 Bepalen van het schutnummer bij een enkele schutting Wanneer een simulatie wordt uitgevoerd waarbij het nieuwe schip tegelijkertijd met een ander schip geschut wordt, wordt het schutnummer van dit nieuwe schip vanzelfsprekend gelijk aan het schutnummer van het schip waarmee hij samen geschut wordt. Wanneer een simulatie moet worden uitgevoerd waarbij het nieuwe schip alleen wordt geschut, is het bepalen van het schutnummer minder vanzelfsprekend. De manier waarop dit gebeurt is wordt toegelicht aan de hand van een voorbeeld: Stel met schip A, B en C zijn reeds een aantal simulaties uitgevoerd. Vervolgens moet schip D worden ingepland. De relevante gegevens van alle vier de schepen zijn weergegeven in onderstaande tabel.
Schip A Schip B Schip C Schip D
ETA/ETD 12.05 17.45 12.30 16.52
Permissie anker op 13.40 18.20 12.30 ?
Aanlopen 14.20 18.20 12.30 ?
Opmerkingen Ontheffingsschip Stroomschip -
De schepen worden vervolgens gerangschikt naar het tijdstip dat het schip toestemming heeft de sluis te naderen (perm_anker_op van het schip). Hierbij wordt de perm_anker_op van het nieuwe schip gelijkt gesteld aan de ETA/ETD van
Bijlagen
120
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
het schip (ook indien dit een vergunningsschip zou zijn, waarvoor dit tijdstip dan nog niet bekend is). Deze volgorde geeft de schutvolgorde weer, die wordt uitgevoerd. Schip Schip C Schip A Schip D Schip B
ETA/ETD 12.30 12.05 16.52 17.00
Permissie anker op 12.30 13.40 (=ETA/ETD) 17.15
Aanlopen 12.30 14.20 ? 17.35
Opmerkingen Ontheffingsschip Stroomschip
Stel nu dat bij deze volgorde schip B z’n tij mist, dan wordt dit experiment afgekeurd. Er wordt vervolgens opnieuw een simulatie uitgevoerd, waarbij schip D ná schip B wordt geschut. Alle schutnummer worden aangepast aan deze nieuwe situatie.
Bijlagen
121
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Bijlagen
122
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Bijlage VII: Beschrijving deelprocessen en procedures van het verkeerssimulatiemodel
Bijlagen
123
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Bijlagen
124
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
VII.1 Vaststellen van het tijdstip dat een schip richting sluis mag gaan varen Deze taak wordt uitgevoerd door de verkeersleider. Een proces wordt hier toegelicht aan de hand van een voorbeeld. Het moment waarop dit gebeurt is hier niet relevant. Stel er bevinden zich twee schepen in de sluis met hun neus in westelijke richting. Nu moet worden bepaald wanner het schip dat ligt te wachten bij de kruispost vanaf de kruispost mag vertrekken, opdat deze in één vloeiende beweging de sluis kan invaren en de lustijd minimaal is. Bij het passeren van de in- en uitvarende schepen mogen zich geen onveilige situaties voordoen. Zowel voor het buitentoeleidingskanaal als voor het Noorderbuitenkanaal zijn hiervoor regels opgesteld. Deze regels hangen samen met de eigenschappen van het schip en daarmee het capaciteitsbeslag van het schip op één van deze vaarwegdelen. In het buitentoeleidingskanaal zijn geen passages toegestaan. De schepen ontmoeten elkaar dus op z’n vroegst ter hoogte van het zwaaipunt. Dit punt (5) wordt gekozen als referentiepunt.
Kruispost
sluis
Voor het invarende schip wordt vastgesteld op welk tijdstip hij het eerste uitvarende schip kan ontmoeten. Als het capaciteitsbeslag van beide schepen zodanig groot is, dat ook een passage op het Noorderbuitenkanaal niet is toegestaan, dan zal de ontmoeting plaatsvinden in de buitenhaven. Aangezien het tijstip dat het uitvaren schip dit punt passeert bekend is, is ook het tijdstip dat de twee elkaar ontmoeten bekend. Dezelfde procedure volgt voor het tweede uitvarende schip. Stel nu dat het invarende schip allebei de uitvarende schepen pas in de buitenhaven kan ontmoeten, dan zal uiteraard de passeertijd met het tweede schip kritiek zijn. Aan de hand hiervan kan eenvoudig het moment worden berekend, dat het invarende schip het referentiepunt (het zwaaipunt) zal passeren: Passeertijd [5] = kritische passeertijd [4] + vaartijd van het schip van [4] naar [5] Indien de schepen elkaar wel in het Noorderbuitenkanaal kunnen ontmoeten dan kan direct de passeertijd in het referentiepunt worden bepaald. Aangezien de vaartijden van het invarende schip bekend zijn, kan nu met behulp van een standaard procedure worden teruggerekend naar het vertrekmoment van het schip (zie bijlage VII.2). In deze procedure worden alle passeertijden van het schip tot in de sluis bepaald.
VII.2 Voor- en achterwaartse berekening van de passeertijden van het schip Macro: Passtijden1 en Passtijden2 De vaartijd van een schip tot aan de sluis staat vast. Het exacte tijdstip dat het schip aan zijn vaartraject begint moet nu juist worden bepaald. Aangezien de duur van het schutproces een onzekere factor is, omdat dit afhangt van het aantal schepen dat wordt meegeschut, wordt het traject hier opgesplits. Zodra meer bekend is over de schutting en bijbehorende schuttijden, kan de gehele route vanaf het uitvaren tot aan de eindbestemming van het schip in de tijd worden geplaatst.
Bijlagen
125
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
II.2.1 Vaartijden tot aan de sluis Indien een referentiepunt is gegeven, waarvan de passeertijd van een zeker schip bekend is, dan kan met behulp van deze procedure het gehele vaarroute van het schip tot aan de sluis met bijbehorende tijdstippen worden bepaald. Dit referentiepunt is een passagepunt ergens op de route van het schip naar de sluis waarvan de passeertijd bekend is. Dit kan bijvoorbeeld het vertrektijdstip vanaf de Kruispost zijn. Aan de hand hiervan kan een voorspelling worden gemaakt van wanneer het schip zich waar op de route zal bevinden. Het referentiepunt kan echter ook een passagepunt zijn in de buurt van de sluis. In dat geval worden ook de passeertijden van punten, die zich eerder op de route van het schip liggen bepaald. Met deze achterwaartse berekening kan zo het vertrektijdstip vanaf bijvoorbeeld de Kruispost worden vastgesteld. De procedure luidt als volgt: De nummers van de punten komen overeen met de nummers uit figuur 4.6. Als het schip aan westzijde van de sluis aankomt Punt := referentiepunt Zolang refpunt > 1 EN punt ≤ referentiepunt {achterwaartse berekening} Passeren[punt-1] van dit schip := passeren[punt] van het schip – vaartijd van (punt-1) naar (punt) Punt := punt – 1 Einde Punt := refpunt Zolang punt ≥ refpunt EN punt < 6 {voorwaartse berekening} Passeren[punt+1] van het schip := passeren[punt] van het schip + vaartijd van (punt) naar (punt+1) punt := punt + 1 einde einde als het schip aan oostzijde van de sluis aankomt Punt := referentiepunt Zolang refpunt < 10 EN punt ≥ referentiepunt {achterwaarte berekening} Passeren[punt+1] van het schip := passeren[punt] van het schip - vaartijd van (punt) naar (punt+1) punt := punt + 1 einde Punt := refpunt Zolang punt ≤ refpunt EN punt < 6 {voorwaartse berekening} Passeren[punt-1] van dit schip := passeren[punt] van het schip + vaartijd van (punt-1) naar (punt) Punt := punt – 1 Einde Einde Voor gelichterde schepen geldt echter een afwijkende procedure. Deze schepen komen namelijk niet vanaf de Kruispost, maar varen vanaf de Y-palen in het Noorderbuitenkanaal de sluis in. Het startpunt van deze schepen is in dit model gesitueerd aan het begin van het Noorderbuitenkanaal (passagepunt [4]). Om toch iedere keer gebruik te kunnen maken van deze procedure worden de passeertijden van punten vóór het Noorderbuitenkaal gelijk gesteld aan de passeertijd van het schip in het beginpunt. De procedure is als volgt: Als het schip vanaf de Y-palen komt Punt := referentiepunt Zolang refpunt > 1 EN punt ≤ referentiepunt Als punt > 4 Bijlagen
{achterwaartse berekening}
126
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Passeren[punt-1] van dit schip := passeren[punt] van het schip – vaartijd van (punt-1) naar (punt) Als punt ≤ 4 Passeren[punt-1] van dit schip := passeren[punt] van het schip einde Punt := punt – 1 Einde Punt := refpunt Zolang punt ≥ refpunt EN punt < 6 {voorwaartse berekening} Als punt ≥ 4 Passeren[punt+1] van het schip := passeren[punt] van het schip + vaartijd van (punt) naar (punt+1) einde Als punt < 4 Passeren[punt+1] van het schip := passeren[punt] van het schip einde punt := punt + 1 einde einde VII.2.2 Exacte vaartijden vanaf de sluis tot aan de eindbestemming Wanneer het laatste schip richting de sluis vaart en de passeertijden van dit schip bekend zijn, kunnen ook de schuttijden worden bepaald en daarmee het tijdstip dat de sluis vrij komt (zie bijlage VII.3). Wanneer dit bekend is kan ook het vervolgtraject van ieder schip uit deze schutting worden vastgesteld. De procedure is voor ieder schip gelijk, dus ook voor gelichterde schepen. Deze leggen immer na de sluis hetzelfde traject af. De procedure is als volgt: als het schip aan westzijde van de sluis aankomt Punt := referentiepunt Zolang refpunt < 10 EN punt ≥ referentiepunt {voorwaarte berekening} Passeren[punt+1] van het schip := passeren[punt] van het schip + vaartijd van (punt) naar (punt+1) punt := punt + 1 einde Punt := refpunt Zolang punt > 7 EN punt ≤ 10 {achterwaartse berekening} Passeren[punt-1] van dit schip := passeren[punt] van het schip - vaartijd van (punt-1) naar (punt) Punt := punt – 1 Einde Einde als het schip aan oostzijde van de sluis aankomt Punt := referentiepunt Zolang refpunt >1 EN punt ≤ referentiepunt {achterwaarte berekening} Passeren[punt-1] van het schip := passeren[punt] van het schip + vaartijd van (punt-1) naar (punt) punt := punt - 1 einde Punt := refpunt
Bijlagen
127
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Zolang punt ≥ refentiepunt EN punt < 6 {voorwaartse berekening} Passeren[punt+1] van dit schip := passeren[punt] van het schip - vaartijd van (punt) naar (punt+1) Punt := punt – 1 Einde Einde
VII.3 Schuttijden bepalen Macro: Tijden bepalen Zodra het laatste schip richting de sluis vaart kunnen de schuttijden worden voorspeld. Wanneer dit schip namelijk vertrokken is kan met redelijke zekerheid worden voorspeld wanneer het schip de sluis zal binnen varen en wanneer vervolgens, als het schip in de kolk ligt aangemeerd, de deur van de kolk gesloten kan worden. De variabelen in deze berekening worden als volgt gedefinieerd: Deze zijde: Overzijde: Taanl Aanl_tijdstip: Ti: Tb: Tu: Sluisvrij[over zijde]: Sluisvrij[deze zijde]:
aankomstzijde van het laatste schip tegenovergestelde zijde van deze zijde tijd, die het laatste schip nodig heeft om van het vertrekpunt (passeerpunt[1] of [10]) naar de sluis te varen (nog voordat begonnen wordt met invaren) Vertrektijd van dit schip vanaf dit vertrekpunt (aanlopen van de sluis) invaartijd van het laatste schip operatietijd som van de uitvaartijden moment dat het laatste schip is uitgevaren moment dat de sluis aan deze zijde vrijkomt, als leegom wordt geschut
Het uiteindelijke doel van de berekening is om zowel het tijdstip dat de sluis aan westzijde weer vrij komt, als het tijdstip dat de sluis aan oostzijde vrijkomt te bepalen. Deze gegevens zijn van belang voor het bepalen van de volgende schutting. Dit gebeurt als volgt: Taanl := passeren[6] van het schip – passeren[1] van het schip , voor oostgaand verkeer Taanl : = passeren[7] van het schip – passeren[10] van het schip, voor westgaand verkeer Tb : = deur sluiten + omzetten + deur openen (≈ 19 minuten) Uitvaren van het voorste schip in de sluiskolk begint direct nadat de deur geopend is. Wanneer zich meerdere schepen in de kolk bevinden, dan kunnen deze achtereenvolgens uitvaren op het moment dat hun voorganger de sluis is uitgevaren. De totale uitvaartijd is dus simpelweg de som van alle uitvaartijden: Tu := Σ uitvaren van schip i Dus: Sluisvrij [overzijde] := Aanl_tijdstip van het laatste schip + Taanl + Ti + Tb + Tu Sluisvrij [aankomstzijde van het schip] := Sluisvrij [overzijde] + Td
Bijlagen
128
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
VII.4 Wijzigen schutvolgorde van de planningsmotor De volgorde van schutten, die de planningsmotor aangeeft wordt niet altijd exact zo uitgevoerd. De scheduler kan deze schutvolgorde enigszins wijzigen, als daarmee voldaan wordt aan regel vier (zie paragraaf 3.4.3). De planningsmotor heeft namelijk bij het bepalen van deze schutvolgorde onvolledig zicht op het verloop van processen bij de uitvoering van deze schutvolgorde, daarom maakt deze immers gebruikt van het simulatiemodel. Zonder dit inzicht kan niet goed worden ingeschat welke handeling nu efficiënter is: leegom of tegenschutten. In het eerste geval wordt de volgorde van de planningsmotor dus aangehouden. Het tweede geval laat de schepen aan de overzijde voor gaan, zodat niet leeg hoeft te worden geschut. Een en ander wordt toegelicht aan de hand van een voorbeeld. naam Schip X Schip A Schip B
Oorspronkelijk schutnummer 1 2 3
aankomstzijde
ETA/ETD
1 1 2
11:30 uur 12:45 uur 13:10 uur
Het gaat om schip A en schip B. De planningsmotor heeft bepaald dat schip A officieel eerder aan de beurt is, de sluis moet dan echter leegom. Dit geval wordt als eerste beschouwd. Schip A moet eerst 30 minuten wachten (op schip X) totdat in één vloeiende beweging de sluis kan worden ingevaren: de initiële wachttijd van schip A. Het schip vaart naar de sluis, waar hij vervolgens geschut wordt. De verkeersleider heeft vastgesteld dat de schepen elkaar in de Velserkom kunnen ontmoeten. Hiervoor dient schip B 55 minuten te wachten bij de Houtrak, voordat deze, tevens in een vloeiende beweging, de sluis kan invaren.
Bijlagen
129
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Kruispost
Noordersluis
Houtrak
19:00 18:00 Schepen kruisen ter hoogte van de Velserkom
17:00 16:00 Initiele wachttijd schip A: 30 min
15:00 14:00
ETD
Wachttijd schip B: 55 min
13:00
B
ETA
12:00 -15000
A
-10000
-5000
0
5000
10000
15000
Dan wordt het tweede geval beschouwd: schip B wordt eerder geschut, de sluis gaat niet leegom. Er wordt 10 minuten gewacht en schip B vaart dan zonder vertraging de sluis binnen. Schip A moet echter 1 uur en 35 minuten wachten voordat hij, nadat schip B is geschut, de sluis kan invaren. Kruispost
Noordersluis
Houtrak
19:00 18:00 Schepen kruisen voor de sluis zwaaipunt
17:00
Er wordt in dit geval 10 minuten op schip B gewacht
16:00 15:00 14:00
ETD Totale wachttijd schip A:
13:00
ETA
B
1 uur en 35 minuten Extra wachttijd schip A:
A
12:00 -15000
Bijlagen
-10000
-5000
0
5000
10000
15000
130
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
De totale wachttijd per geval is de som van de totale wachttijd van beide schepen: Geval 1: Geval 2:
1 uur en 25 minuten; 1 uur en 35 minuten.
De mogelijkheid die de minste wachttijden voor de betrokken schepen oplevert wordt uitgevoerd, hier dus geval 1.
VII.5 Tijpoort in het model
wa te rstand to v NAP wa te rstand to v NAP
In deze bijlage wordt beschreven, hoe een tijpoort wordt gemodelleerd en op welke wijze hier in het model mee gewerkt wordt. Er wordt net als in praktijk onderscheid gemaakt tussen de horizontale tijpoort en de verticale tijpoort. Een verticale tijpoort wordt gegeven als de tijdsperiode, dat de waterstand niet beneden NAP komt (zie figuur B9). Een horizontale tijpoort is gegeven als een tijdsinterval, waarbinnen de stroomsnelheden niet groter worden dan 0,5 m/s (zie figuur B10).
100 1 00 80 80 60 60 40 40 20 20 0 0 -20 -20 -40 -40 -60 -60 -80 -80 -100 -1 00
Verticale tijpoort 1
Verticale tijpoort 2
Tijteller2 = 2
Tijteller2 = 1
Tijteller2 = 3
tijd tijd
Figuur B9 Modellering van de verticale tijpoort
Stroomsnelheid(m/s) (m/s) Stroomsnelheid
1.5 1.5 1
Horizontale tijpoort 2
1
0.5 0.5 0
0
-0.5 -0.5 -1 -1 -1.5 -1.5
Horizontale tijpoort 3
Horizontale tijpoort 1
Tijteller1 = 1
Tijteller1 = 2 tijd tijd
Tijteller1 = 3
Tijteller1 = 4
Figuur B10 Modellering van de horizontale tijpoort
Bijlagen
131
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Bovendien is iedere tijpoort genummerd; het nummer van een tijpoort geeft aan de hoeveelste poort dit is op een zekere dag. De tijteller1 en tijteller2 houden het nummer van respectievelijk de horizontale en de verticale tijpoort bij. De teller verspringt op het moment dat een tijpoort sluit (zie figuur B8 en B9). Direct als het schip aankomt bij de Kruispost wordt, indien het schip tijgebonden is, een tijpoort aan het schip afgegeven. Deze tijpoort wordt opgesteld aan de hand van de initiële passertijden van het schip: dat wil zeggen de passeertijden van het schip voor ieder punt langs de route naar de sluis, wanneer het schip direct volgens zijn ETA zou vertrekken. De procedures voor zowel het stroom- als het ontheffingsschip worden hieronder beschreven. VII.5.1 Tijpoortafgifte stroomschepen: Als het schip een stroomschip is Als passeren[3] van het schip < tijdstip van opening horizontale tijpoort[tijteller1] Passeren[3] van het schip := tijdstip van opening horizontale tijpoort[ tijteller1] Einde Als passeren[3] va het schip ≥ tijdstip van opening horizontale tijpoort[tijteller1] Als passeren[3] va het schip ≥ tijdstip van sluiten horizontale tijpoort[tijteller1] Passeren[3] van het schip := tijdstip van opening horizontale tijpoort[ tijteller1+1] Einde Einde Referentiepunt := 3 Bepaal passeren[1] van het schip (zie bijlage VII.2) Einde Einde VII.5.2 Tijpoortafgifte ontheffingsschepen: Als het schip een ontheffingsschip is Als passeren[6] + invaren van het schip + tijd benodigd voor het sluiten van de deur < tijdstip van opening verticale tijpoort[tijteller2] Passeren[6] van het schip := tijdstip van opening verticale tijpoort[tijteller2] - invaren van het schip – tijd benodigd voor het sluiten van de deur Einde Als passeren[6] + invaren van het schip + tijd benodigd voor het sluiten van de deur ≥ tijdstip van openen verticale tijpoort[tijteller2] Als passeren[6] + invaren van het schip + tijd benodigd voor het sluiten van de deur ≥ tijdstip van sluiten verticale tijpoort[tijteller2] Passeren[6] van het schip := tijdstip van opening verticale tijpoort[tijteller2+1] - invaren van het schip – tijd benodigd voor het sluiten van de deur einde einde Referentiepunt := 6 Bepaal passeren[1] van het schip (zie bijlage VII.2) Einde Voor dit schip wordt vervolgens dezelfde procedure uitgevoerd als voor het stroomschip; het ontheffingsschip is immers ook afhankelijk van het horizontale getij
Bijlagen
132
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Bijlage VIII: Listing van het hoofdprogramma
Bijlagen
133
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Bijlagen
134
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Processen van het hoofdprogramma Proces van Main @-------------------------------------------------------------------------- @ @ VERZAMELINGEN @ @-------------------------------------------------------------------------- @ AanbodWest ← NEW SET CALLED "AanbodWest" AanbodOost ← NEW SET CALLED "AanbodOost" Voorlopige_planning ← NEW SET CALLED "Voorlopige_Planning" memo1 ← NEW SET CALLED "memo1" memo2 ← NEW SET CALLED "memo2" memo3 ← NEW SET CALLED "memo3" memo4 ← NEW SET CALLED "memo4" opties ← NEW SET CALLED "opties" varianten ← NEW SET CALLED "varianten" aanbod_vandaag ← NEW SET CALLED "aanbod_vandaag" lichterschepen ← NEW SET CALLED "lichterschepen" @-------------------------------------------------------------------------- @ @ IN- EN UITVOERFILES @ @-------------------------------------------------------------------------- @ aanbod_schepen ← NEW DATASTREAM ATTACH "aanbod_schepenS1.txt" TO aanbod_schepen lengteverdelingen ← NEW DATASTREAM ATTACH "lengteverdelingenS1.txt" TO lengteverdelingen diepgangverdelingen ← NEW DATASTREAM ATTACH "diepgangverdelingen.txt" TO diepgangverdelingen breedteverdelingen ← NEW DATASTREAM ATTACH "breedteverdelingen.txt" TO breedteverdelingen verblijftijden ← NEW DATASTREAM ATTACH "verblijftijden.txt" TO verblijftijden schipnamen ← NEW DATASTREAM ATTACH "schipnamen.txt" TO schipnamen overzicht_aanbod_dag ← NEW DATASTREAM ATTACH "overzicht_aanbod_dag.txt" TO overzicht_aanbod_dag uitvoer_beeldscherm ← NEW DATASTREAM ATTACH "uitvoer_beeldscherm.txt" TO uitvoer_beeldscherm getij1 ← NEW DATASTREAM ATTACH "H_springtij.txt" TO getij1 getij2 ← NEW DATASTREAM ATTACH "H_doodtij.txt" TO getij2 getij3 ← NEW DATASTREAM ATTACH "u_springtij.txt" TO getij3 getij4 ← NEW DATASTREAM ATTACH "u_doodtij.txt" TO getij4 wtijduitvoer ← NEW DATASTREAM
Bijlagen
135
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
ATTACH "modeluitvoer1.txt" TO wtijduitvoer modeluitvoer2 ← NEW DATASTREAM ATTACH "modeluitvoer2.txt" TO modeluitvoer2 modeluitvoer3 ← NEW DATASTREAM ATTACH "modeluitvoer3.txt" TO modeluitvoer3 modeluitvoer4 ← NEW DATASTREAM ATTACH "modeluitvoer4.txt" TO modeluitvoer4 uitvoer1 ← NEW DATASTREAM ATTACH "V:\program\verkeerssimulatie\uitvoer1.txt" TO uitvoer1 @---------------------------------------------------------------------------------------------------- @ @ COMMUNICATIE MET VERKEERSSIMULATIEMODEL @ @---------------------------------------------------------------------------------------------------- @ schutlist ← NEW DATASTREAM ATTACH "schutlist.txt" TO schutlist tijpoorten ← NEW DATASTREAM ATTACH "tijpoorten.txt" TO tijpoorten sluisinformatie ←NEW DATASTREAM ATTACH "sluisinformatie.txt" TO sluisinformatie geulschepen ← NEW DATASTREAM ATTACH "geulschepen.txt" TO geulschepen schipdimensies ← NEW DATASTREAM ATTACH "schipdimensies.txt" TO schipdimensies results ← NEW DATASTREAM ATTACH "V:\program\verkeerssimulatie\results.txt" TO results informatie ← NEW DATASTREAM ATTACH "V:\program\verkeerssimulatie\informatie.txt" TO informatie schutgegevens ← NEW DATASTREAM ATTACH "V:\program\verkeerssimulatie\schutgegevens.txt" TO schutgegevens @--------------------------------------------------------------------@ @ WINDOWS @ @--------------------------------------------------------------------@ grafiek1 ← NEW POINTSTREAM ws_verloop ← NEW WINDOW CALLED "waterstand" ATTACH grafiek1 TO ws_verloop grafiek2 ← NEW POINTSTREAM ss_verloop ← NEW WINDOW CALLED "stroom" ATTACH grafiek2 TO ss_verloop @--------------------------------------------------------------------------------------- -@ @ ACTIVEREN AANBOD- EN GETIJGENERATOR @ @----------------------------------------------------------------------------------------@ minimale_verblijftijd ← READ FROM verblijftijden maximale_verblijftijd ← READ FROM verblijftijden getal ← READ FROM verblijftijden FOR i ← 1 TO 12 Bijlagen
136
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
nieuwgen ← NEW generator char ← READ FROM aanbod_schepen min_tussentijd OF nieuwgen ← READ FROM aanbod_schepen gem_tussentijd OF nieuwgen ← READ FROM aanbod_schepen stdev_tussentijd OF nieuwgen ←READ FROM aanbod_schepen mint ← min_tussentijd OF nieuwgen tussentijdgemiddelde ← gem_tussentijd OF nieuwgen standdev ← stdev_tussentijd OF nieuwgen tussentijd OF nieuwgen ← NEW DISTRIBUTION min_lengte OF nieuwgen ←READ FROM lengteverdelingen max_lengte OF nieuwgen ← READ FROM lengteverdelingen minl ← min_lengte OF nieuwgen maxl ← max_lengte OF nieuwgen schiplengte OF nieuwgen ← NEW DISTRIBUTION rico OF nieuwgen ← READ FROM breedteverdelingen constante OF nieuwgen ← READ FROM breedteverdelingen IF (char = "BuYP")|(char = "BuDi")|(char = "Tank") rico_diepgang OF nieuwgen ← READ FROM diepgangverdelingen const_diepgang OF nieuwgen ← READ FROM diepgangverdelingen END verblijftijd OF nieuwgen ← NEW DISTRIBUTION ATTACH EXPONENTIAL(tussentijdgemiddelde) TO tussentijd OF nieuwgen ATTACH UNIFORM(minl,maxl) TO schiplengte OF nieuwgen ATTACH UNIFORM(minimale_verblijftijd,maximale_verblijftijd) TO verblijftijd OF nieuwgen SEED OF tussentijd OF nieuwgen ← READ FROM aanbod_schepen SEED OF schiplengte OF nieuwgen ← READ FROM lengteverdelingen SEED OF verblijftijd OF nieuwgen ← getal genrator[i] ← nieuwgen type OF genrator[i] ← char ACTIVATE genrator[i] FROM genereren IN genmod END ACTIVATE getijgenerator FROM astronomisch_getij IN getijmod WAIT 44640 @ getij voor 30 dagen JUMP TO handinvoer @---------------------------------------------------------------------------------------------------- @ @ REGISTREREN EN RANGSCHIKKEN VAN GEGEVENS @ @---------------------------------------------------------------------------------------------------- @ l_kolk ← 380 b_kolk ← 47
@ effectieve lengte van de sluiskolk @ effectieve breedte van de sluiskolk
eind_zijde ← 1 aantaldagen ← j+14 FOR j ← j TO aantaldagen Einde ← FALSE Dagnr ← j-6 @ inspeeltijd: 6 dagen Bijlagen
137
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
OPEN schipnamen FOR INPUT OPEN overzicht_aanbod_dag FOR OUTPUT aanboddag[j] ← NEW SET JOIN EACH aanvraag IN AanbodWest WITH aankomstdag = j TO memo1 JOIN EACH aanvraag IN AanbodOost WITH vertrekdag = j TO memo1 FOR EACH aanvraag IN memo1 firsttijpoort OF THIS aanvraag ← 0 tijpoort OF THIS aanvraag ← 0 IF vertrekdag OF THIS aanvraag = j schutnummer OF THIS aanvraag ← 0 extra_wtijd OF THIS aanvraag ← 0 IF aankomstzijde OF THIS aanvraag = 1 aankomstzijde OF THIS aanvraag ← 2 bestemming OF THIS aanvraag ← "haven_uit" IF typeschip OF THIS aanvraag = "BuYP" ETD OF THIS aanvraag ← ETD OF THIS aanvraag + 3*1440 ETA_ETD OF THIS aanvraag ← ETD OF THIS aanvraag REMOVE THIS aanvraag FROM lichterschepen IF THIS aanvraag BELONGS TO lichterschepen END END ETA_ETD OF THIS aanvraag ← ETA OF THIS aanvraag IF aankomstzijde OF THIS aanvraag = 1 ETA_ETD OF THIS aanvraag ← ETD OF THIS aanvraag IF aankomstzijde OF THIS aanvraag = 2 JOIN THIS aanvraag TO memo2 RANKED BY ETA_ETD OF THIS aanvraag REMOVE THIS aanvraag FROM memo1 END I←1 OPEN geulschepen FOR OUTPUT REWIND geulschepen FOR EACH aanvraag IN lichterschepen IF (aankomstdag OF THIS aanvraag ≥ (j-3))&(aankomstdag OF THIS aanvraag ≤ j) IF schutdag OF THIS aanvraag = j ETA OF THIS aanvraag ← ETA OF THIS aanvraag + 3*24*60 ETA_ETD OF THIS aanvraag ← ETA OF THIS aanvraag JOIN THIS aanvraag TO memo2 RANKED BY ETA_ETD OF THIS aanvraag activiteit OF THIS aanvraag ← "schutten" CONVERT i TO outstring1 FIELDLENGTH 2 WRITE outstring1;activiteit TO geulschepen WITH IMAGE A(2)X(2)A(13)| REMOVE THIS aanvraag FROM lichterschepen END IF aankomstdag OF THIS aanvraag = j activiteit OF THIS aanvraag ← "vertrekken" arrt_minutes OF THIS aanvraag ← (ETA OF THIS aanvraag)-((j-1)*24*60) CONVERT i TO outstring1 FIELDLENGTH 2 CONVERT arrt_minutes OF THIS aanvraag TO outstring2 FIELDLENGTH 8 DECIMALS 2 WRITE outstring1;activiteit;outstring2 TO geulschepen WITH IMAGE A(2)X(2)A(13)X(2)A(10)| REMOVE THIS aanvraag FROM memo2 IF THIS aanvraag BELONGS TO memo2 END IF (schutdag OF THIS aanvraag ≠ j)&(aankomstdag OF THIS aanvraag ≠ j) activiteit OF THIS aanvraag ← "lichteren" bestemming OF THIS aanvraag ← "haven_in" Bijlagen
138
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
CONVERT i TO outstring1 FIELDLENGTH 2 WRITE outstring1;activiteit TO geulschepen WITH IMAGE A(2)X(2)A(13)| END END i ← i+1 END i ← -1 CONVERT i TO outstring1 FIELDLENGTH 2 WRITE outstring1 TO geulschepen WITH IMAGE A(3)| CLOSE geulschepen JUMP TO prioriteiten FOR EACH aanvraag IN memo2 JOIN THIS aanvraag TO aanboddag[j] RANKED BY prioriteit END REMOVE EACH aanvraag IN memo2 FROM memo2 FOR EACH aanvraag IN aanboddag[j] schipnaam OF THIS aanvraag ← READ FROM schipnamen shortname OF THIS aanvraag ← READ FROM schipnamen IF aankomstzijde OF THIS aanvraag = 1 t3 ← (ETA OF THIS aanvraag)/60 t4 ← FLOOR(t3) kloktijd OF THIS aanvraag ← (t4 + ((t3-t4)*0.6))-((j-1)*24) arrt_minutes OF THIS aanvraag ← (ETA OF THIS aanvraag)-((j-1)*24*60) aanl_tijdstip OF THIS aanvraag ← arrt_minutes OF THIS aanvraag END IF aankomstzijde OF THIS aanvraag = 2 t3 ← (ETD OF THIS aanvraag)/60 t4 ← FLOOR(t3) kloktijd OF THIS aanvraag ← (t4 + ((t3-t4)*0.6))-((j-1)*24) arrt_minutes OF THIS aanvraag ← (ETD OF THIS aanvraag)-((j-1)*24*60) aanl_tijdstip OF THIS aanvraag ← arrt_minutes OF THIS aanvraag noot OF THIS aanvraag ← "geen" END perm_anker_op OF THIS aanvraag ← arrt_minutes OF THIS aanvraag END JOIN EACH aanvraag IN aanboddag[j] TO aanbod_vandaag CONVERT dagnr TO outstring15 FIELDLENGTH 2 WRITE "DAG";outstring15 TO overzicht_aanbod_dag WITH IMAGE A(3)X(1)A(2)|| WRITE "oostgaand" TO overzicht_aanbod_dag WITH IMAGE A(9)|| WRITE "naam";"type";"lengte";"breedte";"ETA/ETD";"zijde";"prioriteit" TO overzicht_aanbod_dag WITH IMAGE X(1)A(4)X(3)A(4)X(2)A(8)X(2)A(8)X(2)A(7)X(5)A(5)X(2)A(10)|| FOR EACH aanvraag IN aanboddag[j] WITH aankomstzijde = 1 type_schip ← typeschip OF THIS aanvraag CONVERT kloktijd OF THIS aanvraag TO outstring15 FIELDLENGTH 8 DECIMALS 2 CONVERT arrt_minutes OF THIS aanvraag TO outstring16 FIELDLENGTH 5 CONVERT aankomstzijde OF THIS aanvraag TO outstring17 FIELDLENGTH 5 CONVERT prioriteit OF THIS aanvraag TO outstring18 FIELDLENGTH 5 CONVERT lengte OF THIS aanvraag TO outstring19 FIELDLENGTH 6 DECIMALS 1 CONVERT breedte OF THIS aanvraag TO outstring20 FIELDLENGTH 6 DECIMALS 1 WRITE schipnaam;type_schip;outstring19;outstring20;outstring15;outstring16; Bijlagen
139
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
outstring17;outstring18 TO overzicht_aanbod_dag WITH IMAGE A(8)A(6)A(8)X(2)A(8) X(2)A(5)X(2)A(5)X(3)A(5)X(3)A(5)| END WRITE "" TO overzicht_aanbod_dag WITH IMAGE A(1)| WRITE "westgaand" TO overzicht_aanbod_dag WITH IMAGE A(9)|| WRITE "naam";"type";"lengte";"breedte";"ETA/ETD";"zijde";"prioriteit" TO overzicht_aanbod_dag WITH IMAGE X(1)A(4)X(3)A(4)X(2)A(8) X(2)A(8)X(2)A(7)X(5)A(5)X(2)A(10)|| FOR EACH aanvraag IN aanboddag[j] WITH aankomstzijde = 2 type_schip ← typeschip OF THIS aanvraag CONVERT kloktijd OF THIS aanvraag TO outstring15 FIELDLENGTH 8 DECIMALS 2 CONVERT arrt_minutes OF THIS aanvraag TO outstring16 FIELDLENGTH 5 CONVERT aankomstzijde OF THIS aanvraag TO outstring17 FIELDLENGTH 5 CONVERT prioriteit OF THIS aanvraag TO outstring18 FIELDLENGTH 5 CONVERT lengte OF THIS aanvraag TO outstring19 FIELDLENGTH 6 DECIMALS 1 CONVERT breedte OF THIS aanvraag TO outstring20 FIELDLENGTH 6 DECIMALS 1 WRITE schipnaam;type_schip;outstring19;outstring20;outstring15; outstring16;outstring17;outstring18 TO overzicht_aanbod_dag WITH IMAGE A(8)A(6)A(8)X(2)A(8)X(2)A(5)X(2)A(5)X(3) A(5)X(3)A(5)| END WRITE "-------------------------------------" TO overzicht_aanbod_dag WITH IMAGE X(5)A(38)|| CLOSE overzicht_aanbod_dag CLOSE schipnamen JUMP TO window2 JUMP TO getijschrijven JUMP TO sluisinfo Variantteller ← 0 OPEN uitvoer1 FOR OUTPUT CONVERT dagnr TO outstring17 FIELDLENGTH 2 WRITE "DAG";outstring17 TO uitvoer1 WITH IMAGE A(4)X(2)A(2)|| CLOSE uitvoer1 ACTIVATE planningsmotor FROM start IN planmod WAIT WHILE einde = FALSE JUMP TO modeluitvoer FOR EACH aanvraag IN voorlopige_planning IF (aankomstzijde OF THIS aanvraag = 1)&(typeschip OF THIS aanvraag = "BuYp") bestemming OF THIS aanvraag ← "haven_uit" END END REMOVE EACH aanvraag IN voorlopige_planning FROM voorlopige_planning REMOVE EACH aanvraag IN aanbod_vandaag FROM aanbod_vandaag HIDE wd_dagnummer END CANCEL ALL TERMINATE
Bijlagen
140
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Proces van de aanbodgenerator genereren: THIS aanvraag ← NEW aanvraag tussenaankomsttijd OF THIS aanvraag ← SAMPLE FROM tussentijd ETA OF THIS aanvraag ← vorige_ETA + tussenaankomsttijd OF THIS aanvraag verblijftijd_haven OF THIS aanvraag ← SAMPLE FROM verblijftijd ETD OF THIS aanvraag ← ETA OF THIS aanvraag + verblijftijd_haven OF THIS aanvraag lengte OF THIS aanvraag ← SAMPLE FROM schiplengte IF (type OF THIS generator = "BuYP")|(type OF THIS generator = "BuDi")|(type OF THIS generator = "Tank") diepgang OF THIS aanvraag ← (rico_diepgang OF THIS generator)*(lengte OF THIS aanvraag) + const_diepgang OF THIS generator END breedte OF THIS aanvraag ← (rico OF THIS generator)*(lengte OF THIS aanvraag) + constante OF THIS generator vorige_ETA ← ETA OF THIS aanvraag typeschip OF THIS aanvraag ← type OF THIS generator IF ETA OF THIS aanvraag ≤ 51840 JOIN THIS aanvraag TO AanbodWest JOIN THIS aanvraag TO AanbodOost END d1 ← ETA/1440 aankomstdag OF THIS aanvraag ← CEIL(d1) d2 ← ETD/1440 vertrekdag OF THIS aanvraag ← CEIL(d2) aankomstzijde OF THIS aanvraag ← 1 Bestemming OF THIS aanvraag ← "haven_in" IF (typeschip OF THIS aanvraag = "BuYP") bestemming OF THIS aanvraag ← "Y_palen" schutdag OF THIS aanvraag ← aankomstdag OF THIS aanvraag + 3 vertrekdag OF THIS aanvraag ← vertrekdag OF THIS aanvraag + 3 JOIN THIS aanvraag TO lichterschepen END prioriteit OF THIS aanvraag ← 5 IF vorige_ETA ≤ 51840 REPEAT FROM genereren END TERMINATE
Proces van de getijgenerator astronomisch_getij: j←0 FOR i ← 1 TO 200 H_springtij[i] ← READ FROM getij1 H_doodtij[i] ← READ FROM getij2 u_springtij[i] ← READ FROM getij3 u_doodtij[i] ← READ FROM getij4 END aantal_punten ← 200 Bijlagen
141
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
dt ← 3.75 dt_laatste ← 2.5 start: IF NOW < 44640 teller1 ← 1 teller2 ← 1 teller3 ← 1 teller4 ← 1 j ← j +1 tij1open ← FALSE tij2open ← FALSE T1 ← 20880 T2 ← 745 getijbeweging: dag ← j Ta ← NOW x_tov_T1 ← Ta - 20880*FLOOR(Ta/T1) curve_nr ← FLOOR(x_tov_T1/T2) begin_curve ← curve_nr begin_curve ← begin_curve-28 IF curve_nr>(28-1) dx ← x_tov_T1-curve_nr*T2 n ← FLOOR(dx/dt) n_tov_0 ← dx-n*dt H1 ← H_doodtij[n+1] +(H_springtij[n+1] - H_doodtij[n+1])/2 + (H_springtij[n+1] H_doodtij[n+1])*(COS(2*3.14*begin_curve/28))/2 H2 ← H_doodtij[n+2] +(H_springtij[n+2] - H_doodtij[n+2])/2 + (H_springtij[n+2] H_doodtij[n+2])*(SIN(2*3.14*begin_curve/28))/2 waterstand ← H1 + (n_tov_0/dt)*(H1-H2) IF n<(aantal_punten-1) waterstand ← H1 + (n_tov_0/dt_laatste)*(H1-H2) IF n=(aantal_punten-1) C1 ← u_doodtij[n+1] + (u_springtij[n+1] - u_doodtij[n+1])/2 + (u_springtij[n+1] u_doodtij[n+1])*(COS(0.5+2*3.14*begin_curve/28))/2 C2 ← u_doodtij[n+2] + (u_springtij[n+2] - u_doodtij[n+2])/2 + (u_springtij[n+2] u_doodtij[n+2])*(COS(0.5+2*3.14*begin_curve/28))/2 stroomsnelheid ← C1 + (n_tov_0/dt)*(C1-C2) IF n<(aantal_punten-1) stroomsnelheid ← C1 + (n_tov_0/dt_laatste)*(C1-C2) IF n=(aantal_punten-1) STORE waterstand IN grafiek1 STORE stroomsnelheid IN grafiek2 IF NOW > 14000 Bijlagen
142
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
IF (waterstand ≥ 0) & (tij1open=FALSE) vert_tijopen[j,teller1] ← NOW-(1440*(j-1)) tij1open ← TRUE teller1 ← teller1+1 END IF (waterstand < 0) & (tij1open=TRUE) vert_tijdicht[j,teller2] ← NOW-(1440*(j-1)) tij1open ← FALSE teller2 ← teller2+1 END IF (ABS(stroomsnelheid) ≤ 0.5) & (tij2open=FALSE) hor_tijopen[j,teller3] ← NOW-(1440*(j-1)) tij2open ← TRUE teller3 ← teller3+1 END IF (ABS(stroomsnelheid) > 0.5) & (tij2open=TRUE) hor_tijdicht[j,teller4] ← NOW-(1440*(j-1)) tij2open ← FALSE teller4 ← teller4+1 END WAIT 3.75 MINUTES REPEAT FROM getijbeweging IF NOW ≤ j*1440 REPEAT FROM start IF j<30 END TERMINATE
Proces van de planningsmotor start: WHILE aanboddag[j] IS NOT EMPTY @------------------------------------@ @ Deelproces: start @ @------------------------------------@ nieuwe_aanvraag ← FIRST aanvraag IN aanboddag[j] IF schipnaam OF nieuwe_aanvraag = "schipA" @ verwerken eerste aanvraag van vandaag A: REMOVE EACH variant IN varianten FROM varianten IF varianten IS NOT EMPTY variantteller ← 1 allereerste_aanvraag ← nieuwe_aanvraag schutnummer OF nieuwe_aanvraag ← 1 JOIN nieuwe_aanvraag TO voorlopige_planning Bijlagen
143
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
@------------------------------------@ @ Deelproces: simuleren @ @----------------------------------- @ JUMP TO schutuitvoer n←_execute("Prosim", "V:\program\verkeerssimulatie /r", TRUE) JUMP TO opdracht_lezen THIS aanvraag ← nieuwe_aanvraag IF (aanl_tijdstip OF THIS aanvraag > 1440)|(aanv_schut OF THIS aanvraag = 0) extra_wtijd OF THIS aanvraag MAX( 0, (1440 - perm_anker_op OF THIS aanvraag)) IF (aankomstzijde OF THIS aanvraag = 1)&(typeschip OF THIS aanvraag ≠ "BuYp") aankomstdag OF THIS aanvraag ← aankomstdag OF THIS aanvraag + 1 @ schip kan pas volgende dag mee @ ETA OF THIS aanvraag ← j*1440 END IF (aankomstzijde OF THIS aanvraag = 1)&(typeschip OF THIS aanvraag = "BuYp") schutdag OF THIS aanvraag ← schutdag OF THIS aanvraag + 1 @ schip kan pas volgende dag mee @ ETA OF THIS aanvraag ←(j-3)*1440 JOIN THIS aanvraag TO lichterschepen END IF aankomstzijde OF THIS aanvraag = 2 vertrekdag OF THIS aanvraag ←vertrekdag OF THIS aanvraag + 1 ETD OF THIS aanvraag ← j*1440 END variantnr ← 1 JUMP TO inlezen JUMP TO window1 @ uitvoer naar beeldscherm THIS aanvraagnieuwe_aanvraag REMOVE THIS aanvraag FROM aanboddag[j] IF THIS aanvraag BELONGS TO aanboddag[j] REMOVE THIS aanvraag FROM voorlopige_planning nieuwe_aanvraag ← FIRST aanvraag IN aanboddag[j] REPEAT FROM A END END IF nieuwe_aanvraag IS NOT allereerste_aanvraag variantteller ← 1 @------------------------------------------------ @ @ Deelproces: tegelijkertijd schutten @ @------------------------------------------------ @ tegelijkertijd_schutten: JUMP TO samenschut FOR comnr ← 1 TO 3 B: IF nieuwe_aanvraag BELONGS TO voorlopige_planning REMOVE nieuwe_aanvraag FROM voorlopige_planning Bijlagen
144
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
END IF combinatie[comnr] IS NOT EMPTY combischip ← FIRST aanvraag IN combinatie[comnr] schutnummer OF nieuwe_aanvraag ← schutnummer OF combischip JOIN nieuwe_aanvraag TO voorlopige_planning @----------------------------------- @ @ Deelproces: simuleren @ @----------------------------------- @ JUMP TO schutuitvoer n←_execute("Prosim", "V:\program\verkeerssimulatie /r", TRUE) JUMP TO opdracht_lezen IF deze_variant = "geldig" JUMP TO window1 variantteller ← variantteller + 1 END END END @--------------------------------------------------@ @ Deelproces: Enkelschutten @ @-------------------------------------------------@ enkel_schutten: IF nieuwe_aanvraag BELONGS TO voorlopige_planning REMOVE nieuwe_aanvraag FROM voorlopige_planning END @------------------------------------------------ @ @ Deelproces: Schutnummer 1 @ @-------------------------------------------------@ FOR EACH aanvraag IN voorlopige_planning JOIN THIS aanvraag TO memo1 RANKED BY schutnummer OF THIS aanvraag END THIS aanvraag ← LAST aanvraag IN memo1 aantalschuts← schutnummer OF THIS aanvraag THIS aanvraag ← FIRST aanvraag IN memo1 WITH perm_anker_op OF THIS aanvraag > perm_anker_op OF nieuwe_aanvraag IF THIS aanvraag IS NOT NONE schutnummer OF nieuwe_aanvraag ← schutnummer OF THIS aanvraag END IF THIS aanvraag IS NONE schutnummer OF nieuwe_aanvraag ← aantalschut+1 END REMOVE EACH aanvraag IN memo1 FROM memo1 VolgordeWijzigen:
Bijlagen
145
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
FOR EACH aanvraag IN voorlopige_planning WITH schutnummer OF THIS aanvraag ≤ schutnummer OF nieuwe_aanvraag schutnummer OF THIS aanvraag ← schutnummer OF THIS aanvraag + 1 END JOIN nieuwe_aanvraag TO voorlopige_planning FOR EACH aanvraag IN voorlopige_planning JOIN THIS aanvraag TO memo1 RANKED BY schutnummer OF THIS aanvraag END Vorigeschutting ← 0 FOR EACH aanvraag IN memo1 IF (schutnummer OF THIS aanvraag - vorigeschutting) > 1 schutnummer OF THIS aanvraag ← schutnummer OF THIS aanvraag - 1 END vorigeschutting ← schutnummer OF THIS aanvraag END C: @---------------------------------- @ @ Deelproces: simuleren @ @----------------------------------- @ JUMP TO schutuitvoer G: n←_execute("Prosim", "V:\program\verkeerssimulatie /r", TRUE) JUMP TO opdracht_lezen JUMP TO window1 IF (deze_variant="geldig")&(stoppen=FALSE)&(opnieuw=FALSE) @------------------------------------------------ @ @ Deelproces: Schutnummer 2 @ @------------------------------------------------ @ IF (deze_variant = "ongeldig") JOIN EACH aanvraag IN voorlopige_planning TO memo1 REMOVE nieuwe_aanvraag FROM memo1 schutnummer OF nieuwe_aanvraag ← schutnummer OF nieuwe_aanvraag + 1 THIS aanvraag ← FIRST aanvraag IN memo1 WITH schutnummer = schutnummer OF nieuwe_aanvraag WHILE THIS aanvraag IS NOT NONE schutnummer OF THIS aanvraag schutnummer OF THIS aanvraag - 1 REMOVE THIS aanvraag FROM memo1 THIS aanvraag ← FIRST aanvraag IN memo1 WITH schutnummer = schutnummer OF nieuwe_aanvraag END REPEAT FROM C END IF opnieuw = TRUE REPEAT FROM enkel_schutten END
Bijlagen
146
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
@---------------------------------------@ @ Deelproces: Variantkeuze @ @---------------------------------------@ IF nieuwe_aanvraag IS NOT NONE JUMP TO afwegen JUMP TO inlezen END Herhalen ← FALSE FOR EACH aanvraag IN voorlopige_planning IF (aanl_tijdstip OF THIS aanvraag > 1440)|(aanv_schut OF THIS aanvraag = 0) extra_wtijd OF THIS aanvraag ← MAX( 0, (1440 - perm_anker_op OF THIS aanvraag)) IF (noot OF THIS aanvraag = "ontheffingsschip")|(noot OF THIS aanvraag = "stroomschip") extra_wtijd OF THIS aanvraag ← MAX( 0, (1440 - firsttijpoort OF THIS aanvraag)) END IF (aankomstzijde OF THIS aanvraag = 1)&(typeschip OF THIS aanvraag ≠ "BuYp") aankomstdag OF THIS aanvraag ← aankomstdag OF THIS aanvraag + 1 @ schip kan pas volgende dag mee @ ETA OF THIS aanvraag ← j*1440 END IF (aankomstzijde OF THIS aanvraag = 1)&(typeschip OF THIS aanvraag = "BuYp") schutdag OF THIS aanvraag ← schutdag OF THIS aanvraag + 1 @ schip kan pas volgende dag mee ETA OF THIS aanvraag ← (j-3)*1440 JOIN THIS aanvraag TO lichterschepen END IF aankomstzijde OF THIS aanvraag = 2 vertrekdag OF THIS aanvraag ← vertrekdag OF THIS aanvraag + 1 ETD OF THIS aanvraag ← j*1440 END REMOVE THIS aanvraag FROM aanboddag[j] IF THIS aanvraag BELONGS TO aanboddag[j] REMOVE THIS aanvraag FROM voorlopige_planning nieuwe_aanvraag ← NONE IF THIS aanvraag IS nieuwe_aanvraag END END END laatste_van_planning ← LAST aanvraag IN voorlopige_planning aantalschut ← schutnummer OF laatste_van_planning IF nieuwe_aanvraag IS NOT NONE REMOVE nieuwe_aanvraag FROM aanboddag[j] laatste_aanvraag ← nieuwe_aanvraag aantal_varianten ← LENGTH OF varianten END THIS aanvraag ← laatste_van_planning FOR EACH variant IN varianten REMOVE THIS variant FROM varianten END END JUMP TO schutuitvoer2 n←_execute("Prosim", "V:\program\verkeerssimulatie /r", TRUE) variantteller ← 6 Bijlagen
147
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
var[6] ← NEW variant OPEN informatie FOR INPUT opdracht ← READ FROM informatie totale_wachttijd ← READ FROM informatie wtijd_nieuwe_aanvraag ← READ FROM informatie aantlege_schuttingen ← READ FROM informatie aantvolschut OF var[variantteller] ← READ FROM informatie eind_zijde ← READ FROM informatie sluisvrij_einde_dag[eind_zijde] ← READ FROM informatie CLOSE informatie JUMP TO window1 aantal_varianten ← 1 eindeTRUE TERMINATE
Macro´s van het hoofdprogramma afwegen minimum ← 10000 FOR EACH variant IN varianten IF totale_wtijd OF THIS variant < minimum keuze ← THIS variant minimum ← totale_wtijd OF keuze END END variantnr ← number OF keuze RETURN
Getijschrijven OPEN tijpoorten FOR OUTPUT REWIND tijpoorten Teller ← 1 FOR i ← 1 TO 4 CONVERT vert_tijopen[dagnr,i] TO outstring2 FIELDLENGTH 7 DECIMALS 2 CONVERT vert_tijdicht[dagnr,i] TO outstring3 FIELDLENGTH 7 DECIMALS 2 IF (i>0)&(vert_tijopen[dagnr,i] = 0) vert_tijopen[dagnr,i] ← vert_tijopen[dagnr+1,teller]+1440 CONVERT vert_tijopen[dagnr,i] TO outstring2 FIELDLENGTH 7 DECIMALS 2 END IF (i>0)&(vert_tijdicht[dagnr,i] = 0) vert_tijdicht[dagnr,i] ← vert_tijdicht[dagnr+1,teller]+1440 CONVERT vert_tijdicht[dagnr,i] TO outstring3 FIELDLENGTH 7 DECIMALS 2 Teller ← teller+1 END WRITE outstring2;outstring3 TO tijpoorten WITH IMAGE A(6)X(2)A(6)X(2)| END
Bijlagen
148
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
WRITE "" TO tijpoorten WITH IMAGE A(2)|| Teller ← 1 FOR i ←1 TO 7 CONVERT hor_tijopen[dagnr,i] TO outstring4 FIELDLENGTH 7 DECIMALS 2 CONVERT hor_tijdicht[dagnr,i] TO outstring5 FIELDLENGTH 7 DECIMALS 2 IF (i>0)&(hor_tijopen[dagnr,i] = 0) hor_tijopen[dagnr,i] ← hor_tijopen[dagnr+1,teller]+1440 CONVERT hor_tijopen[dagnr,i] TO outstring4 FIELDLENGTH 7 DECIMALS 2 END IF (i>0)&(hor_tijdicht[dagnr,i] = 0) hor_tijdicht[dagnr,i] ← hor_tijdicht[dagnr+1,teller]+1440 CONVERT hor_tijdicht[dagnr,i] TO outstring5 FIELDLENGTH 7 DECIMALS 2 Teller ← teller+1 END WRITE outstring4;outstring5 TO tijpoorten WITH IMAGE A(6)X(2)A(6)X(2)| END WRITE "" TO tijpoorten WITH IMAGE A(2)|| CLOSE tijpoorten RETURN
Handinvoer start: wd_dagselectie ← NEW WINDOW CALLED "dagselectie" SPECIFY WD_dagselectie ORIGIN(10,120) UNITS(5,5) wbf_ok ← NEW WOB JOIN wbf_ok TO wd_dagselectie n←_wob_button(wbf_ok,0,-16,10,4,15,1,100,"ok") selectiewindow ← NEW WOB tekst ← NEW WOB n←_wob_string(selectiewindow,0,20,10,0,15,"1",7) n←_wob_prompt(tekst,10,20,1,"kies een begindag (1 of 15)") JOIN selectiewindow TO wd_dagselectie JOIN tekst TO wd_dagselectie SHOW wd_dagselectie AT(20,20) SIZE(250,500) N ←_window_response(wd_dagselectie,TRUE) N ←_wob_string_value(selectiewindow,
) Dagnr ← CHAR1 J ← dagnr+6 HIDE wd_dagselectie IF dagnr ≥ 30 Bijlagen
149
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
REPEAT FROM start END RETURN
Inlezen OPEN results FOR INPUT FOR i ← 1 TO variantnr nr ← READ FROM results JOIN EACH aanvraag IN voorlopige_planning TO memo4 REMOVE EACH aanvraag IN voorlopige_planning FROM voorlopige_planning schipnoemer ← READ FROM results WHILE schipnoemer ≠ "end" THIS aanvraag ← FIRST aanvraag IN memo4 WITH schipnaam OF THIS aanvraag = schipnoemer typeschip OF THIS aanvraag ← READ FROM results schutnummer OF THIS aanvraag ← READ FROM results arrt_minutes ← READ FROM results perm_anker_op OF THIS aanvraag ← READ FROM results aanl_tijdstip OF THIS aanvraag ← READ FROM results extra_wtijd OF THIS aanvraag ← READ FROM results wtijd_voor OF THIS aanvraag ← READ FROM results aanv_schut OF THIS aanvraag ← READ FROM results eind_schut OF THIS aanvraag ← READ FROM results firsttijpoort OF THIS aanvraag ← READ FROM results tijpoort OF THIS aanvraag ← READ FROM results aankomstzijde OF THIS aanvraag ← READ FROM results noot OF THIS aanvraag ← READ FROM results init_wtijd OF THIS aanvraag ← READ FROM results schipnoemer ← READ FROM results REMOVE THIS aanvraag FROM memo4 JOIN THIS aanvraag TO voorlopige_planning RANKED BY schutnummer OF THIS aanvraag END laatste_van_planning ← LAST aanvraag IN voorlopige_planning aantalschut ← schutnummer OF laatste_van_planning END CLOSE results RETURN
Modeluitvoer aant_onth ← 0 aant_str ← 0 aant_lijnd ← 0 aant_over ← 0 vert_onth_sch ← 0 vert_str_sch ← 0 Bijlagen
150
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
vert_lijnd ← 0 vert_over ← 0 tot_wtijd_onth ← 0 gem_wtijd_onth ← 0 tot_wtijd_str ← 0 gem_wtijd_str ← 0 tot_wtijd_lijnd ← 0 gem_wtijd_lijnd ← 0 tot_wtijd_over ← 0 gem_wtijd_over ← 0 perct_vert_onth_sch ← 0 perct_vert_str_sch ← 0 perct_vert_lijnd ← 0 perct_vert_over ← 0 CONVERT dagnr TO outstr4 FIELDLENGTH 2 WRITE outstr4 TO modeluitvoer2 WITH IMAGE A(2)| WRITE outstr4 TO modeluitvoer4 WITH IMAGE A(2)| FOR EACH aanvraag IN voorlopige_planning IF noot OF THIS aanvraag = "ontheffingsschip" aant_onth ← aant_onth + 1 IF wtijd_voor OF THIS aanvraag > 0 vert_onth_sch ← vert_onth_sch+1 tot_wtijd_onth ← tot_wtijd_onth + wtijd_voor OF THIS aanvraag gem_wtijd_onth ← (tot_wtijd_onth)/vert_onth_sch END CONVERT firsttijpoort OF THIS aanvraag TO outstr1 FIELDLENGTH 7 DECIMALS 2 CONVERT tijpoort OF THIS aanvraag TO outstr2 FIELDLENGTH 7 DECIMALS 2 Opm ← noot OF THIS aanvraag WRITE opm;outstr1;outstr2 TO modeluitvoer4 WITH IMAGE X(5)A(20)A(9)X(3)A(9)| perct_vert_onth_sch ← (vert_onth_sch /aant_onth)*100 END IF noot OF THIS aanvraag = "stroomschip" aant_str ← aant_str + 1 IF wtijd_voor OF THIS aanvraag > 0 vert_str_sch ← vert_str_sch+1 tot_wtijd_str ← tot_wtijd_str + wtijd_voor OF THIS aanvraag gem_wtijd_str ← (tot_wtijd_str)/vert_str_sch END perct_vert_str_sch ← (vert_str_sch/aant_str)*100 CONVERT firsttijpoort OF THIS aanvraag TO outstr1 FIELDLENGTH 7 DECIMALS 2 CONVERT tijpoort OF THIS aanvraag TO outstr2 FIELDLENGTH 7 DECIMALS 2 Opm ← noot OF THIS aanvraag WRITE opm;outstr1;outstr2 TO modeluitvoer4 WITH IMAGE X(5)A(20)A(9)X(3)A(9)| END IF (typeschip OF THIS aanvraag = "Cont")|(typeschip OF THIS aanvraag = "Pass") aant_lijnd ← aant_lijnd + 1 IF wtijd_voor OF THIS aanvraag > 0 vert_lijnd ← vert_lijnd+1 Bijlagen
151
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
tot_wtijd_lijnd ← tot_wtijd_lijnd + wtijd_voor OF THIS aanvraag gem_wtijd_lijnd ← (tot_wtijd_lijnd)/ vert_lijnd END perct_vert_lijnd ← (vert_lijnd/aant_lijnd)*100 END IF (noot OF THIS aanvraag ≠ "ontheffingsschip")&(noot OF THIS aanvraag ≠ "stroomschip")&(typeschip OF THIS aanvraag ≠ "Cont")&(typeschip OF THIS aanvraag ≠ "Pass") aant_over ← aant_over + 1 IF wtijd_voor OF THIS aanvraag > 0 vert_over ← vert_over+1 tot_wtijd_over ← tot_wtijd_over + wtijd_voor OF THIS aanvraag gem_wtijd_over ← tot_wtijd_over/vert_over END perct_vert_over ← (vert_over/aant_over)*100 END CONVERT wtijd_voor OF THIS aanvraag TO outstring37 FIELDLENGTH 7 DECIMALS 2 Opm ← noot OF THIS aanvraag Char ← typeschip OF THIS aanvraag WRITE outstring37;char;opm TO modeluitvoer2 WITH IMAGE X(5)A(8)X(3)A(5)X(3)A(15)| END CONVERT aantlege_schuttingen TO outstring38 FIELDLENGTH 2 WRITE outstring38 TO modeluitvoer3 WITH IMAGE A(2)| @CONVERT dagnr TO outstring1 FIELDLENGTH 2 CONVERT aant_onth TO outstring23 FIELDLENGTH 2 CONVERT vert_onth_sch TO outstring29 FIELDLENGTH 5 CONVERT gem_wtijd_onth TO outstring33 FIELDLENGTH 7 DECIMALS 2 CONVERT aant_str TO outstring26 FIELDLENGTH 2 CONVERT vert_str_sch TO outstring30 FIELDLENGTH 5 CONVERT gem_wtijd_str TO outstring34 FIELDLENGTH 7 DECIMALS 2 CONVERT aant_lijnd TO outstring27 FIELDLENGTH 2 CONVERT vert_lijnd TO outstring31 FIELDLENGTH 5 CONVERT gem_wtijd_lijnd TO outstring35 FIELDLENGTH 7 DECIMALS 2 CONVERT aant_over TO outstring28 FIELDLENGTH 2 CONVERT vert_over TO outstring32 FIELDLENGTH 5 CONVERT gem_wtijd_over TO outstring36 FIELDLENGTH 7 DECIMALS 2 WRITE outstring23;outstring29;outstring33;outstring26;outstring30;outstring34; outstring27;outstring31;outstring35;outstring28;outstring32;outstring36 TO wtijduitvoer WITH IMAGE A(3)X(2)A(5)X(2)A(7)X(5)A(3)X(2)A(6)X(2)A(7)X(5)A(3)X(2)A(6)X(5)A(7)X(5)A(3)X(2)A(6)X(2)A(7)X(5)| RETURN
Bijlagen
152
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Opdracht lezen opnieuw ← FALSE stoppen ← FALSE deze_variant ← "geldig" OPEN informatie FOR INPUT opdracht ← READ FROM informatie REMOVE EACH aanvraag IN memo1 FROM memo1 IF (opdracht = "geldig") var[variantteller] ← NEW variant number OF var[variantteller] ← variantteller totale_wtijd OF var[variantteller] ← READ FROM informatie wtijdnieuwe_aanvraag OF var[variantteller] ← READ FROM informatie aantleegschut OF var[variantteller] ← READ FROM informatie aantvolschut OF var[variantteller] ← READ FROM informatie eindzijde OF var[variantteller] ← READ FROM informatie zijde ← eindzijde OF var[variantteller] sluisvrij_einde[zijde] OF var[variantteller] ← READ FROM informatie JOIN var[variantteller] TO varianten END IF opdracht = "stoppen" stoppen ← TRUE END IF opdracht = "opnieuw" @ eerstvolgende getij kan niet worden benut @ perm_anker_op OF nieuwe_aanvraag ← READ FROM informatie opnieuw ← TRUE END IF opdracht = "ongeldig" deze_variant ← "ongeldig" END CLOSE informatie RETURN
Prioriteiten FOR EACH aanvraag IN memo2 prioriteit OF THIS aanvraag ← 5 noot OF THIS aanvraag ← "geen" IF (typeschip OF THIS aanvraag = "Cont")|(typeschip OF THIS aanvraag = "Pass") prioriteit OF THIS aanvraag ← 4 END IF (lengte OF THIS aanvraag ≥ 200) & (aankomstzijde OF THIS aanvraag = 1) prioriteit OF THIS aanvraag ← 3 IF (typeschip OF THIS aanvraag = "Cont")|(typeschip OF THIS aanvraag = "Pass") prioriteit OF THIS aanvraag ← 2 Bijlagen
153
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
END noot OF THIS aanvraag ← "stroomschip" END IF (((diepgang OF THIS aanvraag > 13.1)|(typeschip OF THIS aanvraag = "BuYP"))&(aankomstzijde OF THIS aanvraag = 1)) prioriteit OF THIS aanvraag ← 1 noot OF THIS aanvraag ← "ontheffingsschip" END END RETURN
Samenschut i←1 deze_aanvraag ← nieuwe_aanvraag JOIN EACH aanvraag IN voorlopige_planning WITH aankomstzijde = aankomstzijde OF deze_aanvraag TO memo2 next ← FIRST aanvraag IN memo2 WHILE next IS NOT NONE p ← schutnummer OF next Tuss_aanktijd ← aanl_tijdstip OF next - arrt_minutes OF deze_aanvraag ondergrens ← -80 bovengrens ← 180 IF (schutnummer OF next ≠ 0) & (Tuss_aanktijd > ondergrens) & (Tuss_aanktijd < bovengrens) & (typeschip OF next ≠ "BuYp") JOIN next TO opties END REMOVE next FROM memo2 next ← FIRST aanvraag IN memo2 END FOR z ← 1 TO 5 combinatie[z] ← NEW SET END next ← FIRST aanvraag IN opties z←1 inpassen: WHILE next IS NOT NONE p ← schutnummer OF next FOR EACH aanvraag IN voorlopige_planning WITH schutnummer = p JOIN THIS aanvraag TO memo4 RANKED BY arrt_minutes OF THIS aanvraag END aantschepen ← LENGTH OF memo4 IF aantschepen > 1 @ maximaal 2 schepen tegelijk REMOVE next FROM opties REMOVE EACH aanvraag IN memo4 FROM memo4 next ← FIRST aanvraag IN opties REPEAT FROM inpassen END nextship ← FIRST aanvraag IN memo4 Bijlagen
154
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
B_beslag ← breedte OF nextship L_beslag ← lengte OF nextship nextship ← LAST aanvraag IN memo4 IF nextship IS NOT NONE IF breedte OF nextship + B_beslag + 10 ≤ B_kolk REMOVE EACH aanvraag IN memo4 FROM opties FOR EACH aanvraag IN memo4 JOIN THIS aanvraag TO combinatie[z] IF THIS aanvraag IS NOT nieuwe_aanvraag END REMOVE EACH aanvraag IN memo4 FROM memo4 next ← FIRST aanvraag IN opties z←z+1 REPEAT FROM inpassen END IF (l_kolk - l_beslag - 15) ≥ (lengte OF nextship + 15) REMOVE EACH aanvraag IN memo4 FROM opties FOR EACH aanvraag IN memo4 JOIN THIS aanvraag TO combinatie[z] IF THIS aanvraag IS NOT nieuwe_aanvraag END REMOVE EACH aanvraag IN memo4 FROM memo4 next ← FIRST aanvraag IN opties z←z+1 REPEAT FROM inpassen END IF ((l_kolk - l_beslag - 10) ≥ (Lengte OF nextship + 10))&((b_kolk - b_beslag) ≥ (breedte OF nextship)) REMOVE EACH aanvraag IN memo4 FROM opties FOR EACH aanvraag IN memo4 JOIN THIS aanvraag TO combinatie[z] IF THIS aanvraag IS NOT nieuwe_aanvraag END REMOVE EACH aanvraag IN memo4 FROM memo4 next ← FIRST aanvraag IN opties z←z+1 REPEAT FROM inpassen END END IF memo4 IS NOT EMPTY REMOVE EACH aanvraag IN memo4 FROM opties REMOVE EACH aanvraag IN memo4 FROM memo4 END next ← FIRST aanvraag IN opties END REMOVE EACH aanvraag IN memo2 FROM memo2 RETURN
Schutuitvoer OPEN schutlist FOR OUTPUT Bijlagen
155
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
REWIND schutlist OPEN schipdimensies FOR OUTPUT REWIND schipdimensies naam ← schipnaam OF nieuwe_aanvraag CONVERT variantteller TO outstring14 FIELDLENGTH 1 WRITE "@";"variant";"@";outstring14 TO schutlist WITH IMAGE A(1)A(7)A(1)X(1)A(1)| WRITE "@";"nieuw schip:";"@";naam TO schutlist WITH IMAGE A(1)A(12)A(1)x(1)A(6)|| WRITE "@" TO schutlist WITH IMAGE A(1) WRITE "naam";"type";"schutnr";"ETA/ETD";"anker op";"aanlopen";"wachttijden";"schuttijden";"frstprt";"prt";"zijde";"opmerking";"init wachttijd" TO schutlist WITH IMAGE A(4)X(2)A(4)X(1)A(7)X(1)A(7)X(2)A(8)X(3)A(8)X(6)A(11)x(6)A(11)X(4)A(8)x(1)A(4)X(1)A(5)X(1)A(12)X(3)A(17) WRITE "@" TO schutlist WITH IMAGE A(3)| WRITE "@" TO schutlist WITH IMAGE A(1) WRITE " extra voor " TO schutlist WITH IMAGE X(49)A(45)X(37) WRITE "@" TO schutlist WITH IMAGE A(1)|| JOIN EACH aanvraag IN voorlopige_planning TO memo3 next ← FIRST aanvraag IN memo3 WHILE next IS NOT NONE naam ← schipnaam OF next type_schip ← typeschip OF next opm ← noot OF next CONVERT schutnummer OF next TO outstring1 FIELDLENGTH 3 CONVERT arrt_minutes OF next TO outstring2 FIELDLENGTH 7 DECIMALS 2 CONVERT perm_anker_op OF next TO outstring3 FIELDLENGTH 7 DECIMALS 2 CONVERT aanl_tijdstip OF next TO outstring4 FIELDLENGTH 7 DECIMALS 2 CONVERT extra_wtijd OF next TO outstring5 FIELDLENGTH 7 DECIMALS 2 CONVERT wtijd_voor OF next TO outstring6 FIELDLENGTH 7 DECIMALS 2 CONVERT eind_schut OF next TO outstring10 FIELDLENGTH 7 DECIMALS 2 CONVERT aanv_schut OF next TO outstring11 FIELDLENGTH 7 DECIMALS 2 CONVERT firsttijpoort OF next TO outstring12 FIELDLENGTH 7 DECIMALS 2 CONVERT tijpoort OF next TO outstring13 FIELDLENGTH 7 DECIMALS 2 CONVERT aankomstzijde OF next TO outstring20 FIELDLENGTH 2 CONVERT init_wtijd OF next TO outstring22 FIELDLENGTH 7 DECIMALS 2 CONVERT lengte OF next TO outstring19 FIELDLENGTH 6 DECIMALS 2 CONVERT breedte OF next TO outstring21 FIELDLENGTH 6 DECIMALS 2 WRITE outstring19;outstring21 TO schipdimensies WITH IMAGE A(7)X(2)A(7)| WRITE naam;type_schip;outstring1;outstring2;outstring3; outstring4;outstring5;outstring6;outstring11;outstring10;outstring12;outstring13;outstring20;opm;outstring22 TO schutlist WITH IMAGE A(6)X(2)A(4)X(2)A(3)X(3)A(7)X(3)A(7)X(3)A(7)X(2)A(7)X(1)A(7)X(2)A(7)X(1)A(8)X(2)A(8)X(2)A(8)X(2)A(2)X(3)A(17)A(8)| REMOVE next FROM memo3 next ← FIRST aanvraag IN memo3 END WRITE "end" TO schutlist WITH IMAGE A(3)| CLOSE schutlist CLOSE schipdimensies RETURN
Bijlagen
156
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Window1 OPEN schutgegevens FOR INPUT OPEN uitvoer_beeldscherm FOR INPUT IF (scherm = "aan")&((variantteller = 1)|(variantteller = 6)) FOR i ← 1 TO aantal_varianten HIDE wd_schutindeling[i] scherm ← "uit" END END HIDE wd_schutindeling[6] IF wd_schutindeling[6] IS NOT NONE aantal_schuttingen ← aantvolschut OF var[variantteller] schutnr ← READ FROM schutgegevens WHILE schutnr > 0 aanvang_schut[schutnr] ← READ FROM schutgegevens einde_schut[schutnr] ← READ FROM schutgegevens richting[schutnr] ← READ FROM schutgegevens richting[schutnr] ← 3-richting[schutnr] schepen[schutnr] ← READ FROM schutgegevens schutnr ← READ FROM schutgegevens END titel_window←"variant1" IF variantteller=1 titel_window←"variant2" IF variantteller=2 titel_window←"variant3" IF variantteller=3 titel_window←"variant4" IF variantteller=4 titel_window←"variant5" IF variantteller=5 titel_window←"Definitief" IF variantteller=6 wd_schutindeling[variantteller] ← NEW WINDOW CALLED titel_window SPECIFY wd_schutindeling[variantteller] ORIGIN(10,10)UNITS(1,1) wb_schutindeling ← NEW WOB n←_wob_bitmap(wb_schutindeling,10,10,"ani1.bmp") WB_BACKGROUND[20]NEW WOB achtergr[1,1] ← READ FROM uitvoer_beeldscherm achtergr[1,2] ← READ FROM uitvoer_beeldscherm achtergr[2,1] ← READ FROM uitvoer_beeldscherm achtergr[2,2] ← READ FROM uitvoer_beeldscherm achtergr[3,1] ← READ FROM uitvoer_beeldscherm achtergr[3,2] ← READ FROM uitvoer_beeldscherm achtergr[4,1] ← READ FROM uitvoer_beeldscherm achtergr[4,2] ← READ FROM uitvoer_beeldscherm N←_WOB_POLYGON(WB_BACKGROUND[20],7,TRUE,TRUE,,4) JOIN WB_BACKGROUND[20] TO wd_schutindeling[variantteller] wb_assen[20] NEW WOB y_as[1,1] ← READ FROM uitvoer_beeldscherm Bijlagen
157
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
y_as[1,2] ← READ FROM uitvoer_beeldscherm y_as[2,1] ← READ FROM uitvoer_beeldscherm y_as[2,2] ← READ FROM uitvoer_beeldscherm y_as[3,1] ← READ FROM uitvoer_beeldscherm y_as[3,2] ← READ FROM uitvoer_beeldscherm y_as[4,1] ← READ FROM uitvoer_beeldscherm y_as[4,2] ← READ FROM uitvoer_beeldscherm N←_WOB_POLYGON(WB_assen[20],0,TRUE,TRUE,,4) JOIN WB_assen[20] TO wd_schutindeling[variantteller] wb_assen[20] ← NEW WOB x_as[1,1] ← READ FROM uitvoer_beeldscherm x_as[1,2] ← READ FROM uitvoer_beeldscherm x_as[2,1] ← READ FROM uitvoer_beeldscherm x_as[2,2] ← READ FROM uitvoer_beeldscherm x_as[3,1] ← READ FROM uitvoer_beeldscherm x_as[3,2] ← READ FROM uitvoer_beeldscherm x_as[4,1] ← READ FROM uitvoer_beeldscherm x_as[4,2] ← READ FROM uitvoer_beeldscherm N←_WOB_POLYGON(WB_assen[20],0,TRUE,TRUE,<x_as>,4) JOIN WB_assen[20] TO wd_schutindeling[variantteller] wb_lijnen[20] ← NEW WOB lijnen[1,1] ← READ FROM uitvoer_beeldscherm lijnen[1,2] ← READ FROM uitvoer_beeldscherm lijnen[2,1] ← READ FROM uitvoer_beeldscherm lijnen[2,2] ← READ FROM uitvoer_beeldscherm lijnen[3,1] ← READ FROM uitvoer_beeldscherm lijnen[3,2] ← READ FROM uitvoer_beeldscherm lijnen[4,1] ← READ FROM uitvoer_beeldscherm lijnen[4,2] ← READ FROM uitvoer_beeldscherm N←_WOB_POLYGON(WB_lijnen[20],0,TRUE,TRUE,,4) JOIN WB_lijnen[20] TO wd_schutindeling[variantteller] wb_lijnen[20] ← NEW WOB lijnen[1,1] ← READ FROM uitvoer_beeldscherm lijnen[1,2] ← READ FROM uitvoer_beeldscherm lijnen[2,1] ← READ FROM uitvoer_beeldscherm lijnen[2,2] ← READ FROM uitvoer_beeldscherm lijnen[3,1] ← READ FROM uitvoer_beeldscherm lijnen[3,2] ← READ FROM uitvoer_beeldscherm lijnen[4,1] ← READ FROM uitvoer_beeldscherm lijnen[4,2] ← READ FROM uitvoer_beeldscherm N←_WOB_POLYGON(WB_lijnen[20],0,TRUE,TRUE,,4) JOIN WB_lijnen[20] TO wd_schutindeling[variantteller] wb_lijnen[20] ← NEW WOB lijnen[1,1] ← READ FROM uitvoer_beeldscherm lijnen[1,2] ← READ FROM uitvoer_beeldscherm lijnen[2,1] ← READ FROM uitvoer_beeldscherm lijnen[2,2] ← READ FROM uitvoer_beeldscherm Bijlagen
158
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
lijnen[3,1] ← READ FROM uitvoer_beeldscherm lijnen[3,2] ← READ FROM uitvoer_beeldscherm lijnen[4,1] ← READ FROM uitvoer_beeldscherm lijnen[4,2] ← READ FROM uitvoer_beeldscherm N←_WOB_POLYGON(WB_lijnen[20],0,TRUE,TRUE,,4) JOIN WB_lijnen[20] TO wd_schutindeling[variantteller] wb_lijnen[20] ← NEW WOB lijnen[1,1] ← READ FROM uitvoer_beeldscherm lijnen[1,2] ← READ FROM uitvoer_beeldscherm lijnen[2,1] ← READ FROM uitvoer_beeldscherm lijnen[2,2] ← READ FROM uitvoer_beeldscherm lijnen[3,1] ← READ FROM uitvoer_beeldscherm lijnen[3,2] ← READ FROM uitvoer_beeldscherm lijnen[4,1] ← READ FROM uitvoer_beeldscherm lijnen[4,2] ← READ FROM uitvoer_beeldscherm N←_WOB_POLYGON(WB_lijnen[20],0,TRUE,TRUE,,4) JOIN WB_lijnen[20] TO wd_schutindeling[variantteller] wb_lijnen[20] ← NEW WOB lijnen[1,1] ← READ FROM uitvoer_beeldscherm lijnen[1,2] ← READ FROM uitvoer_beeldscherm lijnen[2,1] ← READ FROM uitvoer_beeldscherm lijnen[2,2] ← READ FROM uitvoer_beeldscherm lijnen[3,1] ← READ FROM uitvoer_beeldscherm lijnen[3,2] ← READ FROM uitvoer_beeldscherm lijnen[4,1] ← READ FROM uitvoer_beeldscherm lijnen[4,2] ← READ FROM uitvoer_beeldscherm N←_WOB_POLYGON(WB_lijnen[20],0,TRUE,TRUE,,4) JOIN WB_lijnen[20] TO wd_schutindeling[variantteller] wb_lijnen[20] ← NEW WOB lijnen[1,1] ← READ FROM uitvoer_beeldscherm lijnen[1,2] ← READ FROM uitvoer_beeldscherm lijnen[2,1] ← READ FROM uitvoer_beeldscherm lijnen[2,2] ← READ FROM uitvoer_beeldscherm lijnen[3,1] ← READ FROM uitvoer_beeldscherm lijnen[3,2] ← READ FROM uitvoer_beeldscherm lijnen[4,1] ← READ FROM uitvoer_beeldscherm lijnen[4,2] ← READ FROM uitvoer_beeldscherm N←_WOB_POLYGON(WB_lijnen[20],0,TRUE,FALSE,,4) JOIN WB_lijnen[20] TO wd_schutindeling[variantteller] wb_lijnen[20] ← NEW WOB lijnen[1,1] ← READ FROM uitvoer_beeldscherm lijnen[1,2] ← READ FROM uitvoer_beeldscherm lijnen[2,1] ← READ FROM uitvoer_beeldscherm lijnen[2,2] ← READ FROM uitvoer_beeldscherm lijnen[3,1] ← READ FROM uitvoer_beeldscherm lijnen[3,2] ← READ FROM uitvoer_beeldscherm Bijlagen
159
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
lijnen[4,1] ← READ FROM uitvoer_beeldscherm lijnen[4,2] ← READ FROM uitvoer_beeldscherm N←_WOB_POLYGON(WB_lijnen[20],9,TRUE,TRUE,,4) JOIN WB_lijnen[20] TO wd_schutindeling[variantteller] wb_lijnen[20] ← NEW WOB lijnen[1,1] ← READ FROM uitvoer_beeldscherm lijnen[1,2] ← READ FROM uitvoer_beeldscherm lijnen[2,1] ← READ FROM uitvoer_beeldscherm lijnen[2,2] ← READ FROM uitvoer_beeldscherm lijnen[3,1] ← READ FROM uitvoer_beeldscherm lijnen[3,2] ← READ FROM uitvoer_beeldscherm lijnen[4,1] ← READ FROM uitvoer_beeldscherm lijnen[4,2] ← READ FROM uitvoer_beeldscherm N←_WOB_POLYGON(WB_lijnen[20],4,TRUE,TRUE,,4) JOIN WB_lijnen[20] TO wd_schutindeling[variantteller] FOR i ← 1 TO 12 wb_lijnen[20] ← NEW WOB x1 ← 80*i+20 y1 ←-43 x2 ← x1+0.5 y2 ← -43 x3 ← x2 y3 ← -139 x4 ← x1 y4 ←-139 lijnen[1,1] ← x1 lijnen[1,2] ← y1 lijnen[2,1] ← x2 lijnen[2,2] ← y2 lijnen[3,1] ← x3 lijnen[3,2] ← y3 lijnen[4,1] ← x4 lijnen[4,2] ← y4 N←_WOB_POLYGON(WB_lijnen[20],0,TRUE,TRUE,,4) JOIN WB_lijnen[20] TO wd_schutindeling[variantteller] END I←2 WHILE i ≤ 24 tijd[i] ← NEW WOB i ← i+2 END n←_wob_prompt(tijd[2],98,-145,0,"2") n←_wob_prompt(tijd[4],178,-145,0,"4") n←_wob_prompt(tijd[6],258,-145,0,"6") n←_wob_prompt(tijd[8],338,-145,0,"8") n←_wob_prompt(tijd[10],418,-145,0,"10") Bijlagen
160
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
n←_wob_prompt(tijd[12],498,-145,0,"12") n←_wob_prompt(tijd[14],578,-145,0,"14") n←_wob_prompt(tijd[16],658,-145,0,"16") n←_wob_prompt(tijd[18],738,-145,0,"18") n←_wob_prompt(tijd[20],818,-145,0,"20") n←_wob_prompt(tijd[22],898,-145,0,"22") n←_wob_prompt(tijd[24],978,-145,0,"24") i←2 WHILE i ≤ 24 JOIN tijd[i] TO wd_schutindeling[variantteller] I ← i+2 END Titel ← NEW WOB n←_wob_prompt(titel,940,-155,0,"tijd in uren") JOIN titel TO wd_schutindeling[variantteller] Titel ← NEW WOB n←_wob_prompt(titel,453,-2,0,"ETA/ETD") JOIN titel TO wd_schutindeling[variantteller] Titel ← NEW WOB n←_wob_prompt(titel,190,-162,0,"Oostgaand verkeer") JOIN titel TO wd_schutindeling[variantteller] Titel ← NEW WOB n←_wob_prompt(titel,590,-162,0,"Westgaand verkeer") JOIN titel TO wd_schutindeling[variantteller] FOR EACH aanvraag IN aanbod_vandaag x1 ← (2*(arrt_minutes OF THIS aanvraag)/3)+22 y1 ← -19 IF aankomstzijde OF THIS aanvraag = 1 y1 ← -28 IF aankomstzijde OF THIS aanvraag = 2 y2 ← y1+5 naam ← shortname OF THIS aanvraag wb_aankomsten ← NEW WOB n←_wob_ellipse(wb_aankomsten,x1,y1,2,2,9,TRUE) IF aankomstzijde OF THIS aanvraag = 1 n←_wob_ellipse(wb_aankomsten,x1,y1,2,2,4,TRUE) IF aankomstzijde OF THIS aanvraag = 2 JOIN wb_aankomsten TO wd_schutindeling[variantteller] wb_namen[7] ← NEW WOB n←_wob_prompt(wb_namen[7],x1+1,y2+1,9,naam) IF aankomstzijde OF THIS aanvraag = 1 n←_wob_prompt(wb_namen[7],x1+1,y2+1,4,naam) IF aankomstzijde OF THIS aanvraag = 2 JOIN wb_namen[7] TO wd_schutindeling[variantteller] END FOR i ← 1 TO aantal_schuttingen wb_schutt[20] ← NEW WOB x1 ← (2*(aanvang_schut[i])/3)+22 x2 ← (2*(einde_schut[i])/3)+22 IF einde_schut[i] ≤1440 Bijlagen
161
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
x2 ← 980 IF einde_schut[i]>1440 y1 ← -i*5-37 y2 ← y1-10 schutt[1,1] ← x1 schutt[1,2] ← y1 schutt[2,1] ← x2 schutt[2,2] ← y1 schutt[3,1] ← x2 schutt[3,2] ← y2 schutt[4,1] ← x1 schutt[4,2] ← y2 N←_WOB_POLYGON(WB_schutt[20],4,TRUE,TRUE,<schutt>,4) IF richting[i] = 1 N←_WOB_POLYGON(WB_schutt[20],9,TRUE,TRUE,<schutt>,4) IF richting[i] = 2 JOIN wb_schutt[20] TO wd_schutindeling[variantteller] Titel ← NEW WOB Naam ← schepen[i] n←_wob_prompt(titel,x1-5,y1-10,0,naam) JOIN titel TO wd_schutindeling[variantteller] END Plaats ← (variantteller*210-210) SHOW wd_schutindeling[variantteller] AT(0,plaats) SIZE(1020,220) IF variantteller ≠ 6 SHOW wd_schutindeling[variantteller] AT(0,100) SIZE(1020,220) IF variantteller=6 scherm ← "aan" CLOSE schutgegevens CLOSE uitvoer_beeldscherm RETURN
Window2 wd_dagnummer ← NEW WINDOW CALLED "dag" SPECIFY wd_dagnummer ORIGIN(0,100)UNITS(1,1) wb_dagnummer ← NEW WOB n←_wob_bitmap(wb_dagnummer,1,1,"ani1.bmp") WB_BACKGROUND[20] ← NEW WOB achtergr[1,1] ← 0 achtergr[1,2] ← 0 achtergr[2,1] ← 400 achtergr[2,2] ← 0 achtergr[3,1] ← 400 achtergr[3,2] ← 400 achtergr[4,1] ← 0 achtergr[4,2] ← 400 N←_WOB_POLYGON(WB_BACKGROUND[20],7,TRUE,TRUE,,4) JOIN WB_BACKGROUND[20] TO wd_dagnummer Titel ← NEW WOB CONVERT dagnr TO outstring1 FIELDLENGTH 2 n←_wob_prompt(titel,115,70,5,outstring1) Bijlagen
162
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
JOIN titel TO wd_dagnummer SHOW wd_dagnummer AT(300,300) SIZE(250,100) RETURN
Bijlagen
163
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Bijlagen
164
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Bijlage IX Listing van het verkeerssimulatieprogramma
Bijlagen
165
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Bijlagen
166
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Processen van het verkeerssimulatieprogramma Proces van main @-------------------------------------------------------------------------- @ @ VERZAMELINGEN @ @-------------------------------------------------------------------------- @ geul ← NEW SET CALLED "geul" havenmond ←NEW SET CALLED "sluis" buitenhaven ← NEW SET CALLED "buitenhaven" noorderbuitenkanaal ← NEW SET CALLED "noorderbuitenkanaal" Y_palen ← NEW SET CALLED "Y_palen" buitentoeleidingskanaal ← NEW SET CALLED "buitentoeleidingskanaal" sluis ← NEW SET CALLED "sluis" binnentoeleidingskanaal ← NEW SET CALLED "binnentoeleidingskanaal" velserkom ← NEW SET CALLED "velserkom" NZK ← NEW SET CALLED "nzk" beschikbaar ← NEW SET CALLED "beschikbaar" einde ← NEW SET CALLED "einde" morgen ← NEW SET CALLED "morgen" verkeer_sluis ← NEW SET CALLED "verkeer_sluis" schepen ← NEW SET CALLED "schepen" tegenliggers_planner ← NEW SET CALLED "tegenliggers_planner" aanboddag ← NEW SET CALLED "aanboddag" wachtplaats[1] ← NEW SET CALLED "wachtplaats1" wachtplaats[2] ← NEW SET CALLED "wachtplaats2" memo1 ← NEW SET CALLED "memo1" memo2 ← NEW SET CALLED "memo2" memo3 ← NEW SET CALLED "memo3" voorlopige_planning ← NEW SET CALLED "voorlopige_planning" deze_schepen_planner ← NEW SET CALLED "deze_schepen_planner" deze_schepen_SLC ← NEW SET CALLED "deze_schepen_SLC" deze_schutting_SLC ← NEW SET CALLED "deze_schutting_SLC" volgende_schutting_planner ← NEW SET CALLED "volgende_schutting_planner" volgende_schutting_VLC ← NEW SET CALLED "volgende_schutting_VLC" voorgaande_schutting_VLC ← NEW SET CALLED "voorgaande_schutting_VLC" schutlijst ← NEW SET CALLED "schutlijst" volgende_schutting ← NEW SET CALLED "volgende_schutting" schepen_deze_schutting ← NEW SET CALLED "schepen_deze_schutting" ready_to_go ← NEW SET CALLED "ready_to_go" sleeplijst ← NEW SET CALLED "sleeplijst" varende_vaart ← NEW SET CALLED "varende_vaart" sleepbootkade[1] ← NEW SET CALLED "sb_kade_west" sleepbootkade[2] ← NEW SET CALLED "sb_kade_oost" in_gebruik ← NEW SET CALLED "in_gebruik" voorgaande_schutting_planner ← NEW SET CALLED "voorgaande_schutting_planner" schuttotaal ← NEW SET CALLED "schuttotaal"
Bijlagen
167
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
lichterschepen ← NEW SET CALLED "lichterschepen" @-------------------------------------------------------------------------- @ @ IN- EN UITVOERFILES @ @-------------------------------------------------------------------------- @ wtijduitvoer ← NEW DATASTREAM ATTACH "wtijduitvoer.txt" TO wtijduitvoer wachttijdschepen ← NEW DATASTREAM ATTACH "wachttijdschepen.txt" TO wachttijdschepen gegevens ← NEW DATASTREAM ATTACH "gegevens.txt" TO gegevens uitvoer ← NEW DATASTREAM ATTACH "uitvoer1.txt" TO uitvoer vaartijd ← NEW DATASTREAM ATTACH "vaartijden.txt" TO vaartijd sleepbootgegevens ← NEW DATASTREAM ATTACH "sleepboten.txt" TO sleepbootgegevens @--------------------------------------------------------------------------------------- @ @ COMMUNICATIE MET HOOFDPROGRAMMA @ @--------------------------------------------------------------------------------------- @ results ← NEW DATASTREAM ATTACH "results.txt" TO results informatie ← NEW DATASTREAM ATTACH "informatie.txt" TO informatie schutgegevens NEW DATASTREAM ATTACH "schutgegevens.txt" TO schutgegevens schutlist ← NEW DATASTREAM ATTACH "c:\Prosim\Hoofdprogramma\schutlist.txt" TO schutlist Sluisinfo ← NEW DATASTREAM ATTACH "c:\Prosim\Hoofdprogramma\sluisinformatie.txt" TO sluisinfo tijpoorten ← NEW DATASTREAM ATTACH "c:\Prosim\Hoofdprogramma\tijpoorten.txt" TO tijpoorten geulschepen ← NEW DATASTREAM ATTACH "c:\Prosim\Hoofdprogramma\geulschepen.txt" TO geulschepen schipdimensies ← NEW DATASTREAM ATTACH "c:\Prosim\Hoofdprogramma\schipdimensies.txt" TO schipdimensies @-------------------------------------------------------------------@ @ WINDOWS @ @-------------------------------------------------------------------@ wachttijd ← NEW POINTSTREAM w_tijden ← NEW WINDOW CALLED "w_tijden" ATTACH wachttijd TO w_tijden wachtrij_west ← NEW WINDOW CALLED "wachtrij_west" ATTACH HISTORY OF wachtplaats[1] TO wachtrij_west sleepboten1 ← NEW WINDOW CALLED "sb_kade_west" Bijlagen
168
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
ATTACH HISTORY OF sleepbootkade[1] TO sleepboten1 sleepboten2 ← NEW WINDOW CALLED "sb_kade_oost" ATTACH HISTORY OF sleepbootkade[2] TO sleepboten2 gebruik ← NEW WINDOW CALLED "gebruik" ATTACH HISTORY OF in_gebruik TO gebruik @---------------------------------------------------------------------------@ @ INVOER @ @-------------------------------------------------------------------------- @ JUMP TO getij_info @ SLUISGEGEVENS @--------------deursluiten ← READ FROM gegevens deuropenen ← READ FROM gegevens omzetten ← READ FROM gegevens L_kolk ← READ FROM gegevens B_kolk ← READ FROM gegevens OPEN schutgegevens FOR OUTPUT REWIND schutgegevens @ BEGINVOORWAARDEN @-----------------stoppen ← FALSE opnieuw ← FALSE variant ← "geldig" aantalleegschut ← 0 aantalvolschut ← 0 kant OF sluismeester ← READ FROM sluisinfo sluisvrij[kant] ← READ FROM sluisinfo sluisvrij[3-kant] ← sluisvrij[kant]+deursluiten + omzetten + deuropenen laatste_schutrichting ← 0 dezezijde ← kant overzijde ← 3-dezezijde SchutNO ← 0 @ SCHIP- EN SCHUTGEGEVENS @------------------------JUMP TO sleepb_geg nr ← READ FROM schutlist nieuwe ← READ FROM schutlist naam ← READ FROM schutlist WHILE naam ≠ "end" next ← NEW schip CALLED naam type OF next ← READ FROM schutlist Bijlagen
169
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
schutnr OF next ← READ FROM schutlist arrt_minutes OF next ← READ FROM schutlist perm_anker_op OF next ← READ FROM schutlist aanl_tijdstip OF next ← READ FROM schutlist extra_wtijd OF next ← READ FROM schutlist wtijd_voor OF next ← READ FROM schutlist aanv_schut OF next ← READ FROM schutlist eind_schut OF next ← READ FROM schutlist firsttijpoort OF next ← READ FROM schutlist tijpoort OF next ← READ FROM schutlist aankomstzijde OF next ← READ FROM schutlist noot OF next ← READ FROM schutlist init_wtijd OF next ← READ FROM schutlist lengte OF next ← READ FROM schipdimensies breedte OF next ← READ FROM schipdimensies JUMP TO type_nummer type_of_ship ← type_nr OF next aant_sleepb OF next ← aantal_sb[type_of_ship] JOIN next TO memo2 IF (type OF next = "BuYP")&(aankomstzijde OF next = 1) activiteit OF next ← "schutten" ACTIVATE next FROM varen IN geulschip bestemming OF next ← "haven_in_YP" END ACTIVATE next FROM registratie IN schipmod IF bestemming OF next ≠ "haven_in_YP" IF schutnr OF next > maximum maximum ← schutnr OF next END naam ← READ FROM schutlist END nieuwschip ← FIRST schip IN memo2 WITH NAME OF THIS schip = nieuwe schipnummer ← READ FROM geulschepen WHILE schipnummer > 0 activiteiten ← READ FROM geulschepen IF activiteiten = "lichteren" next ← NEW schip activiteit OF next ← activiteiten ACTIVATE next FROM varen IN geulschip END IF activiteiten = "vertrekken" next ← NEW schip arrt_minutes OF next ← READ FROM geulschepen activiteit OF next ← activiteiten ACTIVATE next FROM varen IN geulschip END schipnummer ← READ FROM geulschepen END JUMP TO vaartijden Bijlagen
170
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
JUMP TO categorien @-----------------------------------------------------------------------------------------------------@ @ VERWERKEN EN RANGSCHIKKEN VAN GEGEVENS @ @---------------------------------------------------------------------------------------------------- @ JOIN EACH schip IN memo2 TO voorlopige_planning FOR EACH schip IN voorlopige_planning refpunt ← 1 IF aankomstzijde OF THIS schip = 1 refpunt ← 10 IF aankomstzijde OF THIS schip = 2 passeren[refpunt] OF THIS schip ← perm_anker_op OF THIS schip JUMP TO passtijden1 END aantal_schuttingen ← maximum FOR m ← 1 TO aantal_schuttingen nieuwe_schutting ← NEW schutting nummer OF nieuwe_schutting ← m i←0 FOR EACH schip IN voorlopige_planning WITH schutnr = m I ← i+1 zijde ← aankomstzijde OF THIS schip naam ← NAME OF THIS schip schipnr[i] OF nieuwe_schutting ← naam END richting OF nieuwe_schutting ← 3-zijde JOIN nieuwe_schutting TO schutlijst END JOIN EACH schutting IN schutlijst TO schuttotaal @-------------------------------------------------------------------@ @ ACTIVEREN COMPONENTEN @ @-------------------------------------------------------------------@ tijteller1←1 tijteller2←1 ACTIVATE getij_hor FROM horizontaal_getij IN getijmod1 ACTIVATE getij_vert FROM vertikaal_getij IN getijmod2 ACTIVATE scheduler FROM start IN plannen ACTIVATE verkeersleider FROM start IN VLC ACTIVATE wijsmuller FROM start IN sleepdienst ACTIVATE sluismeester FROM start IN SLC aantsl[1] ← 6 aantsl[2] ← 6 FOR kadekant ← 1 TO 2 FOR i ← 1 TO aantsl[kadekant] THIS sleepboot ← NEW sleepboot werkzijde OF THIS sleepboot ← kadekant opdracht OF THIS sleepboot ← "geen" Bijlagen
171
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
ACTIVATE THIS sleepboot FROM start IN sleepbootmod END END WAIT 1500 WAIT UNTIL varende_vaart IS EMPTY WAIT UNTIL sluis IS EMPTY WAIT UNTIL deze_schepen_SLC IS EMPTY eindzijdekant OF sluismeester sluisvrij[eindzijde] ← MAX(0, einde_schutting-1440) @--------------------------------------------------------------------------------------- @ @ TOETSEN EN SCHRIJVEN NAAR UITVOER @ @---------------------------------------------------------------------------------------@ JUMP TO toetsen JUMP TO schrijven WRITE "-1" TO schutgegevens WITH IMAGE A(2)| CANCEL ALL EXIT PROSIM TERMINATE
Proces van de scheduler start: tegenschutten ← TRUE deze_schutting_planner ← FIRST schutting IN schutlijst IF deze_schutting_planner IS NOT NONE planningmaken ← FALSE i←1 naam_schip ← schipnr[i] OF deze_schutting_planner THIS schip ← FIRST schip IN voorlopige_planning WITH NAME OF THIS schip=naam_schip WHILE THIS schip IS NOT NONE JOIN THIS schip TO deze_schepen_planner I ← i+1 naam_schip←schipnr[i] OF deze_schutting_planner THIS schip ← FIRST schip IN voorlopige_planning WITH NAME OF THIS schip=naam_schip END Aantsch ← LENGTH OF deze_schepen_planner THIS schip ← FIRST schip IN deze_schepen_planner IF (aantsch=1)&(THIS schip IS nieuwschip) JOIN EACH schip IN deze_schepen_planner TO volgende_schutting_planner THIS schutting ← deze_schutting_planner GOTO afsluiten END IF richting OF deze_schutting_planner = laatste_schutrichting tegenschutting_planner ← FIRST schutting IN schutlijst WITH richting ≠ laatste_schutrichting IF tegenschutting_planner IS NOT NONE I←1 Bijlagen
172
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
naam_schip ← schipnr[i] OF tegenschutting_planner THIS schip ← FIRST schip IN voorlopige_planning WITH NAME OF THIS schip=naam_schip WHILE THIS schip IS NOT NONE JOIN THIS schip TO tegenliggers_planner I ← i+1 naam_schip ← schipnr[i] OF tegenschutting_planner THIS schip ← FIRST schip IN voorlopige_planning WITH NAME OF THIS schip=naam_schip END Aantsch ← LENGTH OF tegenliggers_planner Tegenl ← FIRST schip IN tegenliggers_planner IF (aantsch=1)&(tegenl IS nieuwschip) JOIN EACH schip IN deze_schepen_planner TO volgende_schutting_planner THIS schutting ← deze_schutting_planner GOTO afsluiten END doorgaan← TRUE ACTIVATE berekening FROM berekenen IN hulpmod WAIT WHILE doorgaan = TRUE FOR EACH schip IN deze_schepen_planner IF wtijd_voor OF THIS schip ≥ maxwtijd_voor OF THIS schip Tegenschutten ← FALSE END END IF tegenschutten=FALSE JOIN EACH schip IN deze_schepen_planner TO volgende_schutting_planner THIS schutting ← deze_schutting_planner GOTO afsluiten END IF wtotaal1 > wtotaal2 JOIN EACH schip IN tegenliggers_planner TO volgende_schutting_planner THIS schutting ← tegenschutting_planner FOR EACH schip IN tegenliggers_planner schutnr OF THIS schip ← schutnr OF THIS schip-1 END FOR EACH schip IN deze_schepen_planner schutnr OF THIS schip ← schutnr OF THIS schip+1 END nummer OF tegenschutting_planner ← nummer OF tegenschutting_planner-1 nummer OF deze_schutting_planner ← nummer OF deze_schutting_planner+1 GOTO afsluiten END END END JOIN EACH schip IN deze_schepen_planner TO volgende_schutting_planner THIS schutting ← deze_schutting_planner afsluiten: REMOVE EACH schip IN voorgaande_schutting_planner FROM voorgaande_schutting_planner IF voorgaande_schutting_planner IS NOT EMPTY REMOVE THIS schutting FROM schutlijst JOIN EACH schip IN volgende_schutting_planner TO volgende_schutting_VLC Bijlagen
173
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
FOR EACH schip IN volgende_schutting_VLC JOIN THIS schip TO schepen_deze_schutting RANKED BY arrt_minutes OF THIS schip END REMOVE EACH schip IN volgende_schutting_planner FROM volgende_schutting_planner REMOVE EACH schip IN deze_schepen_planner FROM deze_schepen_planner IF deze_schepen_planner IS NOT EMPTY REMOVE EACH schip IN tegenliggers_planner FROM tegenliggers_planner IF tegenliggers_planner IS NOT EMPTY WAIT WHILE planningmaken = FALSE REPEAT FROM start END TERMINATE
Berekening berekenen: REMOVE EACH schip IN schepen FROM schepen IF schepen IS NOT EMPTY JOIN EACH schip IN deze_schepen_planner TO schepen JOIN EACH schip IN tegenliggers_planner TO schepen @------------------------------------------------------------------------- @ @ GEVAL 1: GEEN TEGENSCHUTTING @ @-------------------------------------------------------------------------- @ wtotaal1 ← 0 passeren4 ← 0 passeren5 ← 0 passeren8 ← 0 passeren9 ← 0 THIS schutting ← deze_schutting_planner eerste_schip_planner ← FIRST schip IN deze_schepen_planner laatste_schip_planner ← LAST schip IN deze_schepen_planner dezezijde ← aankomstzijde OF eerste_schip_planner IF richting OF THIS schutting = 2 Tv ← sluisvrij[dezezijde] FOR EACH schip IN deze_schepen_planner passeren[6] OF THIS schip ← MAX(Tv,passeren[6] OF THIS schip) Tv ← passeren[6] OF THIS schip + 10 refpunt ← 6 JUMP TO passtijden1 END aanv_schutting ← passeren[6] OF eerste_schip_planner + invaren OF eerste_schip_planner Tv ← aanv_schutting + Tb FOR EACH schip IN deze_schepen_planner passeren[7] OF THIS schip ← Tv + uitvaren OF THIS schip Tv ← Tv + uitvaren OF THIS schip refpunt ← 7 Bijlagen
174
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
JUMP TO passtijden2 END FOR EACH schip IN tegenliggers_planner invarend_schip ← THIS schip FOR EACH schip IN deze_schepen_planner IF (breedte OF THIS schip + breedte OF invarend_schip) > 60 passeren9 ← passeren[9] OF THIS schip IF passeertijd < passeren[9] OF THIS schip passeertijd ← passeren9 END IF (lengte OF invarend_schip > 200) & (lengte OF THIS schip > 200) passeren9 ← passeren[9] OF THIS schip IF passeertijd < passeren[9] OF THIS schip passeertijd ← passeren9 END IF Y_palen IS NOT EMPTY passeren9 ← passeren[9] OF THIS schip IF passeertijd < passeren[9] OF THIS schip passeertijd ← passeren9 END passeren8 ← passeren[8] OF THIS schip IF passeertijd < passeren[8] OF THIS schip END passeren[9] OF invarend_schip ← MAX(passeren9, (passeren8 + vaart[8+9] OF invarend_schip),(passeren[9] OF invarend_schip)) refpunt ← 9 JUMP TO passtijden1 passeren9 ← passeren9 + 10 END END IF richting OF THIS schutting = 1 Tv ← sluisvrij[dezezijde] FOR EACH schip IN deze_schepen_planner passeren[7] OF THIS schip ← MAX(Tv,passeren[7] OF THIS schip) Tv ← passeren[7] OF THIS schip + 10 refpunt ← 7 JUMP TO passtijden1 END aanv_schutting ← passeren[7] OF eerste_schip_planner Tv ← aanv_schutting + Tb FOR EACH schip IN deze_schepen_planner passeren[6] OF THIS schip ← Tv + uitvaren OF THIS schip Tv ← Tv + uitvaren OF THIS schip refpunt ← 6 JUMP TO passtijden2 END FOR EACH schip IN tegenliggers_planner invarend_schip ← THIS schip FOR EACH schip IN deze_schepen_planner IF (breedte OF THIS schip + breedte OF invarend_schip) > 60 passeren4 ← passeren[4] OF THIS schip IF passeertijd < passeren[4] OF THIS schip passeertijd ← passeren4 END IF (noot OF invarend_schip = "ontheffingsschip") & (noot OF THIS schip = "ontheffingsschip") Bijlagen
175
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
passeren4 ← passeren[4] OF THIS schip IF passeertijd < passeren[4] OF THIS schip passeertijd ← passeren4 END passeren5 ← passeren[5] OF THIS schip IF passeertijd < passeren[5] OF THIS schip END passeren[4] OF invarend_schip ← MAX(passeren4, (passeren5 - vaart[4+5] OF invarend_schip),(passeren[4] OF invarend_schip)) refpunt ← 4 JUMP TO passtijden1 passeren4 ← passeren4 + 10 END END FOR EACH schip IN schepen WITH aankomstzijde = 1 wtijd_test OF THIS schip ← passeren[1] OF THIS schip - perm_anker_op OF THIS schip wtotaal1 ← wtotaal1 + wtijd_test OF THIS schip END FOR EACH schip IN schepen WITH aankomstzijde = 2 wtijd_test OF THIS schip ← passeren[10] OF THIS schip - arrt_minutes OF THIS schip wtotaal1 ← wtotaal1 + wtijd_test OF THIS schip END @-------------------------------------------------------------------------@ @ GEVAL 2: TEGENSCHUTTING @ @-------------------------------------------------------------------------@ wtotaal2 ← 0 passeren4 ← 0 passeren5 ← 0 passeren8 ← 0 passeren9 ← 0 THIS schutting ← tegenschutting_planner eerste_schip_planner ← FIRST schip IN tegenliggers_planner laatste_schip_planner ← LAST schip IN tegenliggers_planner IF richting OF THIS schutting = 1 Tv ← sluisvrij[overzijde] FOR EACH schip IN tegenliggers_planner invarend_schip ← THIS schip FOR EACH schip IN voorgaande_schutting_planner IF (breedte OF THIS schip + breedte OF invarend_schip) > 60 passeren9 ← passeren[9] OF THIS schip IF passeertijd < passeren[9] OF THIS schip passeertijd ← passeren9 END IF (noot OF invarend_schip = "ontheffingsschip") & (noot OF THIS schip = "ontheffingsschip") passeren9 ← passeren[9] OF THIS schip IF passeertijd < passeren[9] OF THIS schip passeertijd ← passeren9 END passeren8 ← passeren[8] OF THIS schip IF passeertijd < passeren[8] OF THIS schip Bijlagen
176
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
END passeren[9] OF invarend_schip ← MAX(passeren9, (passeren8 - vaart[8+9] OF invarend_schip),(passeren[9] OF invarend_schip)) refpunt ← 9 JUMP TO passtijden1 passeren9 ← passeren9 + 10 END aanv_schutting ← passeren[7] OF eerste_schip_planner + invaren OF eerste_schip_planner Tv ← aanv_schutting + Tb FOR EACH schip IN tegenliggers_planner passeren[6] OF THIS schip ← Tv + uitvaren OF THIS schip Tv ← Tv + uitvaren OF THIS schip refpunt ← 6 JUMP TO passtijden2 END FOR EACH schip IN deze_schepen_planner invarend_schip ← THIS schip FOR EACH schip IN tegenliggers_planner IF (breedte OF THIS schip + breedte OF invarend_schip) > 60 passeren4 ← passeren[4] OF THIS schip IF passeertijd < passeren[4] OF THIS schip passeertijd ← passeren4 END IF (noot OF invarend_schip = "ontheffingsschip") & (noot OF THIS schip = "ontheffingsschip") passeren4 ← passeren[4] OF THIS schip IF passeertijd < passeren[4] OF THIS schip passeertijd ← passeren4 END passeren5 ← passeren[5] OF THIS schip IF passeertijd < passeren[5] OF THIS schip END passeren[4] OF invarend_schip ← MAX(passeren4, (passeren5 - vaart[4+5] OF invarend_schip),(passeren[4] OF invarend_schip)) refpunt ←4 JUMP TO passtijden1 passeren4 ← passeren4 + 10 END END IF richting OF THIS schutting = 2 FOR EACH schip IN tegenliggers_planner invarend_schip ← THIS schip FOR EACH schip IN voorgaande_schutting_planner IF (breedte OF THIS schip + breedte OF invarend_schip) > 60 passeren4 ←passeren[4] OF THIS schip IF passeertijd < passeren[4] OF THIS schip passeertijd ← passeren4 END IF (noot OF invarend_schip = "ontheffingsschip") & (noot OF THIS schip = "ontheffingsschip") passeren4 ← passeren[4] OF THIS schip IF passeertijd < passeren[4] OF THIS schip passeertijd ← passeren4 END passeren5 ← passeren[5] OF THIS schip IF passeertijd < passeren[5] OF THIS schip END Bijlagen
177
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
passeren[4] OF invarend_schip ← MAX(passeren4, (passeren5 - vaart[4+5] OF invarend_schip),(passeren[4] OF invarend_schip)) refpunt ← 4 JUMP TO passtijden1 passeren4 ← passeren4 + 10 END aanv_schutting ← passeren[6] OF eerste_schip_planner Tv ← aanv_schutting + Tb FOR EACH schip IN tegenliggers_planner passeren[7] OF THIS schip ← Tv + uitvaren OF THIS schip Tv ← Tv + uitvaren OF THIS schip refpunt ← 7 JUMP TO passtijden2 END FOR EACH schip IN deze_schepen_planner invarend_schip ← THIS schip FOR EACH schip IN tegenliggers_planner IF (breedte OF THIS schip + breedte OF invarend_schip) > 60 passeren9 ← passeren[9] OF THIS schip IF passeertijd < passeren[9] OF THIS schip passeertijd ← passeren9 END IF (noot OF invarend_schip = "ontheffingsschip") & (noot OF THIS schip = "ontheffingsschip") passeren9 ← passeren[9] OF THIS schip IF passeertijd < passeren[9] OF THIS schip passeertijd ← passeren9 END passeren8 ← passeren[8] OF THIS schip IF passeertijd < passeren[8] OF THIS schip END passeren[9] OF invarend_schip ← MAX(passeren9, (passeren8 - vaart[8+9] OF invarend_schip),(passeren[9] OF invarend_schip)) refpunt ← 9 JUMP TO passtijden1 passeren9 ← passeren9 + 10 END END FOR EACH schip IN schepen WITH aankomstzijde = 1 wtijd_test OF THIS schip ← passeren[1] OF THIS schip - perm_anker_op OF THIS schip wtotaal2 ← wtotaal2 + wtijd_test OF THIS schip END FOR EACH schip IN schepen WITH aankomstzijde = 2 wtijd_test OF THIS schip ← passeren[10] OF THIS schip - perm_anker_op OF THIS schip wtotaal2 ← wtotaal2 + wtijd_test OF THIS schip END FOR EACH schip IN schepen @ herstellen initiele vaartijden refpunt ← 1 IF aankomstzijde OF THIS schip = 1 refpunt ← 10 IF aankomstzijde OF THIS schip = 2 passeren[refpunt] OF THIS schip ← perm_anker_op OF THIS schip JUMP TO passtijden1 END doorgaan ← FALSE
Bijlagen
178
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
TERMINATE
Proces van het schip registratie: @ tijpoort afgifte @ WAIT ABS(perm_anker_op OF THIS schip - NOW) IF THIS schip IS nieuwschip & (noot OF THIS schip = "ontheffingsschip") IF (passeren[6] OF THIS schip + invaren OF THIS schip + deursluiten) ≤ vert_getijopen[tijteller2] passeren[6] OF THIS schip ← (vert_getijopen[tijteller2] - invaren OF THIS schip - deursluiten) END IF (passeren[6] OF THIS schip + invaren OF THIS schip + deursluiten) > vert_getijopen[tijteller2] IF (passeren[6] OF THIS schip + invaren OF THIS schip + deursluiten) ≥ vert_getijdicht[tijteller2] passeren[6] OF THIS schip ← vert_getijopen[tijteller2+1] - invaren OF THIS schip - deursluiten END END refpunt6 JUMP TO passtijden1 perm_anker_op OF THIS schip ← passeren[1] OF THIS schip WAIT ABS(perm_anker_op OF THIS schip-NOW) IF passeren[3] OF THIS schip ≤ hor_getijopen[tijteller1] passeren[3] OF THIS schip ← hor_getijopen[tijteller1] END IF passeren[3] OF THIS schip > hor_getijopen[tijteller1] IF passeren[3] OF THIS schip ≥hor_getijdicht[tijteller1] passeren[3] OF THIS schip ← hor_getijopen[tijteller1+1] END END refpunt3 JUMP TO passtijden1 perm_anker_op OF THIS schip ← passeren[1] OF THIS schip IF perm_anker_op OF THIS schip = 0 perm_anker_op OF THIS schip ← 0.1 END IF firsttijpoort OF THIS schip = 0 firsttijpoort OF THIS schip ← perm_anker_op OF THIS schip END WAIT ABS(perm_anker_op OF THIS schip-NOW) END IF (noot OF THIS schip = "stroomschip") & (THIS schip IS nieuwschip) IF passeren[3] OF THIS schip < hor_getijopen[tijteller1] passeren[3] OF THIS schip ← hor_getijopen[tijteller1] END IF passeren[3] OF THIS schip ≥ hor_getijopen[tijteller1] IF passeren[3] OF THIS schip ≥ hor_getijdicht[tijteller1] passeren[3] OF THIS schip ← hor_getijopen[tijteller1+1] END END Bijlagen
179
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Refpunt ← 3 JUMP TO passtijden1 perm_anker_op OF THIS schip ← passeren[1] OF THIS schip IF perm_anker_op OF THIS schip = 0 perm_anker_op OF THIS schip ← 0.1 END IF firsttijpoort OF THIS schip = 0 firsttijpoort OF THIS schip ← perm_anker_op OF THIS schip END WAIT ABS(perm_anker_op OF THIS schip-NOW) END WAIT ABS(perm_anker_op OF THIS schip-NOW) ENTER wachtplaats[aankomstzijde] ENTER ready_to_go @ schip heeft toestemming de sluis te naderen WAIT aanl_tijdstip OF THIS schip ← NOW refpunt ← 1 IF aankomstzijde OF THIS schip = 1 refpunt ← 10 IF aankomstzijde OF THIS schip = 2 passeren[refpunt] OF THIS schip ← aanl_tijdstip OF THIS schip JUMP TO passtijden1 eerste_schip ← FIRST schip IN schepen_deze_schutting laatste_schip ← LAST schip IN schepen_deze_schutting IF THIS schip IS laatste_schip JUMP TO tijden_bepalen laatste_schutrichting ← 3-aankomstzijde OF THIS schip JOIN EACH schip IN schepen_deze_schutting TO voorgaande_schutting_planner REMOVE EACH schip IN schepen_deze_schutting FROM schepen_deze_schutting planningmaken ← TRUE FOR EACH schip IN voorgaande_schutting_planner IF THIS schip IS eerste_schip passeren[7] ← (sluisvrij[overzijde] - uitvaren OF THIS schip) IF aankomstzijde OF THIS schip = 1 passeren[6] ← (sluisvrij[overzijde] - uitvaren OF THIS schip) IF aankomstzijde OF THIS schip = 2 END IF THIS schip IS laatste_schip passeren[7] ← sluisvrij[overzijde] IF aankomstzijde OF THIS schip = 1 passeren[6] ← sluisvrij[overzijde] IF aankomstzijde OF THIS schip = 2 END refpunt ← 7 IF aankomstzijde OF THIS schip = 1 refpunt ← 6 IF aankomstzijde OF THIS schip = 2 JUMP TO passtijden2 END END wtijd_voor OF THIS schip ← NOW - perm_anker_op OF THIS schip + extra_wtijd OF THIS schip IF (noot OF THIS schip = "ontheffingsschip")|(noot OF THIS schip = "stroomschip") wtijd_voor OF THIS schip ← NOW - firsttijpoort OF THIS schip + extra_wtijd OF THIS schip END IF ((type OF THIS schip = "Cont")|(type OF THIS schip = "Pass"))&(THIS schip IS nieuwschip) init_wtijd OF THIS schip ← wtijd_voor OF THIS schip END Bijlagen
180
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
LEAVE wachtplaats[aankomstzijde] LEAVE ready_to_go ENTER varende_vaart ENTER sleeplijst IF aankomstzijde OF THIS schip = 1 ENTER geul WORK vaart[1+2] OF THIS schip LEAVE geul ENTER havenmond WORK vaart[2+3] OF THIS schip LEAVE havenmond JUMP TO tijcontrole1 ENTER buitenhaven WORK vaart[3+4] OF THIS schip LEAVE buitenhaven ENTER noorderbuitenkanaal WORK vaart[4+5] OF THIS schip LEAVE noorderbuitenkanaal ENTER buitentoeleidingskanaal WORK vaart[5+6] OF THIS schip IF THIS schip IS eerste_schip_SLC aanvang_schuttingNOW END WORK invaren OF THIS schip LEAVE buitentoeleidingskanaal END IF aankomstzijde OF THIS schip = 2 ENTER NZK WORK vaart[9+10] OF THIS schip LEAVE NZK ENTER velserkom WORK vaart[8+9] OF THIS schip LEAVE velserkom ENTER binnentoeleidingskanaal WORK vaart[7+8] OF THIS schip IF THIS schip IS eerste_schip_SLC aanvang_schutting ← NOW END WORK invaren OF THIS schip LEAVE binnentoeleidingskanaal END LEAVE varende_vaart Tsluis OF THIS schip ← NOW ENTER sluis WAIT UNTIL deurendicht = TRUE JUMP TO tijcontrole2 IF (noot OF THIS schip ="ontheffingsschip")|(noot OF THIS schip = "stroomschip") tijpoort OF THIS schip ← perm_anker_op OF THIS schip END Bijlagen
181
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
WAIT WORK uitvaren OF THIS schip LEAVE sluis IF sluis IS EMPTY einde_schuttingNOW END ENTER einde REACTIVATE FIRST OF sluis IF sluis IS NOT EMPTY IF aankomstzijde OF THIS schip = 1 ENTER binnentoeleidingskanaal WORK vaart[7+8] OF THIS schip LEAVE binnentoeleidingskanaal ENTER velserkom WORK vaart[8+9] OF THIS schip LEAVE velserkom ENTER NZK WORK vaart[9+10] OF THIS schip LEAVE NZK END IF aankomstzijde OF THIS schip = 2 ENTER buitentoeleidingskanaal WORK vaart[5+6] OF THIS schip LEAVE buitentoeleidingskanaal ENTER Noorderbuitenkanaal WORK vaart[4+5] OF THIS schip LEAVE noorderbuitenkanaal ENTER buitenhaven WORK vaart[3+4] OF THIS schip LEAVE buitenhaven ENTER havenmond WORK vaart[2+3] OF THIS schip LEAVE havenmond ENTER geul WORK vaart[1+2] OF THIS schip LEAVE geul END TERMINATE
Proces van het lichterschip varen: IF activiteit OF THIS schip = "vertrekken" ENTER lichterschepen WAIT ABS(arrt_minutes OF THIS schip - NOW) aankomst_YP OF THIS schip ← (vert_getijopen[tijteller2] + 120) WAIT ABS(vert_getijopen[tijteller2] - NOW) WORK 120 MINUTES ENTER Y_palen WAIT END Bijlagen
182
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
IF (activiteit OF THIS schip = "lichteren") ENTER lichterschepen ENTER Y_palen WAIT END IF (activiteit OF THIS schip = "schutten") ENTER lichterschepen ENTER Y_palen WAIT ABS(perm_anker_op OF THIS schip - NOW) IF THIS schip IS nieuwschip & (noot OF THIS schip = "ontheffingsschip") IF (passeren[6] OF THIS schip + invaren OF THIS schip + deursluiten) ≤ vert_getijopen[tijteller2] passeren[6] OF THIS schip ← (vert_getijopen[tijteller2] - invaren OF THIS schip - deursluiten) END IF (passeren[6] OF THIS schip + invaren OF THIS schip + deursluiten) > vert_getijopen[tijteller2] IF (passeren[6] OF THIS schip + invaren OF THIS schip + deursluiten) ≥ vert_getijdicht[tijteller2] passeren[6] OF THIS schip ← vert_getijopen[tijteller2+1] - invaren OF THIS schip - deursluiten END END IF perm_anker_op OF THIS schip = 0 perm_anker_op OF THIS schip ← 0.1 END refpunt6 JUMP TO passtijden1 perm_anker_op OF THIS schip ←passeren[1] OF THIS schip IF firsttijpoort OF THIS schip = 0 firsttijpoort OF THIS schip ← perm_anker_op OF THIS schip END END WAIT ABS(perm_anker_op OF THIS schip-NOW) ENTER ready_to_go ENTER wachtplaats[1] WAIT aanl_tijdstip OF THIS schip ← NOW wtijd_voor OF THIS schip ← NOW - perm_anker_op OF THIS schip + extra_wtijd OF THIS schip refpunt ← 1 passeren[refpunt] OF THIS schip ← aanl_tijdstip OF THIS schip eerste_schip ← FIRST schip IN schepen_deze_schutting laatste_schip ← LAST schip IN schepen_deze_schutting JUMP TO passtijden1 JUMP TO tijden_bepalen laatste_schutrichting ← 3-aankomstzijde OF THIS schip JOIN EACH schip IN schepen_deze_schutting TO voorgaande_schutting_planner REMOVE EACH schip IN schepen_deze_schutting FROM schepen_deze_schutting planningmaken ← TRUE passeren[7] ← sluisvrij[overzijde] refpunt ← 7 JUMP TO passtijden2 LEAVE wachtplaats[aankomstzijde] LEAVE ready_to_go Bijlagen
183
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
ENTER varende_vaart ENTER sleeplijst LEAVE Y_palen ENTER noorderbuitenkanaal WORK vaart[4+5] OF THIS schip LEAVE noorderbuitenkanaal ENTER buitentoeleidingskanaal WORK vaart[5+6] OF THIS schip IF THIS schip IS eerste_schip_SLC aanvang_schutting ← NOW END WORK invaren OF THIS schip LEAVE buitentoeleidingskanaal LEAVE varende_vaart Tsluis OF THIS schip ← NOW ENTER sluis WAIT UNTIL deurendicht = TRUE JUMP TO tijcontrole2 IF (noot OF THIS schip ="ontheffingsschip")|(noot OF THIS schip = "stroomschip") tijpoort OF THIS schip ← perm_anker_op OF THIS schip END WAIT WORK uitvaren OF THIS schip LEAVE sluis IF sluis IS EMPTY einde_schutting ← NOW END ENTER einde REACTIVATE FIRST OF sluis IF sluis IS NOT EMPTY ENTER binnentoeleidingskanaal WORK vaart[7+8] OF THIS schip LEAVE binnentoeleidingskanaal ENTER velserkom WORK vaart[8+9] OF THIS schip LEAVE velserkom ENTER NZk WORK vaart[9+10] OF THIS schip LEAVE NZk END TERMINATE
Proces van de verkeersleider start: WAIT WHILE volgende_schutting_VLC IS EMPTY FOR EACH schip IN volgende_schutting_VLC JOIN THIS schip TO verkeer_sluis RANKED BY arrt_minutes OF THIS schip END Bijlagen
184
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
JOIN EACH SCHIP IN varende_vaart TO voorgaande_schutting_VLC next ← FIRST schip IN verkeer_sluis dezezijde ← aankomstzijde OF next IF (aankomstzijde OF next = 1) & ((laatste_schutrichting = 2)|(laatste_schutrichting = 0)) REMOVE EACH schip IN voorgaande_schutting_VLC FROM voorgaande_schutting_VLC passeren[6] OF next ← MAX(sluisvrij[dezezijde],passeren[6] OF next) refpunt ← 6 THIS schip ← next JUMP TO passtijden1 WAIT MAX((passeren[1] OF next-NOW), 0) WAIT UNTIL next BELONGS TO ready_to_go REACTIVATE next END IF (aankomstzijde OF next = 2) & ((laatste_schutrichting = 1)|(laatste_schutrichting = 0)) REMOVE EACH schip IN voorgaande_schutting_VLC FROM voorgaande_schutting_VLC passeren[7] OF next ← MAX(sluisvrij[dezezijde],passeren[7] OF next) refpunt ← 7 THIS schip ← next JUMP TO passtijden1 WAIT MAX((passeren[10] OF next-NOW), 0) WAIT UNTIL next BELONGS TO ready_to_go REACTIVATE next END IF (aankomstzijde OF next = 2) & (laatste_schutrichting = 2) FOR EACH schip IN voorgaande_schutting_VLC passeren8 ← MAX(passeren[8] OF THIS schip, passeren[8] OF next) passeren[8] OF next ← passeren8 IF (breedte OF THIS schip + breedte OF next) > 60 passeren9 ← MAX(passeren[9] OF THIS schip, passeren[9] OF next) passeren[9] OF next ← passeren9 END IF (lengte OF next >200) & (lengte OF THIS schip > 200) passeren9 ← MAX(passeren[9] OF THIS schip, passeren[9] OF next) passeren[9] OF next ← passeren9 END IF Y_palen IS NOT EMPTY passeren9 ← MAX(passeren[9] OF THIS schip, passeren[9] OF next) passeren[9] OF next ← passeren9 END passeren[8] OF next ← MAX(passeren[8] OF next, (passeren[9] OF next + vaart[8+9] OF next),(sluisvrij[dezezijde])) refpunt ← 8 THIS schip ← next JUMP TO passtijden1 END REMOVE EACH schip IN voorgaande_schutting_VLC FROM voorgaande_schutting_VLC WAIT MAX((passeren[10] OF next - NOW),0) WAIT UNTIL next BELONGS TO ready_to_go REACTIVATE next END Bijlagen
185
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
IF (aankomstzijde OF next = 1) & (laatste_schutrichting = 1) FOR EACH schip IN voorgaande_schutting_VLC passeren5 ← MAX(passeren[5] OF THIS schip, passeren[5] OF next) passeren[5] OF next ← passeren5 IF (breedte OF THIS schip + breedte OF next) > 60 passeren4 ← MAX(passeren[4] OF THIS schip, passeren[4] OF next) passeren[4] OF next ← passeren4 END IF (lengte OF next > 200) & (lengte OF THIS schip > 200) passeren4 ← MAX(passeren[4] OF THIS schip, passeren[4] OF next) passeren[4] OF next ← passeren4 END IF Y_palen IS NOT EMPTY passeren4 ← MAX(passeren[4] OF THIS schip, passeren[4] OF next) passeren[4] OF next ← passeren4 END passeren[5] OF next ← MAX(passeren[5] OF next, (passeren[4] OF next + vaart[4+5] OF next),(sluisvrij[dezezijde])) refpunt ← 5 THIS schip ← next JUMP TO passtijden1 END REMOVE EACH schip IN voorgaande_schutting_VLC FROM voorgaande_schutting_VLC WAIT MAX((passeren[1] OF next - NOW),0) WAIT UNTIL next BELONGS TO ready_to_go REACTIVATE next END JOIN EACH schip IN volgende_schutting_VLC TO deze_schutting_SLC REMOVE next FROM volgende_schutting_VLC WAIT UNTIL next BELONGS TO varende_vaart Sn ← schutnr OF next REMOVE next FROM verkeer_sluis next ← FIRST schip IN verkeer_sluis WHILE next IS NOT NONE REMOVE next FROM volgende_schutting_VLC WAIT 15 WAIT UNTIL next BELONGS TO ready_to_go REACTIVATE next WAIT UNTIL next BELONGS TO varende_vaart REMOVE next FROM verkeer_sluis next ← FIRST schip IN verkeer_sluis END WAIT UNTIL deze_schutting_SLC IS EMPTY REPEAT FROM start TERMINATE
Proces van de sluismeester start: WAIT WHILE deze_schutting_SLC IS EMPTY Bijlagen
186
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
nextschip ← FIRST schip IN deze_schutting_SLC FOR EACH schip IN deze_schutting_SLC JOIN THIS schip TO deze_schepen_SLC RANKED BY arrt_minutes OF THIS schip REMOVE THIS schip FROM deze_schutting_SLC END eerste_schip_SLC ← FIRST schip IN deze_schepen_SLC laatste_schip_SLC ← LAST schip IN deze_schepen_SLC dezezijde ← aankomstzijde OF nextschip overzijde ← 3 - dezezijde SchutNO ← SchutNO+1 IF dezezijde ≠ kant aantalleegschut ← aantalleegschut + 1 WORK deursluiten MINUTES WORK omzetten MINUTES WORK deuropenen MINUTES kant ← 3-kant END WAIT UNTIL laatste_schip_SLC BELONGS TO sluis JOIN EACH schip IN sluis TO memo3 FOR EACH schip IN sluis aanv_schut OF THIS schip ← NOW schutnr OF THIS schip ← SchutNO wtijd_in OF THIS schip ← NOW - Tsluis OF THIS schip wtijdtot OF THIS schip ← wtijd_voor OF THIS schip + wtijd_in OF THIS schip END WORK deursluiten MINUTES deurendicht ← TRUE aantalvolschut ← aantalvolschut + 1 WORK omzetten MINUTES WORK deuropenen MINUTES deurendicht ← FALSE kant ← 3-kant aantal_schepen ← LENGTH OF sluis laatste_in_sluis ← LAST schip IN sluis FOR EACH schip IN sluis eind_schut OF THIS schip ← NOW END REACTIVATE FIRST OF sluis WAIT UNTIL sluis IS EMPTY i←1 CONVERT schutnr OF laatste_in_sluis TO outstring1 FIELDLENGTH 3 CONVERT einde_schutting TO outstring10 FIELDLENGTH 7 DECIMALS 2 CONVERT aanvang_schutting TO outstring11 FIELDLENGTH 7 DECIMALS 2 CONVERT aankomstzijde OF laatste_in_sluis TO outstring14 FIELDLENGTH 2 WRITE outstring1;outstring11;outstring10;outstring14 TO schutgegevens WITH IMAGE A(3)X(2)A(6)X(2)A(6)x(2)A(2)X(2) FOR EACH schip IN deze_schepen_SLC naamschip[i] ← NAME OF THIS schip JUMP TO schipnamen WRITE "&";naamschip[i] TO schutgegevens WITH IMAGE A(1)A(1) IF i≠1 Bijlagen
187
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
WRITE naamschip[i] TO schutgegevens WITH IMAGE A(1) IF i=1 REMOVE THIS schip FROM deze_schepen_SLC i ← i+1 END WRITE " " TO schutgegevens WITH IMAGE A(2)| REPEAT FROM start
Proces van Wijsmuller start: WAIT WHILE sleeplijst IS EMPTY THIS schip ← FIRST schip IN sleeplijst zijdeaankomstzijde OF THIS schip vraag ← NAME OF THIS schip aantal ← aant_sleepb OF THIS schip WHILE aantal > 0 nxtsleepb ← FIRST sleepboot IN sleepbootkade[zijde] WITH THIS sleepboot BELONGS TO beschikbaar REMOVE nxtsleepb FROM beschikbaar opdracht OF nxtsleepb ← vraag REACTIVATE nxtsleepb aantal ← aantal - 1 END REMOVE THIS schip FROM sleeplijst REPEAT FROM start
Proces van de sleepboot start: ENTER sleepbootkade[werkzijde] ENTER beschikbaar WAIT klant OF THIS sleepboot ← FIRST schip IN varende_vaart WITH NAME OF THIS schip = opdracht OF THIS sleepboot WAIT ABS(passeren[3] OF klant-NOW) IF aankomstzijde OF klant = 1 WAIT ABS(passeren[9] OF klant-NOW) IF aankomstzijde OF klant = 2 LEAVE sleepbootkade[werkzijde] ENTER in_gebruik WAIT UNTIL klant OF THIS sleepboot BELONGS TO sluis LEAVE in_gebruik opdracht OF THIS sleepboot ← "geen" klant OF THIS sleepboot ← FIRST schip IN varende_vaart WITH NAME OF THIS schip = opdracht OF THIS sleepboot REPEAT FROM start
Proces horizontaal getij horizontaal_getij: stophorgetij ← TRUE IF hor_getijdicht[tijteller1] = 1500 tijopen1 ← FLOOR(hor_getijopen[tijteller1]) WAIT (tijopen1-NOW) hor_tijopen ← TRUE WAIT (hor_getijdicht[tijteller1]-NOW) Bijlagen
188
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
tijteller1 ← tijteller1+1 hor_tijopen ← FALSE IF tijteller1<7 hor_tijopen ← TRUE IF stophorgetij = TRUE REPEAT FROM horizontaal_getij IF stophorgetij = FALSE END TERMINATE
Proces verticaal getij vertikaal_getij: stopvertgetij ← TRUE IF vert_getijdicht[tijteller2] = 1500 tijopen2 ← FLOOR(vert_getijopen[tijteller2]) WAIT (tijopen2-NOW) vert_tijopen ← TRUE WAIT (vert_getijdicht[tijteller2]-NOW) vert_tijopen ← FALSE tijteller2 ← tijteller2 + 1 vert_tijopen ← TRUE IF stopvertgetij = TRUE REPEAT FROM vertikaal_getij IF stopvertgetij = FALSE TERMINATE
Macro´s van het verkeerssimulatieprogramma Categorien FOR EACH schip IN memo2 typeschip ← type OF THIS schip IF lengte OF THIS schip ≤ 150 categorie OF THIS schip ← 3 END IF (lengte OF THIS schip > 150)&(lengte OF THIS schip ≤ 220) categorie OF THIS schip ← 2 IF (typeschip = "BuYP") | (typeschip = "BuDi")| (typeschip = "Tank") | (typeschip = "ChTa")| (typeschip = "Over") categorie OF THIS schip ← 1 END END IF lengte OF THIS schip > 220 categorie OF THIS schip ← 1 END cat ← categorie OF THIS schip vaart[1+2] OF THIS schip ← vtA5West[cat] vaart[2+3] OF THIS schip ← vtA4West[cat] vaart[3+4] OF THIS schip ← vtA3West[cat] vaart[4+5] OF THIS schip ← vtA2West[cat] vaart[5+6] OF THIS schip ← vtA1West[cat] vaart[7+8] OF THIS schip ← vtA1Oost[cat] vaart[8+9] OF THIS schip ← vtA2Oost[cat] Bijlagen
189
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
vaart[9+10] OF THIS schip ← vtA3Oost[cat] invaren OF THIS schip ← invaartijd[cat] uitvaren OF THIS schip ← uitvaartijd[cat] IF (typeschip = "BuYP")&(aankomstzijde OF THIS schip = 1) vaart[4+5] OF THIS schip ← 60 END END RETURN
Getijinfo FOR i ← 1 TO 4 vert_getijopen[i] ← READ FROM tijpoorten vert_getijdicht[i] ← READ FROM tijpoorten vert_getijopen[i] ← 1500 IF vert_getijopen[i] = 0 vert_getijdicht[i] ← 1500 IF vert_getijdicht[i] = 0 END FOR i ← 1 TO 7 hor_getijopen[i] ← READ FROM tijpoorten hor_getijdicht[i] ← READ FROM tijpoorten hor_getijopen[i] ← 1500 IF hor_getijopen[i] = 0 hor_getijdicht[i] ← 1500 IF hor_getijdicht[i] = 0 END RETURN
Passtijden1 IF (aankomstzijde OF THIS schip = 1)&(type OF THIS schip ≠ "BuYP") punt ← refpunt WHILE (punt > 1) & (punt ≤ refpunt) passeren[punt-1] OF THIS schip passeren[punt] OF THIS schip - vaart[2*(punt-1)+1] OF THIS schip punt ← punt-1 END punt ← refpunt WHILE (punt ≥ refpunt) & (punt < 6) passeren[punt+1] OF THIS schip passeren[punt] OF THIS schip + vaart[2*(punt)+1] OF THIS schip punt ← punt+1 END END IF (aankomstzijde OF THIS schip = 1)&(type OF THIS schip = "BuYP") punt ← refpunt WHILE (punt > 1) & (punt ≤ refpunt) IF punt > 4 passeren[punt-1] OF THIS schip ← passeren[punt] OF THIS schip - vaart[2*(punt-1)+1] OF THIS schip END IF punt ≤ 4 passeren[punt-1] OF THIS schip ← passeren[punt] OF THIS schip Bijlagen
190
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
END punt ← punt-1 END punt ← refpunt WHILE (punt ≥ refpunt) & (punt < 6) IF punt < 4 passeren[punt+1] OF THIS schip ← passeren[punt] OF THIS schip END IF punt ≥ 4 passeren[punt+1] OF THIS schip ← passeren[punt] OF THIS schip + vaart[2*(punt)+1] OF THIS schip END punt ← punt+1 END END IF aankomstzijde OF THIS schip = 2 punt ← refpunt WHILE (punt < 10) & (punt ≥ refpunt) passeren[punt+1] OF THIS schip ← passeren[punt] OF THIS schip - vaart[2*(punt)+1] OF THIS schip punt ← punt+1 END punt refpunt WHILE (punt ≤ refpunt) & (punt > 1) passeren[punt-1] OF THIS schip ← passeren[punt] OF THIS schip + vaart[2*(punt-1)+1] OF THIS schip punt ← punt-1 END END RETURN
Passtijden2 IF aankomstzijde OF THIS schip = 1 punt ← refpunt WHILE (punt < 10) & (punt ≥ refpunt) passeren[punt+1] OF THIS schip ← passeren[punt] OF THIS schip + vaart[2*(punt)+1] OF THIS schip punt ← punt+1 END punt ← refpunt WHILE (punt > 7) & (punt ≤ 10) passeren[punt-1] OF THIS schip ← passeren[punt] OF THIS schip - vaart[2*(punt-1)+1] OF THIS schip punt ← punt-1 END END IF aankomstzijde OF THIS schip = 2 punt ← refpunt WHILE (punt > 1) & (punt ≤ refpunt) passeren[punt-1] OF THIS schip ← passeren[punt] OF THIS schip + vaart[2*(punt-1)+1] OF THIS schip punt ← punt-1 END punt ← refpunt Bijlagen
191
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
WHILE (punt ≥ refpunt) & (punt < 6) passeren[punt+1] OF THIS schip ← passeren[punt] OF THIS schip - vaart[2*(punt)+1] OF THIS schip punt ← punt+1 END END RETURN
Schipnamen @ voor de uitvoer naar het beeldscherm IF naamschip[i] = "schipA" naamschip[i] ← "A" END IF naamschip[i] = "schipB" naamschip[i] ← "B" END IF naamschip[i] = "schipC" naamschip[i] ← "C" END IF naamschip[i] = "schipD" naamschip[i] ← "D" END .. .. etc RETURN
Schrijven JOIN EACH schip IN voorlopige_planning TO memo1 REMOVE EACH schip IN memo1 FROM voorlopige_planning FOR EACH schip IN memo1 JOIN THIS schip TO voorlopige_planning RANKED BY schutnr OF THIS schip IF (noot OF THIS schip ="ontheffingsschip")|(noot OF THIS schip = "stroomschip") IF (perm_anker_op OF THIS schip > 1440)&(aanv_schut OF THIS schip = 0) firsttijpoort OF THIS schip ← perm_anker_op OF THIS schip END END REMOVE THIS schip FROM memo1 END OPEN results FOR OUTPUT REWIND results IF nr=1 IF (variant = "geldig") CONVERT nr TO outstring15 FIELDLENGTH 2 WRITE "@";"variant";"@";outstring15 TO results WITH IMAGE A(1)A(7)A(1)X(1)A(2)| WRITE "@";"variant";"@";outstring15 TO uitvoer WITH IMAGE A(1)A(7)A(1)X(1)A(2)| Bijlagen
192
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
WRITE "@";"nieuw schip:";nieuwe;"@" TO results WITH IMAGE A(1)A(12)x(1)A(6)A(1)|| WRITE "@" TO results WITH IMAGE A(1) WRITE "naam";"type";"schutnr";"ETA/ETD";"anker op";"aanlopen";"wachttijden";"schuttijden";"frstprt";"prt";"zijde";"opmerking";"init wachttijd" TO results WITH IMAGE A(4)X(2)A(4)X(1)A(7)X(1)A(7)X(2)A(8)X(3)A(8)X(6)A(11)x(6)A(11)X(4)A(8)x(1)A(4)X(1)A(5)X(1)A(12)X(3)A(17) WRITE "@" TO results WITH IMAGE A(3)| WRITE "@" TO results WITH IMAGE A(1) WRITE " extra voor " TO results WITH IMAGE X(49)A(45)X(37) WRITE "@" TO results WITH IMAGE A(1)|| FOR EACH schip IN voorlopige_planning naam ← NAME OF THIS schip typeschip ← type OF THIS schip opm ← noot OF THIS schip CONVERT schutnr OF THIS schip TO outstring1 FIELDLENGTH 3 CONVERT arrt_minutes OF THIS schip TO outstring2 FIELDLENGTH 7 DECIMALS 2 CONVERT perm_anker_op OF THIS schip TO outstring3 FIELDLENGTH 7 DECIMALS 2 CONVERT aanl_tijdstip OF THIS schip TO outstring4 FIELDLENGTH 7 DECIMALS 2 CONVERT extra_wtijd OF THIS schip TO outstring5 FIELDLENGTH 7 DECIMALS 2 CONVERT wtijd_voor OF THIS schip TO outstring6 FIELDLENGTH 7 DECIMALS 2 CONVERT eind_schut OF THIS schip TO outstring10 FIELDLENGTH 7 DECIMALS 2 CONVERT aanv_schut OF THIS schip TO outstring11 FIELDLENGTH 7 DECIMALS 2 CONVERT firsttijpoort OF THIS schip TO outstring12 FIELDLENGTH 7 DECIMALS 2 CONVERT tijpoort OF THIS schip TO outstring13 FIELDLENGTH 7 DECIMALS 2 CONVERT aankomstzijde OF THIS schip TO outstring20 FIELDLENGTH 2 CONVERT init_wtijd OF THIS schip TO outstring22 FIELDLENGTH 7 DECIMALS 2 WRITE naam;typeschip;outstring1;outstring2;outstring3; outstring4;outstring5;outstring6;outstring11; outstring10;outstring12;outstring13;outstring20;opm;outstring22 TO results WITH IMAGE A(6)X(2)A(4)X(2)A(3)X(3)A(7)X(3)A(7)X(3)A(7)X(2)A(7)X(1)A(7)X(2)A(7)X(1)A(8)X(2)A(8)X(2)A(8)X(2)A( 2)X(3)A(17)A(8)| END WRITE "end" TO results WITH IMAGE A(3)|| END WRITE "@";"nieuwschip";"@";nieuwe TO uitvoer WITH IMAGE A(1)A(12)A(1)x(1)A(6)|| WRITE "naam";"type";"schutnr";"ETA/ETD";"anker op";"aanlopen";"wachttijden";"schuttijden";"frstprt";"prt";"zijde";"opmerking";"init wachttijd" TO uitvoer WITH IMAGE A(4)X(2)A(4)X(1)A(7)X(1)A(7)X(2)A(8)X(3)A(8)X(6)A(11)x(6)A(11)X(4)A(8)x(1)A(4)X(1)A(5)X(1)A(12)X(3)A(17) WRITE "@" TO uitvoer WITH IMAGE A(3)| WRITE "@" TO uitvoer WITH IMAGE A(1) WRITE " extra voor " TO uitvoer WITH IMAGE X(49)A(45)X(37) WRITE "@" TO uitvoer WITH IMAGE A(1)| FOR EACH schip IN voorlopige_planning naam ← NAME OF THIS schip typeschip ← type OF THIS schip opm ← noot OF THIS schip CONVERT schutnr OF THIS schip TO outstring1 FIELDLENGTH 3 CONVERT arrt_minutes OF THIS schip TO outstring2 FIELDLENGTH 7 DECIMALS 2 CONVERT perm_anker_op OF THIS schip TO outstring3 FIELDLENGTH 7 DECIMALS 2 CONVERT aanl_tijdstip OF THIS schip TO outstring4 FIELDLENGTH 7 DECIMALS 2 Bijlagen
193
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
CONVERT extra_wtijd OF THIS schip TO outstring5 FIELDLENGTH 7 DECIMALS 2 CONVERT wtijd_voor OF THIS schip TO outstring6 FIELDLENGTH 7 DECIMALS 2 CONVERT eind_schut OF THIS schip TO outstring10 FIELDLENGTH 7 DECIMALS 2 CONVERT aanv_schut OF THIS schip TO outstring11 FIELDLENGTH 7 DECIMALS 2 CONVERT firsttijpoort OF THIS schip TO outstring12 FIELDLENGTH 7 DECIMALS 2 CONVERT tijpoort OF THIS schip TO outstring13 FIELDLENGTH 7 DECIMALS 2 CONVERT aankomstzijde OF THIS schip TO outstring20 FIELDLENGTH 2 CONVERT init_wtijd OF THIS schip TO outstring22 FIELDLENGTH 7 DECIMALS 2 WRITE naam;typeschip;outstring1;outstring2;outstring3;outstring4;outstring5;outstring6;outstring11;outstring10;outstring12;outstring 13;outstring20;opm;outstring22 TO uitvoer WITH IMAGE A(6)X(2)A(4)X(2)A(3)X(3)A(7)X(3)A(7)X(3)A(7)X(2)A(7)X(1)A(7)X(2)A(7)X(1)A(8)X(2)A(8)X(2)A(8)X(2)A(2)X(3)A(17)A(8)| END WRITE "" TO uitvoer WITH IMAGE A(1)|| CLOSE results RETURN
Sleepboot gegevens FOR type_of_ship ← 1 TO 12 aantal ← READ FROM sleepbootgegevens aantal_sb[type_of_ship] ← aantal END RETURN
Tijcontrole1 IF (noot OF THIS schip = "stroomschip")|(noot OF THIS schip = "ontheffingsschip") IF (hor_tijopen = FALSE)&(opnieuw=FALSE) variant ← "ongeldig" IF THIS schip IS nieuwschip passeren[3] OF THIS schip ← hor_getijopen[tijteller1] passeren[1] OF THIS schip ← passeren[3] OF THIS schip - vaart[2+3] OF THIS schip - vaart[1+2] OF THIS schip perm_anker_op OF THIS schip ← passeren[1] OF THIS schip firsttijpoort OF THIS schip ← perm_anker_op OF THIS schip opnieuw←TRUE END IF THIS schip IS NOT nieuwschip passeren[3] OF THIS schip ← hor_getijopen[tijteller1] passeren[1] OF THIS schip ← passeren[3] OF THIS schip - vaart[2+3] OF THIS schip - vaart[1+2] OF THIS schip perm_anker_op OF THIS schip ← passeren[1] OF THIS schip END END END RETURN Bijlagen
194
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Tijcontrole2 IF noot OF THIS schip = "ontheffingsschip" IF vert_tijopen = FALSE variant ← "ongeldig" IF THIS schip IS nieuwschip perm_anker_op OF THIS schip ← vert_getijopen[tijteller2] firsttijpoort OF THIS schip ← perm_anker_op OF THIS schip opnieuw ← TRUE END IF THIS schip IS NOT nieuwschip perm_anker_op OF THIS schip ← vert_getijopen[tijteller2] END END END RETURN
Tijden bepalen Ti ←0 Tu ← 0 dezezijde ← aankomstzijde OF laatste_schip overzijde ← 3-dezezijde Ti ← invaren OF laatste_schip Taanl ← (passeren[6] OF laatste_schip - passeren[1] OF laatste_schip) IF aankomstzijde OF laatste_schip = 1 Taanl ← (passeren[7] OF laatste_schip - passeren[10] OF laatste_schip) IF aankomstzijde OF laatste_schip = 2 Tb ← deursluiten + omzetten + deuropenen FOR EACH schip IN schepen_deze_schutting Tu ← Tu + uitvaren OF THIS schip END Td ← Ti + Tb + Tu sluisvrij[overzijde] ← aanl_tijdstip OF laatste_schip + Taanl + Td sluisvrij[dezezijde] ← sluisvrij[overzijde] + Tb RETURN
Toetsen OPEN informatie FOR OUTPUT REWIND informatie FOR EACH schip IN voorlopige_planning Bijlagen
195
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
IF (type OF THIS schip = "Cont")|(type OF THIS schip = "Pass") IF init_wtijd OF THIS schip > 45 init_wtijd OF THIS schip ← FLOOR(init_wtijd OF THIS schip) wtijd_voor OF THIS schip ← FLOOR(wtijd_voor OF THIS schip) IF wtijd_voor OF THIS schip - init_wtijd OF THIS schip > 5 variant ← "ongeldig" @ regel 3 END END IF init_wtijd OF THIS schip ≤ 45 IF wtijd_voor OF THIS schip > 45 variant ← "ongeldig" @ regel 3 END END END IF (noot OF THIS schip = "stroomschip")|(noot OF THIS schip = "ontheffingsschip") tijpoort OF THIS schip ← FLOOR(tijpoort OF THIS schip) firsttijpoort OF THIS schip ← FLOOR(firsttijpoort OF THIS schip) IF (tijpoort OF THIS schip ≠ firsttijpoort OF THIS schip)&(aanv_schut OF THIS schip≠0) variant ← "ongeldig" @ regel 1&2 END END IF wtijd_in OF THIS schip > 30 variant ← "ongeldig" END END IF (stoppen = FALSE)&(opnieuw=FALSE)&(variant = "ongeldig") WRITE "@";"ongeldig";"@" TO uitvoer WITH IMAGE A(1)A(9)A(1)| WRITE "ongeldig" TO informatie WITH IMAGE A(8)| END IF variant = "geldig" FOR EACH schip IN voorlopige_planning totale_wtijd ← totale_wtijd + wtijd_voor OF THIS schip END WRITE "geldig" TO informatie WITH IMAGE A(8)| CONVERT totale_wtijd TO outstring16 FIELDLENGTH 8 DECIMALS 2 CONVERT wtijdtot OF nieuwschip TO outstring17 FIELDLENGTH 8 DECIMALS 2 CONVERT aantalleegschut TO outstring18 FIELDLENGTH 2 CONVERT aantalvolschut TO outstring19 FIELDLENGTH 2 CONVERT eindzijde TO outstring20 FIELDLENGTH 3 CONVERT sluisvrij[eindzijde] TO outstring21 FIELDLENGTH 7 DECIMALS 2 WRITE outstring16;outstring17;outstring18;outstring19;outstring20;outstring21 TO informatie WITH IMAGE A(8)X(2)A(8)X(2)A(2)X(3)A(2)X(2)A(2)X(2)A(7)| END IF stoppen = TRUE WRITE "stoppen" TO informatie WITH IMAGE A(9)| WRITE "@";"ongeldig";"@" TO uitvoer WITH IMAGE A(1)A(9)A(1)| END IF opnieuw = TRUE WRITE "opnieuw" TO informatie WITH IMAGE A(9)| CONVERT perm_anker_op OF nieuwschip TO outstring9 FIELDLENGTH 7 DECIMALS 2 Bijlagen
196
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
CONVERT firsttijpoort OF nieuwschip TO outstring16 FIELDLENGTH 7 DECIMALS 2 WRITE outstring9;outstring16 TO informatie WITH IMAGE A(7)X(3)A(7) WRITE "@";"ongeldig";"@" TO uitvoer WITH IMAGE A(1)A(9)A(1)| END CLOSE informatie RETURN
Type nummer @ voor het bepalen van de categorie, waarin het schip geplaatst wordt type_nr OF next ← 1 IF type OF next = "BuYP" type_nr OF next ← 1 END IF type OF next = "BuDi" type_nr OF next ← 2 END IF type OF next = "Cont" type_nr OF next ← 3 END IF type OF next = "GenC" type_nr OF next ← 4 END IF type OF next = "Refr" type_nr OF next ← 5 END IF type OF next = "Roro" type_nr OF next ← 6 END IF type OF next = "Pass" type_nr OF next ← 7 END IF type OF next = "Tank" type_nr OF next ← 8 END IF type OF next = "ChTa" type_nr OF next ← 9 END IF type OF next = "Dred" type_nr OF next ← 10 END IF type OF next = "AuCa" type_nr OF next ← 11 END IF type OF next = "Over" type_nr OF next ← 12 END RETURN Bijlagen
197
Planningsmodel voor de scheepvaartafhandeling bij de Noordersluis in IJmuiden
Vaartijden cat READ FROM vaartijd WHILE cat ≠ -1 vtA5West[cat] ← READ FROM vaartijd vtA4West[cat] ← READ FROM vaartijd vtA3West[cat] ← READ FROM vaartijd vtA2West[cat] ← READ FROM vaartijd vtA1West[cat] ← READ FROM vaartijd vtA1Oost[cat] ← READ FROM vaartijd vtA2Oost[cat] ← READ FROM vaartijd vtA3Oost[cat] ← READ FROM vaartijd invaartijd[cat] ← READ FROM vaartijd uitvaartijd[cat] ← READ FROM vaartijd cat ← READ FROM vaartijd END RETURN
Bijlagen
198