Planning Public Transportation with Raku
# Railways

by Arne Sommer

[
Introduction |
Oslo Metro |
Oslo Tram |
Bergen |
**Misc.**
]

[
Misc. Intro |
Lisboa |
**Railways** |
Reindeer Expressed |
Intervals NEW
]

The «networkplanner» program was meant for short routes with short intervals (i.e.
frequent departues). But it can it be used on longer routes, as e.g. intercity trains.
The normal summary (with minutes past the hour) does not work with an interval of
**60 minutes** or more, but we can work around that.

#
# R20 Oslo - Göteborg
# --------------------------------------
NT001 17 17: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 generally incorrect. Platform 17 at Oslo S is correct for cercain trains, as is platform 1 in Göteborg.

Let us have a go at a train every third hour (180 minutes):

File: railways/R20.setup## Networkplanner ##
route add R20 file:R20.def interval:180
summary
vehicles R20-vehicles.def

File: railways/R20-vehicles.def
=2000
R20 D OsloS 20
R20 U GötbC 20

The summary is not possible as the interval is 60 or more, and the program will tell you so:

R20: Summary not possible

The vehicle part looks like this:

2001 2002 2003 2004
-------------------------------------
OsloS dep 0000 0300 0600 0900
GötbC arr 0258 0558 0858 1158
GötbC dep 0600 0900 1200 1500
OsloS arr 0856 1156 1456 1756
OsloS dep 1200 1500 1800 2100
2000: Number of vehicles: 4
---------------------------------------
Total number of vehicles: 4

Let us go overboard, and have an interval of 45 minutes:

File: railways/R20b.setup## Networkplanner ##
route add R20 file:R20.def interval:45
summary
vehicles R20-vehicles.def

The summary does not cope with different departure times for the second hourm so it is pretty useless. Note that the first column nicely shows off the hour part of the accumulated travel time.

Route R20: Oslo S - Göteborg C
----------------------------------------------------------------
00 | 00 45 30 15 Oslo S [S]
22 | 22 07 52 37 Ski [B]
43 | 43 28 13 58 Moss [B]
1:28 | 28 13 58 43 Halden [B]
2:58 | 58 43 28 13 Göteborg C [1]
Route R20: Göteborg C - Oslo S
----------------------------------------------------------------
00 | 00 45 30 15 Göteborg C [1]
1:30 | 30 15 00 45 Halden [A]
2:15 | 15 00 45 30 Moss [A]
2:36 | 36 21 06 51 Ski [A]
2:56 | 56 41 26 11 Oslo S [S]

The vehicle part:

2001 2002 2003 2004 2005 2006 2007 2008 2009 2010
-------------------------------------------------------------------------
OsloS dep 0000 0045 0130 0215 0300 0345 0430 0515 0600 0645
GötbC arr 0258 0343 0428 0513 0558 0643 0728 0813 0858 0943
GötbC dep 0345 0430 0515 0600 0645 0730 0815 0900 0945 1030
OsloS arr 0641 0726 0811 0856 0941 1026 1111 1156 1241 1326
OsloS dep 0730 0815 0900 0945 1030 1115 1200 1245 1330 1415
2000: Number of vehicles: 10
---------------------------------------
Total number of vehicles: 10

(See e.g. Kan vi snart sove oss til kontinentet?; in Norwegian.)

The travel time is estimated to be 12 hours, or 720 minutes, in both directions. I have not added any stations en route, but the trains will surely make several stops.

File: railways/N20.def#
# N20 Oslo S - Hamburg H
# --------------------------------------
NT001 17 17:720 Oslo S
GT001 2:720 2 Hamburg H

File: railways/N20-vehicles.def
=N200
N20 D OsloS 60
N20 U HambH 60

The minimum layover time does not really matter, but I have set it to 1 hour anyway.

Departure is at 1900 (which is 1140 minutes past midnight):

File: railways/N20.setup## Networkplanner ##
route set N20 file:N20.def interval:1440 down:1140 up:1140
vehicles N20-vehicles.def

