Planning Public Transportation

FAQ

by Arne Sommer

Planning Public Transportation - FAQ

[3.5] Published XX. November 2021.

[ Introduction | Oslo Metro | Oslo Tram | Bergen | FAQ ]

FAQ (Frequently Asked Qestions) with Answers

One-way Routes
Define the route as normal, and then use only one of the directions in the vehicle definition file. The other direction will show up in the sumamry and as a timingpoint.

It is also possible to explicitly prevent one of the directions, by placing «-» in the platform column for that direction. The route will be missing in that direction in the summary if all the platform in that direction has been set to «-». It will not show as a timingpoint.

Different Frequency in each direction
This can be done by setting up two identical routes with the same route definition file, with different interval values. Then use one route in the Down direction, and the other in the Up direction in the vehicle specification file.

It is also possible to have one route in both directions, and the second one in only one. Depending on the intervals.

I want to make a new network, combining the sections differently
This can be done «the hard way» by making route definition files for the new routes, using cut and paste on the different sections.

But it is easier to use the existing route definition files, setting up the first part of the route with the «route add» command (typically as a short running), and then add one or more sections to it with the «route append» command.

Do I have to use an interval that can be multiplied up to 60?
Yes and no.

Let us take Bergen route 2 as an example:

route add 2 file:bergen-bybanen/02.def 
summary

The result (in the Down direction only), as the interval adds up to 60:

Route 2: Byparken - Fyllingsdalen terminal
----------------------------------------------------------------
00  | 00  10  20  30  40  50  Byparken [D]
01  | 01  11  21  31  41  51  Nonneseter [B]
02  | 02  12  22  32  42  52  Bystasjonen [D]
05  | 05  15  25  35  45  55  Fløen [B]
08  | 08  18  28  38  48  58  Haukeland sykehus [B]
11  | 11  21  31  41  51  01  Kronstad [D]
12  | 12  22  32  42  52  02  Mindemyren [B]
14  | 14  24  34  44  54  04  Kristiansborg [B]
18  | 18  28  38  48  58  08  Fyllingsdalen terminal [B]

Let us try with an 8 minute interval:

route add 2 file:bergen-bybanen/02.def interval:8
summary

The result (again in the Down direction only):

Route 2: Byparken - Fyllingsdalen terminal
----------------------------------------------------------------
00  | 00  08  16  24  32  40  48  56  04  12  20  28  36  44  52  Byparken [D]
01  | 01  09  17  25  33  41  49  57  05  13  21  29  37  45  53  Nonneseter [B]
02  | 02  10  18  26  34  42  50  58  06  14  22  30  38  46  54  Bystasjonen [D]
05  | 05  13  21  29  37  45  53  01  09  17  25  33  41  49  57  Fløen [B]
08  | 08  16  24  32  40  48  56  04  12  20  28  36  44  52  00  Haukeland sykehus [B]
11  | 11  19  27  35  43  51  59  07  15  23  31  39  47  55  03  Kronstad [D]
12  | 12  20  28  36  44  52  00  08  16  24  32  40  48  56  04  Mindemyren [B]
14  | 14  22  30  38  46  54  02  10  18  26  34  42  50  58  06  Kristiansborg [B]
18  | 18  26  34  42  50  58  06  14  22  30  38  46  54  02  10  Fyllingsdalen terminal [B]

The interval does not add up to 60, but it does add up to 120. So we get different departures for the first and second hour. That is in itself not a problem, until we look at the timingpoints:

timingpoints bergen-bybanen/timingpoints-2.def

This is the top rows of the result:

Byparken [C]
 02  06  10  14  18  22  26  30  34  38  42  46  50  54  58   2 Byparken

Byparken [D]
 00  04  08  12  16  20  24  28  32  36  40  44  48  52  56   2 Fyllingsdalen terminal

Note that the program has sorted the departures nicely for us, even if half of them belong to the next hour.

The vehicles computation does work:

	      0201  0202  0203  0204  0205  0206  0207
-------------------------------------------------------
Byp/2	dep   0000  0008  0016  0024  0032  0040  0048 
FyT	arr   0018  0026  0034  0042  0050  0058  0106 
FyT/2	dep   0032  0040  0048  0056  0104  0112  0120 
Byp	arr   0050  0058  0106  0114  0122  0130  0138 
Byp/2	dep   0056  0104  0112  0120  0128  0136  0144 

Does the program support running times of more than one hour between stops?
Not really. This is a result of the former life as three separate programs. The vehicle program used (and the combined program mostly still do) the output of the first one (the summary) as input. It happily ignores the first column (that can exceed 60 minutes) and uses the minute values (minutes past the hour). A value «00» followed by a new row with the same value is taken as a running time of zero minutes - even if you specified 60 minutes.

