Skip to content

How to run the model

Jip Claassens edited this page Apr 25, 2026 · 14 revisions

How to run the model

This page walks through installing the components, configuring the parameters, and running the model end-to-end. If you only need to understand what the model does and how it works internally, see the Public transport and Private transport pages instead.

Contents


With GeoDMS, the NetworkModel_PBL project scripts, and the geographic source data, you can calculate travel time and price matrices for public transport, car (with and without congestion), cycling, e-bike, and walking. You can also inspect and adjust calculation rules, change parameters, and set up different origin and destination sets.


Installing components

GeoDMS software

We recommend using GeoDMS 17.9.2 or a later release. Earlier versions may not support all features used by the model.

For instructions on installing GeoDMS and loading a configuration, see the GeoDMS Academy.

Network model project scripts

Clone the repository with Git:

git clone https://github.com/ObjectVision/NetworkModel_PBL.git

Alternatively, use a Git client such as TortoiseGit, or download a ZIP from here.

Source data

The required geographic source data (GTFS feeds, OSM networks, TomTom road network, BAG, administrative boundaries, PT fare tables, and NS tariff units matrix) are managed in a separate SVN repository at PBL. Contact PBL to obtain access.

After checking out the source data, verify that the %NetworkModel_Dir% path variable in your GeoDMS configuration points to the correct location.


Model parameters

All configurable settings are in ModelParameters (ModelParameters.dms). Most users will only need to change the top-level parameters. The Advanced sub-container contains technical parameters that rarely need adjustment.

General settings

Parameter Default Description
AnalysisMoment 'Y2023' Selects a preset year that automatically sets accompanying dataset versions (BAG, administrative boundaries). Choices are defined in Advanced/AnalysisMomentPresets.
Orgset 'Buurt' The origin set to use. Choices are defined in Advanced/org_domain_list.
Destset 'Buurt' The destination set to use. Choices are defined in Advanced/dest_domain_list.
CentroidWeightType 'Addresses' Whether to weight neighbourhood centroids by addresses or population.
Export_TravelledDistance TRUE Whether to include per-mode travel distances in the output.
Export_PriceInformation TRUE Whether to include price information in the public transport output.

For running a subset of origins (useful for testing), the Orgset_Enkele* parameters let you select a single neighbourhood, municipality, province, or COROP region.

Public transport settings

Parameter Default Description
GTFS_file_date '20231003' Download date of the GTFS feed, used to locate the FSS files. Must match the folder name under %NetworkModel_Dir%/Infrastructuur/GTFS/.
Analysis_date '20231010' The calendar date for which the timetable is analysed. Must be between GTFS_file_date and GTFS_file_date + 100 days.
MaxPTTime 90 min Maximum total public transport travel time, including waiting and transfers.
MaxTravelTime 90 min Maximum total journey time including pre- and post-transport legs.
MinimiseCriteria 'Price-Time' Which attributes to include in the Pareto optimisation. Options are 'Price', 'Price_Augm', 'Time', or combinations such as 'Price-Time'. This value also appears in the intermediate FSS filename, so changing it invalidates the cache.
FareTable_year '2023' Year of the public transport fare table to use.
Transfer_Walking_Time_Costs 0.19 €/min Monetary value assigned to walking time during transfers, used to prevent unrealistically long transfer walks when minimising price.
Transfer_Waiting_Time_Costs 0.05 €/min Monetary value assigned to waiting time at transfer stops.
Advanced/NS_TariffChoice 'Price_FullFare' NS tariff class. Options: 'Price_FullFare', 'Price_20pct_Discount', 'Price_40pct_Discount'.
Advanced/Max_transfers 3 Maximum number of transfers allowed. Increasing this significantly increases computation time and memory use.
Advanced/MaxTransferDist 500 m Maximum crow-fly distance allowed for a transfer walk between stops.
Advanced/MaxWaitingTimeAtOrigin (Advanced) Maximum waiting time at the origin before departing.
Advanced/IncludeWaitingAtHomeInTravelTime FALSE Whether waiting time at the origin counts towards total travel time.
Advanced/MaxStopBlockSize 250 Number of origin stops per processing block. Together with NumberOfStopBlocks, this determines peak memory use.
Advanced/NumberOfStopBlocks 200 Number of blocks. Must satisfy MaxStopBlockSize * NumberOfStopBlocks > total number of stops.
Advanced/OV_PreTransport_Typen (Advanced) Which pre-transport connection types to include; see Pre- and post-transport connections on the Public transport page.
Advanced/OV_PostTransport_Typen (Advanced) Which post-transport connection types to include.
Advanced/PT_DepartureHours (Advanced) Hours at which departure moments are evaluated (e.g. 7, 8, 9).
Advanced/PT_DepartureMinutes (Advanced) Minutes within each hour at which departure moments are evaluated (e.g. 0, 15, 30, 45).