Note that the summary does not work, so including it would just be annoying.

The result:

$ networkplanner N20.setup
N201 N202
----------------------
OsloS dep 1900 4300
HambH arr 3100 5500
HambH dep 4300 6700
OsloS arr 5500 7900
OsloS dep 6700 9100
N200: Number of vehicles: 2
---------------------------------------
Total number of vehicles: 2

Time values in excess of 2359 are kind of excessive, but we can fix that.

The input values support the alternate `<hour>h<minutes>`

syntax:

#
# N20 Oslo S - Hamburg H
# --------------------------------------
NT001 17 17:12h00 Oslo S
GT001 2:12h00 2 Hamburg H

File: railways/N20b-vehicles.def
=N200
N20 D OsloS 1h00
N20 U HambH 1h00

File: railways/N20b.setup
## Networkplanner ##
route set N20 file:N20b.def interval:24h00 down:19h00 up:19h00
summary
vehicles N20b-vehicles.def

This is just an input format, so the change does not affect the output in any way:

$ networkplanner N20b.setup
N201 N202
----------------------
OsloS dep 1900 4300
HambH arr 3100 5500
HambH dep 4300 6700
OsloS arr 5500 7900
OsloS dep 6700 9100
N200: Number of vehicles: 2
---------------------------------------
Total number of vehicles: 2

Use the «:days» option to the «vehicles» command to nicify the days:

File: railways/N20c.setup## Networkplanner ##
route set N20 file:N20b.def interval:24h00 down:19h00 up:19h00
summary
vehicles :days N20b-vehicles.def

The result:

$ networkplanner railways/N20b.setup
N201 N202
--------------------------
OsloS dep 1900 1+1900
HambH arr 1+0700 2+0700
HambH dep 1+1900 2+1900
OsloS arr 2+0700 3+0700
OsloS dep 2+1900 3+1900
N200: Number of vehicles: 2
---------------------------------------
Total number of vehicles: 2

`1+`

means the next day, `2+`

the day after that again, and so on.

We have a night train with daily (or nightly) departures, and need two train sets to do so.

This is the actual travel times (as of 13. December 2021):