We can illustrat this with the trains between Oslo (in Norway) and Göteborg (in Sweden), with a simplified stop pattern (so that the travel time between two stops exceeds 60 minutes):

File: NSB/R20.def
#
# R20 Oslo - Göteborg
# --------------------------------------
NT001 S     S:20 Oslo S
NT002 B:22  A:21  Ski
NT003 B:21  A:45  Moss
NT004 B:45  A:90  Halden
ST501 1:90  1     Göteborg C

The platform IDs are wrong. I have speeded up the trains by removing a lot of stops.

File: NSB/R20.setup
## Networkplanner ##

route add R20 file:NSB/R20.def interval:30

summary

vehicles NSB/R20-vehicles.def
File: NSB/R20-vehicles.def
=2000

R20 D OsloS 20
R20 U GötbC 20

The summary looks ok-ish, as the total travel times (at 178 and 176 minutes) are correct (insofar as they match the route definition - not the real world).

Route R20: Oslo S - Göteborg C
----------------------------------------------------------------
00  | 00  30  Oslo S [S]
22  | 22  52  Ski [B]
43  | 43  13  Moss [B]
88  | 28  58  Halden [B]
178  | 58  28  Göteborg C [1]

Route R20: Göteborg C - Oslo S
----------------------------------------------------------------
00  | 00  30  Göteborg C [1]
90  | 30  00  Halden [A]
135  | 15  45  Moss [A]
156  | 36  06  Ski [A]
176  | 56  26  Oslo S [S]

But the vehicle part does not:

	      2001  2002  2003  2004  2005  2006  2007  2008
-------------------------------------------------------------
OsloS	dep   0000  0030  0100  0130  0200  0230  0300  0330 
GötbC	arr   0128  0158  0228  0258  0328  0358  0428  0458 
GötbC	dep   0200  0230  0300  0330  0400  0430  0500  0530 
OsloS	arr   0330  0400  0430  0500  0530  0600  0630  0700 
OsloS	dep   0400  0430  0500  0530  0600  0630  0700  0730 

The obvious problem is the 90 minutes on the last leg, which is minute-ified down to 30. But we get another 60 minutes shaved off somewhere along the route as well. I cannot explain why...

The solution (for now) is to add ghost stops, ensuring that we keep the running time (between consecutive stops) way under 60 minutes. THIS DOES NOT WORK!!!!

File: NSB/R20b.def
#
# R20 Oslo - Göteborg
# --------------------------------------
NT001 S     S:20 Oslo S
NT002 B:22  A:21  Ski
NT003 B:21  A:45  Moss
NT004 B:45  A:40  Halden
ST503 B:40  A:40  Ed
ST502 B:40  A:40  Öxnered
ST501 1:40  1     Göteborg C
File: NSB/R20b.setup
## Networkplanner ##

route add R20 file:NSB/R20b.def interval:30

summary

vehicles NSB/R20-vehicles.def
Route R20: Oslo S - Göteborg C
----------------------------------------------------------------
00  | 00  30  Oslo S [S]
22  | 22  52  Ski [B]
43  | 43  13  Moss [B]
88  | 28  58  Halden [B]
128  | 08  38  Ed [B]
168  | 48  18  Öxnered [B]
208  | 28  58  Göteborg C [1]

Route R20: Göteborg C - Oslo S
----------------------------------------------------------------
00  | 00  30  Göteborg C [1]
40  | 40  10  Öxnered [A]
80  | 20  50  Ed [A]
120  | 00  30  Halden [A]
165  | 45  15  Moss [A]
186  | 06  36  Ski [A]
206  | 26  56  Oslo S [S]
	      2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016
-------------------------------------------------------------------------------------------------------------
OsloS	dep   0000  0030  0100  0130  0200  0230  0300  0330  0400  0430  0500  0530  0600  0630  0700  0730 
GötbC	arr   0328  0358  0428  0458  0528  0558  0628  0658  0728  0758  0828  0858  0928  0958  1028  1058 
GötbC	dep   0400  0430  0500  0530  0600  0630  0700  0730  0800  0830  0900  0930  1000  1030  1100  1130 
OsloS	arr   0726  0756  0826  0856  0926  0956  1026  1056  1126  1156  1226  1256  1326  1356  1426  1456 
OsloS	dep   0800  0830  0900  0930  1000  1030  1100  1130  1200  1230  1300  1330  1400  1430  1500  1530

208 minutes is the same as 3 hours and 28 minutes, and 206 minutes is the same as 3 hours and 26 minutes, so the accumulated travel times are correct.

Why doesn't the program support a 60 minute interval?
It does not really have a concept of hours, so 60 minutes will be de-hour-ified to zero minutes, which will not work out (as you can add an infinite amount of zeroes and still not get to the next hour). Try with a 30 minute interval, and remove half the departures.

[ Introduction | Oslo Metro | Oslo Tram | Bergen | FAQ ]