Car settings

Parameter Default Description
MaxCarTime 90 min Maximum car travel time.
UseTomTomNetworkForCars TRUE Whether to use the TomTom road network. If false, the OSM network is used instead.

Walking and cycling settings

Maximum travel times for each mode and connection direction are configured separately, for example MaxWalkingTime_Org2Stops, MaxCyclingTime_Org2RMT_Stops, and MaxWalkingTime_Stops2Dest. See ModelParameters_base.dms for the full list. Time-cost parameters (PreTransport_Walking_Time_Costs, PostTransport_Cycling_Time_Costs, etc.) attach a monetary value to travel time for each mode and connection direction, which matters when MinimiseCriteria includes price.


Running the model: step by step

The model has several layers of pre-processing that must be completed in order. The GeoDMS GUI will refuse to compute downstream results if upstream pre-processing has not yet been run. After changing any parameter, reload the configuration with Alt+R before continuing.

Step 1: set and verify model parameters

Open ModelParameters_base.dms (or the local override file if one exists) and check all relevant parameters. At minimum, verify AnalysisMoment, Orgset, Destset, GTFS_file_date, and Analysis_date. If you change MinimiseCriteria, Max_transfers, MaxPTTime, or Analysis_date, the intermediate PT chains FSS cache will be invalidated and must be regenerated (step 3).

Reload the configuration after any change: Alt+R.

Step 2: generate GTFS FSS files

If the GTFS FSS files for the chosen GTFS_file_date do not yet exist, they must be generated from the raw CSV text files. Activate:

SourceData/Infrastructuur/GTFS/LoadFeeds/StoreFSS

This converts all eight GTFS files (agency, calendar, calendar_dates, routes, shapes, stop_times, stops, trips) to binary FSS format and writes them to %NetworkModel_Dir%/Infrastructuur/GTFS/<GTFS_file_date>/fss/. This step only needs to be done once per GTFS feed date.

Step 3: generate the PT chains intermediate result

The public transport chain generation is computationally the most demanding step. Its result is cached to a binary FSS file so that the per-departure-moment analysis (step 4) can read from it without repeating the full computation. The cache filename is automatically derived from the relevant parameters, including Analysis_date, MinimiseCriteria, Max_transfers, and MaxPTTime, so it is safe to keep multiple cached results for different parameter combinations.

To generate or regenerate the PT chains file, activate:

PublicTransport_Prep/x/Write_Result

This triggers the full chain generation pipeline: building OD_R and OD_L, computing all four transfer sets, running ChainGeneration_PerBlock for each block, unioning the results, and writing to the FSS file defined in PublicTransport_Prep/StorageName_Str. The location is:

%LocalDataProjDir%/IntermediateResults/PT_Chains_<time_window>_<analysis_date>_<criteria>_<max_transfers>_<max_pt_time>.fss

This step requires significant RAM. See the hardware requirements section below.

After Write_Result completes, reload the configuration (Alt+R) so that PublicTransport_Prep/PT reads from the newly written file.

Step 4: generate output

Once the PT chains file exists and has been loaded via PublicTransport_Prep/PT, per-departure-moment results can be computed and exported. Activate the output generation container for the desired transport mode and origin block. For public transport:

NetworkSetup/PublicTransport/PerDepartureMoment/<moment>/CreateExports/Results_Traveltime

Or trigger the top-level output generation for all departure moments and all origin blocks at once via the relevant Generate_Output container. Output files are written as semicolon-delimited CSV files to %LocalDataProjDir%/Output/PerBlock/, with filenames that encode the analysis date, departure moment, origin and destination sets, transport configuration, and Pareto criteria.

For private transport (car, cycling, walking), the corresponding network setup containers can be activated independently of the PT pipeline.


Hardware requirements

  • Operating system: Windows 10 or later.
  • GeoDMS version: 17.9.2 or later.
  • RAM and pagefile: at least 400 GB combined when computing the public transport chains for a full national run (all of the Netherlands, Buurt as origin set). The chain generation is split into blocks (controlled by MaxStopBlockSize and NumberOfStopBlocks) specifically to limit peak memory use; reducing block size lowers peak RAM at the cost of longer computation time. Smaller origin sets (e.g. a single province or COROP region) require substantially less memory.
  • Disk space: at least 350 GB free for source data, FSS intermediate files, and output. The PT chains FSS file alone can be several tens of gigabytes depending on the parameter settings.
  • CPU: the block-based parallelisation in GeoDMS can make use of multiple cores. More cores reduce wall-clock time for the chain generation step.