file: railways/ViaRail-12.def#
# 1/2 Toronto - Winnipeg - Jasper - Vancouver
# -------------------------------------------
#
ON001 D1 A2:3h30 Toronto, ON
ON002 D1:2h40 D2:2h17 Washoga, ON
ON003 D1:2h02 D2:3h53 Perry Sound, ON
ON004 D1:2h30 D2:22 Sudbury Jvt, ON
ON005 A1:25 D2:40 Capreol, ON
ON005 D1:30 A2:2h14 Capreol, ON
ON006 D1:56 D2:13 Laforest, ON
ON007 D1:13 D2:20 McKee's Camp, ON
ON008 D1:20 D2:8 Felix, ON
ON009 D1:7 D2:17 Ruel, ON
ON010 D1:17 D2:33 Westree, ON
ON011 D1:33 D2:1h35 Gogama, ON
ON012 D1:2h26 D2:1h23 Foleyet, ON
ON013 D1:54 D2:1h34 Elsas, ON
ON014 D1:2h00 D2:51 Oba, ON
ON015 A1:51 D2:55 Hornepayne, ON
ON016 D1:40 A2:2h15 Hornepayne, ON
ON017 D1:56 D2:50 Hillsport, ON
ON018 D1:50 D2:28 Caramat, ON
ON019 D1:39 D2:51 Longlac, ON
ON020 D1:39 D2:1h06 Nakina, ON
ON021 D1:1h06 D2:37 Auden, ON
ON022 D1:37 D2:8 Ferland, ON
ON023 D1:9 D2:32 Mud River, ON
ON024 D1:1h12 D2:31 Armstrong, ON
ON025 D1:30 D2:1h40 Collins, ON
ON026 D1:-21 D2:15 Allanwater Bridge, ON
ON027 D1:16 D2:17 Flindt Landing, ON
ON028 D1:17 D2:1h23 Savant Lake, ON
ON029 A1:1h26 D2:50 Sioux Lookout, ON
ON029 D1:30 A2:1h33 Sioux Lookout, ON
ON030 D1:1h10 D2:37 Richan, ON
ON031 D1:36 D2:28 Red Lake Road, ON
ON032 D1:29 D2:37 Canyon, ON
ON033 D1:37 D2:17 Farlane, ON
ON034 D1:36 D2:26 Redditt, ON
ON035 D1:21 D2:17 Minaki, ON
ON036 D1:17 D2:6 Ottermere, ON
ON037 D1:6 D2:2 Malachi, ON
ON038 D1:2 D2:3 Copelands Landing, ON
ON039 D1:3 D2:14 Rice Lake, ON
MB001 D1:14 D2:5 Winnitoba, MB
MB002 D1:5 D2:18 Ophir, MB
MB003 D1:18 D2:21 Brereton Lake, MB
MB004 D1:21 D2:1h07 Elma, MB
MB005 A1:2h20 D2:1h30 Winnipeg, MB
MB005 D1:2h00 A2:2h45 Winnipeg, MB
MB006 D1:1h34 D2:1h53 Portage la Prairie, MB
MB007 D1:2h27 D2:3h25 Rivers, MB
SK001 A1:4h23 D2:10 Melville, SK
SK001 D1:10 A2:4h21 Melville, SK
SK002 D1:2h50 D2:1h29 Watrous, SK
SK003 A1:1h56 D2:1h00 Saskatoon, SK
SK003 D1:1h00 A2:2h26 Saskatoon, SK
SK004 A1:1h39 D2:10 Biggar, SK
SK004 D1:10 A2:1h34 Biggar, SK
SK005 D1:5 D2:2h33 Unity, SK
SK006 D1:2h49 D2:2h21 Wainwright, AB
AB001 D1:53 D2:2h03 Viking, AB
AB002 A1:3h24 D2:1h00 Edmonton, AB
AB002 D1:3h11 A2:2h22 Edmonton, AB
AB003 D1:1h28 D2:1h09 Evansburg, AB
AB004 D1:1h23 D2:1h34 Edson, AB
AB005 D1:1h06 D2:1h15 Hinton, AB
AB006 A1:2h32 D2:1h30 Jasper, AB
AB006 D1:3h00 A2:3h59 Jasper, AB
BC001 D1:1h20 D2:1h50 Valemount, BC
BC002 D1:2h46 D2:2h13 Blue River, BC
BC003 D1:2h09 D2:2h06 Clearwater, BC
BC004 A1:2h43 D2:35 Kamloops North, BC
BC004 D1:35 A2:1h45 Kamloops North, BC
BC005 D1:1h46 D2:2h46 Ashcroft, BC
BC006 - D2:2h29 North Bend, BC
BC007 D1:3h17 - Boston Bar, BC
BC008 D1:47 - Chilliwack, BC
BC009 D1:1h55 - Hope, BC
BC010 - D2:14 Katz, BC
BC011 - D2:28 Agassiz, BC
BC012 D1:1h08 - Abbotsford, BC
BC013 - D2:1h35 Mission Harbour, BC
BC014 A1:4h04 D2 Vancouver, BC

The route does not have a route number, but the Vancouver bound train has train number 1, and the Toronto bound train has number 2.

I have used the platform ID D1 (Departure, direction 1) towards Vancouver, and D2 (Departure, direction 2) towards Toronto. There are (more or less) extensive waiting times on several stations en route. I have handled this by using platforms A1 (arrival, direction 1) and A2 (arrival, direction 2) for the arrival time, before the usual departure from D1 or D2.

The vehicle definition file is easy to set up:

File: railways/ViaRail-12-vehicles.def=0000
1 D Toronto 60
1 U Vancouver 60

The layover time at the terminals does not really matter.

The trains are running once weekly for the time beeing, with departure on Monday.

File: ViaRail-12.setup## Networkplanner ##
route set 1 file:ViaRail-12.def interval:168h00 down:9h45 up:15h00
summary :raw
vehicles :days ViaRail-12-vehicles.def

The vehicles part of the output is as expected:

0001 0002
------------------------------
Toronto dep 0945 7+0945
Vancouver arr 4+0800 11+0800
Vancouver dep 7+1500 14+1500
Toronto arr 11+1429 18+1429
Toronto dep 14+0945 21+0945
0000: Number of vehicles: 2
---------------------------------------
Total number of vehicles: 2

The «4+» part means four days later.

The normal summary is not available as the interval is >= 60 minutes, but we can
use the «:raw» argument to get a (for want of a better word) *raw* version.
[v.0.0.3: The «raw» version will be used automatically, when the interval >=
60 minutes. So you do not have to specify it.)

The result:

Route 1: Toronto, ON - Vancouver, BC
----------------------------------------------------------------
9:45 | Toronto, ON [D1]
12:25 | Washoga, ON [D1]
14:27 | Perry Sound, ON [D1]
16:57 | Sudbury Jvt, ON [D1]
17:22 | Capreol, ON [A1]
17:52 | Capreol, ON [D1]
18:48 | Laforest, ON [D1]
19:01 | McKee's Camp, ON [D1]
19:21 | Felix, ON [D1]
19:28 | Ruel, ON [D1]
19:45 | Westree, ON [D1]
20:18 | Gogama, ON [D1]
22:44 | Foleyet, ON [D1]
23:38 | Elsas, ON [D1]
+1 1:38 | Oba, ON [D1]
+1 2:29 | Hornepayne, ON [A1]
+1 3:09 | Hornepayne, ON [D1]
+1 4:05 | Hillsport, ON [D1]
+1 4:55 | Caramat, ON [D1]
+1 5:34 | Longlac, ON [D1]
+1 6:13 | Nakina, ON [D1]
+1 7:19 | Auden, ON [D1]
+1 7:56 | Ferland, ON [D1]
+1 8:05 | Mud River, ON [D1]
+1 9:17 | Armstrong, ON [D1]
+1 9:47 | Collins, ON [D1]
+1 9:26 | Allanwater Bridge, ON [D1]
+1 9:42 | Flindt Landing, ON [D1]
+1 9:59 | Savant Lake, ON [D1]
+1 11:25 | Sioux Lookout, ON [A1]
+1 11:55 | Sioux Lookout, ON [D1]
+1 13:05 | Richan, ON [D1]
+1 13:41 | Red Lake Road, ON [D1]
+1 14:10 | Canyon, ON [D1]
+1 14:47 | Farlane, ON [D1]
+1 15:23 | Redditt, ON [D1]
+1 15:44 | Minaki, ON [D1]
+1 16:01 | Ottermere, ON [D1]
+1 16:07 | Malachi, ON [D1]
+1 16:09 | Copelands Landing, ON [D1]
+1 16:12 | Rice Lake, ON [D1]
+1 16:26 | Winnitoba, MB [D1]
+1 16:31 | Ophir, MB [D1]
+1 16:49 | Brereton Lake, MB [D1]
+1 17:10 | Elma, MB [D1]
+1 19:30 | Winnipeg, MB [A1]
+1 21:30 | Winnipeg, MB [D1]
+1 23:04 | Portage la Prairie, MB [D1]
+2 1:31 | Rivers, MB [D1]
+2 5:54 | Melville, SK [A1]
+2 6:04 | Melville, SK [D1]
+2 8:54 | Watrous, SK [D1]
+2 10:50 | Saskatoon, SK [A1]
+2 11:50 | Saskatoon, SK [D1]
+2 13:29 | Biggar, SK [A1]
+2 13:39 | Biggar, SK [D1]
+2 13:44 | Unity, SK [D1]
+2 16:33 | Wainwright, AB [D1]
+2 17:26 | Viking, AB [D1]
+2 20:50 | Edmonton, AB [A1]
+3 0:01 | Edmonton, AB [D1]
+3 1:29 | Evansburg, AB [D1]
+3 2:52 | Edson, AB [D1]
+3 3:58 | Hinton, AB [D1]
+3 6:30 | Jasper, AB [A1]
+3 9:30 | Jasper, AB [D1]
+3 10:50 | Valemount, BC [D1]
+3 13:36 | Blue River, BC [D1]
+3 15:45 | Clearwater, BC [D1]
+3 18:28 | Kamloops North, BC [A1]
+3 19:03 | Kamloops North, BC [D1]
+3 20:49 | Ashcroft, BC [D1]
+4 0:06 | Boston Bar, BC [D1]
+4 0:53 | Chilliwack, BC [D1]
+4 2:48 | Hope, BC [D1]
+4 3:56 | Abbotsford, BC [D1]
+4 8:00 | Vancouver, BC [A1]
Route 1: Vancouver, BC - Toronto, ON
----------------------------------------------------------------
15:00 | Vancouver, BC [D2]
16:35 | Mission Harbour, BC [D2]
17:03 | Agassiz, BC [D2]
17:17 | Katz, BC [D2]
19:46 | North Bend, BC [D2]
22:32 | Ashcroft, BC [D2]
+1 0:17 | Kamloops North, BC [A2]
+1 0:52 | Kamloops North, BC [D2]
+1 2:58 | Clearwater, BC [D2]
+1 5:11 | Blue River, BC [D2]
+1 7:01 | Valemount, BC [D2]
+1 11:00 | Jasper, AB [A2]
+1 12:30 | Jasper, AB [D2]
+1 13:45 | Hinton, AB [D2]
+1 15:19 | Edson, AB [D2]
+1 16:28 | Evansburg, AB [D2]
+1 18:50 | Edmonton, AB [A2]
+1 19:50 | Edmonton, AB [D2]
+1 21:53 | Viking, AB [D2]
+2 0:14 | Wainwright, AB [D2]
+2 2:47 | Unity, SK [D2]
+2 4:21 | Biggar, SK [A2]
+2 4:31 | Biggar, SK [D2]
+2 6:57 | Saskatoon, SK [A2]
+2 7:57 | Saskatoon, SK [D2]
+2 9:26 | Watrous, SK [D2]
+2 13:47 | Melville, SK [A2]
+2 13:57 | Melville, SK [D2]
+2 17:22 | Rivers, MB [D2]
+2 19:15 | Portage la Prairie, MB [D2]
+2 22:00 | Winnipeg, MB [A2]
+2 23:30 | Winnipeg, MB [D2]
+3 0:37 | Elma, MB [D2]
+3 0:58 | Brereton Lake, MB [D2]
+3 1:16 | Ophir, MB [D2]
+3 1:21 | Winnitoba, MB [D2]
+3 1:35 | Rice Lake, ON [D2]
+3 1:38 | Copelands Landing, ON [D2]
+3 1:40 | Malachi, ON [D2]
+3 1:46 | Ottermere, ON [D2]
+3 2:03 | Minaki, ON [D2]
+3 2:29 | Redditt, ON [D2]
+3 2:46 | Farlane, ON [D2]
+3 3:23 | Canyon, ON [D2]
+3 3:51 | Red Lake Road, ON [D2]
+3 4:28 | Richan, ON [D2]
+3 6:01 | Sioux Lookout, ON [A2]
+3 6:51 | Sioux Lookout, ON [D2]
+3 8:14 | Savant Lake, ON [D2]
+3 8:31 | Flindt Landing, ON [D2]
+3 8:46 | Allanwater Bridge, ON [D2]
+3 10:26 | Collins, ON [D2]
+3 10:57 | Armstrong, ON [D2]
+3 11:29 | Mud River, ON [D2]
+3 11:37 | Ferland, ON [D2]
+3 12:14 | Auden, ON [D2]
+3 13:20 | Nakina, ON [D2]
+3 14:11 | Longlac, ON [D2]
+3 14:39 | Caramat, ON [D2]
+3 15:29 | Hillsport, ON [D2]
+3 17:44 | Hornepayne, ON [A2]
+3 18:39 | Hornepayne, ON [D2]
+3 19:30 | Oba, ON [D2]
+3 21:04 | Elsas, ON [D2]
+3 22:27 | Foleyet, ON [D2]
+4 0:02 | Gogama, ON [D2]
+4 0:35 | Westree, ON [D2]
+4 0:52 | Ruel, ON [D2]
+4 1:00 | Felix, ON [D2]
+4 1:20 | McKee's Camp, ON [D2]
+4 1:33 | Laforest, ON [D2]
+4 3:47 | Capreol, ON [A2]
+4 4:27 | Capreol, ON [D2]
+4 4:49 | Sudbury Jvt, ON [D2]
+4 8:42 | Perry Sound, ON [D2]
+4 10:59 | Washoga, ON [D2]
+4 14:29 | Toronto, ON [D2]

The «+4» part means four days later. Note that this is the opposite of what is used in the vehicles part, which uses «4+».

We can use the route ID 1 on the first one, and 2 on the return trip, by setting up separate routes for each direction:

File: railways/ViaRail-12b.setup## Networkplanner ##
route set 1 file:ViaRail-12.def interval:168h00 down:9h45 up:off
route set 2 file:ViaRail-12.def interval:168h00 down:off up:15h00
summary :raw
vehicles :days ViaRail-12b-vehicles.def

File: railways/ViaRail-12b-vehicles.def
=0000
1 D Toronto 60
2 U Vancouver 60

The summary (the raw version) will now use the correct train numbers, even if it
calls them «route» and not «train». Which may actually be correct, as there are
bound to be several of them en route *at the same time* when the full
timetable is in operation.

Daily departures look like this:

File: railways/ViaRail-12c.setup## Networkplanner ##
route set 1 file:ViaRail-12.def interval:24h00 down:9h45 up:off
route set 2 file:ViaRail-12.def interval:24h00 down:off up:15h00
summary :raw
vehicles :days ViaRail-12b-vehicles.def

The result, which tells us that this requires 9 trains:

0001 0002 0003 0004 0005 0006 0007 0008 0009
--------------------------------------------------------------------------------------
Toronto dep 0945 1+0945 2+0945 3+0945 4+0945 5+0945 6+0945 7+0945 8+0945
Vancouver arr 4+0800 5+0800 6+0800 7+0800 8+0800 9+0800 10+0800 11+0800 12+0800
Vancouver dep 4+1500 5+1500 6+1500 7+1500 8+1500 9+1500 10+1500 11+1500 12+1500
Toronto arr 8+1429 9+1429 10+1429 11+1429 12+1429 13+1429 14+1429 15+1429 16+1429
Toronto dep 9+0945 10+0945 11+0945 12+0945 13+0945 14+0945 15+0945 16+0945 17+0945
0000: Number of vehicles: 9
---------------------------------------
Total number of vehicles: 9

Every second day is just a matter of replacing the «24h00» with «48h00»:

File: railways/ViaRail-12d.setup## Networkplanner ##
route set 1 file:ViaRail-12.def interval:48h00 down:9h45 up:off
route set 2 file:ViaRail-12.def interval:48h00 down:off up:15h00
summary :raw
vehicles :days ViaRail-12b-vehicles.def

The result, which tells us that this requires 5 trains:

0001 0002 0003 0004 0005
------------------------------------------------------
Toronto dep 0945 2+0945 4+0945 6+0945 8+0945
Vancouver arr 4+0800 6+0800 8+0800 10+0800 12+0800
Vancouver dep 4+1500 6+1500 8+1500 10+1500 12+1500
Toronto arr 8+1429 10+1429 12+1429 14+1429 16+1429
Toronto dep 10+0945 12+0945 14+0945 16+0945 18+0945
0000: Number of vehicles: 5
---------------------------------------
Total number of vehicles: 5

The problem with trains every second day, from a passenger point of view, is that the train will depart on Monday, Wednesday, Friday and Sunday on week 1, and Tuesday, Thursday and Saturday on week 2. And which week is it now?

Departures every Monday, Wednesday and Friday (from Toronto) and Saturday (from Vancouver) will solve this problem:

The Saturday from Toronto (instead of Friday) is caused by the arrival of the Monday train from Vancouver after the departure time on Friday. So we need an extra day (or night). This is not a problem in Vancouver.

The route setup is incredible hard to get right. This is my «best effort» as of v.0.0.1, using a list of intervals:

File: railways/ViaRail-12e.setup## Networkplanner ##
route set 1 file:ViaRail-12.def interval:48h00;72h00;48h00 down:102h45 up:off
route set 2 file:ViaRail-12.def interval:48h00;72h00;48h00 down:off up:15h00
summary :raw
vehicles :days ViaRail-12b-vehicles.def

This is the result, which is wrong:

0001 0002 0003
--------------------------------------
Toronto dep 0645 2+0645 5+0645
Vancouver arr 4+0500 6+0500 9+0500
Vancouver dep 4+1500 6+1500 9+1500
Toronto arr 8+1429 10+1429 13+1429
Toronto dep 9+0645 11+0645 14+0645
0000: Number of vehicles: 3
---------------------------------------
Total number of vehicles: 3

Error #012 is not solved yet, but adding additional interval values (in this case just one suffices) is a workaround. (The problem is the way it uses the intervals to compute the required number of vehicles.)

File: railways/ViaRail-12f.setup```
## Networkplanner ##
route set 1 file:ViaRail-12.def interval:48h00;72h00;48h00;48h00 down:6h45 up:off
route set 2 file:ViaRail-12.def interval:72h00;48h00;48h00;48h00 down:off up:111h00
vehicles :days ViaRail-12b-vehicles.def
```

Note the location of the 72 hour interval value in the Up direction. Up front, as it is the first interval. Just as you would expect.

We get the correct result:

```
0001 0002 0003 0004
-------------------------------------------------
Toronto dep 0645 2+0645 5+0645 7+0645
Vancouver arr 4+0500 6+0500 9+0500 11+0500
Vancouver dep 4+1500 7+1500 9+1500 11+1500
Toronto arr 8+1429 11+1429 13+1429 15+1429
Toronto dep 9+0645 12+0645 14+0645 16+0645
0000: Number of vehicles: 4
---------------------------------------
Total number of vehicles: 4
```

Note that I have manually fixed the columns in the output, as the program does not handle tabulation of two-digit day values.

We can use the new «interval-up» and «interval-down» arguments and treat the route as a single route (as it is one in the first place):

File: railways/ViaRail-12g.setup```
## Networkplanner ##
route set 1 file:ViaRail-12.def interval-down:48h00;72h00;48h00;48h00 down:6h45 \
interval-up:72h00;48h00;48h00;48h00 up:111h00
vehicles :days ViaRail-12-vehicles.def
```

Note the use of `\`

as the last character
on a line, to tell the program to continue with the following line. This is available
for all input files, from [v.0.0.3], but is only useful in the Network setup files.

## Networkplanner ##
route set 1 file:ViaRail-12.def interval:48h00;72h00;48h00 down:6h45 up:off
route set 2 file:ViaRail-12.def interval:72h00;48h00;48h00 down:off up:111h00
vehicles :days ViaRail-12b-vehicles.def

The result:

0001 0002 0003 0004
----------------------------------------------
Toronto dep 0645 2+0645 5+0645 7+0645
Vancouver arr 4+0500 6+0500 9+0500 11+0500
Vancouver dep 4+1500 7+1500 9+1500 11+1500
Toronto arr 8+1429 11+1429 13+1429 15+1429
Toronto dep 9+0645 11+0645 14+0645 16+0645
0000: Number of vehicles: 4
---------------------------------------
Total number of vehicles: 4

[
Introduction |
Oslo Metro |
Oslo Tram |
Bergen |
**Misc.**
]

[
Misc. Intro |
Lisboa |
**Railways** |
Reindeer Expressed |
Intervals NEW
]