[
  Introduction |
  Oslo Metro |
  Oslo Tram |
  Bergen |
  Misc.
]
[
  Misc. Intro |
  Lisboa |
  Railways |
  Reindeer Expressed |
  Intervals NEW
]
The changes in v.0.0.3 (#001 vehicle code using the intervals + #007 individual intervals in each direction) opens up new possibilities - and some problems.
Consider this simplistic route network:
  
Routes 1 and 2 are combined at «Southwest», with the vehicles running through the stop after a short layover.
The three routes are defined like this, with the main stops only:
File: intervals/01.def
#
# 1 Southwest - North
# -------------------------------------
#
AA001 A    B:10 Southwest
AA002 B:10 A:10 South
AA003 C:10 D:10 Central
AA004 A:10 B    North
    
File: intervals/02.def
#
# 2 Southwest - East
# -------------------------------------
#
AA001 B    A:10 Southwest
AA005 B:10 A:10 West
AA003 A:10 B:10 Central
AA006 A:10 B    East
File: intervals/03.def
#
# 3 Northwest - East
# -------------------------------------
#
AA007 A    B:15 Northwest
AA005 A:15 B:10 West
AA003 A:10 B:10 Central
AA006 A:10 B    East
Then the network setup file, with 15 a minute interval on route 1 and 2, and 30 minutes on route 3:
File: intervals/simple.setup
## Networkplanner ##
route set 1 file:01.def interval:15 down:2
route set 2 file:02.def interval:15 down:2
route set 3 file:03.def interval:30 down:2 up:13
tp :tabulated Central
vehicles vehicles.def
The vehicles definition file, with rute 1 and 2 combined:
file: intervals/vehicles.def
=1000
1 U North/1;North          10
2 D Southwest/2;Southwest  2
2 U East/2;East            10
1 D Southwest/1;Southwest  2
=3000
3 D Northwest 10
3 U East      10
The output:
Central [A]
07 22 -- 37 52 -- | 2 East
-- -- 27 -- -- 57 | 3 East
Central [B]
10 -- 25 40 -- 55 | 2 Southwest
-- 23 -- -- 53 -- | 3 Northwest
Central [C]
07 22 37 52 | 1 North
Central [D]
10 25 40 55 | 1 Southwest
                  1001  1002  1003  1004  1005  1006  1007  1008  1009  1010
----------------------------------------------------------------------------
North/1     dep   0000  0015  0030  0045  0100  0115  0130  0145  0200  0215 
Southwest   arr   0030  0045  0100  0115  0130  0145  0200  0215  0230  0245 
Southwest/2 dep   0032  0047  0102  0117  0132  0147  0202  0217  0232  0247 
East        arr   0102  0117  0132  0147  0202  0217  0232  0247  0302  0317 
East/2      dep   0115  0130  0145  0200  0215  0230  0245  0300  0315  0330 
Southwest   arr   0145  0200  0215  0230  0245  0300  0315  0330  0345  0400 
Southwest/1 dep   0147  0202  0217  0232  0247  0302  0317  0332  0347  0402 
North       arr   0217  0232  0247  0302  0317  0332  0347  0402  0417  0432 
North/1     dep   0230  0245  0300  0315  0330  0345  0400  0415  0430  0445 
                3001  3002  3003  3004
--------------------------------------
Northwest dep   0002  0032  0102  0132 
East      arr   0037  0107  0137  0207 
East      dep   0113  0143  0213  0243 
Northwest arr   0148  0218  0248  0318 
Northwest dep   0202  0232  0302  0332 
1000: Number of vehicles: 10
3000: Number of vehicles: 4
---------------------------------------
Total number of vehicles: 14
It would be nice to have en even interval between the vehicles on the shared east - west section (West - Central - East). The different intervals on the routes (2 and 3) makes this challenging, as shown above. And I have not tried that hard.
Let us adjust the intervals on route 2, from «15» (or «15+15») to «10+20», to make a slot for route 3:
File: intervals/skewed.def
## Networkplanner ##
route set 1 file:01.def interval:15    down:2
route set 2 file:02.def interval:10;20 down:2
route set 3 file:03.def interval:30    down:17 up:20
tp :tabulated Central
vehicles vehicles.def
The timingpoints for the east - west section show that we got it right, with an even 10 minute combined interval:
Central [A]
02 -- 22 32 -- 52 | 2 East
-- 12 -- -- 42 -- | 3 East
Central [B]
-- 10 20 -- 40 50 | 2 Southwest
00 -- -- 30 -- -- | 3 Northwest
Central [C]
07 22 37 52 | 1 North
Central [D]
10 25 40 55 | 1 Southwest
The vehicle part is not so good, as it has an error:
                  1001  1002  1003  1004  1005  1006  1007  1008  1009  1010  1011
----------------------------------------------------------------------------------
North/1     dep   0000  0015  0030  0045  0100  0115  0130  0145  0200  0215  0230 
Southwest   arr   0030  0045  0100  0115  0130  0145  0200  0215  0230  0245  0300 
Southwest/2 dep   0032  0042  0102  0112  0132  0142  0202  0212  0232  0242  0302 
East        arr   0102  0112  0132  0142  0202  0212  0232  0242  0302  0312  0332 
East/2      dep   0130  0140  0200  0210  0230  0240  0300  0310  0330  0340  0400 
Southwest   arr   0200  0210  0230  0240  0300  0310  0330  0340  0400  0410  0430 
Southwest/1 dep   0202  0217  0232  0247  0302  0317  0332  0347  0402  0417  0432 
North       arr   0232  0247  0302  0317  0332  0347  0402  0417  0432  0447  0502 
North/1     dep   0245  0300  0315  0330  0345  0400  0415  0430  0445  0500  0515 
                3001  3002  3003  3004
--------------------------------------
Northwest dep   0017  0047  0117  0147 
East      arr   0052  0122  0152  0222 
East      dep   0120  0150  0220  0250 
Northwest arr   0155  0225  0255  0325 
Northwest dep   0217  0247  0317  0347 
1000: Number of vehicles: 11
3000: Number of vehicles: 4
---------------------------------------
Total number of vehicles: 15
  The marked departures are 3 minutes before arrival, which is impossible. The problem
  is the multiple interval (10;20), as the program does not take them into
  account when dispatching vehicles. This is a bug (#015). The workaround is to swap
  them around (20;10) so that this does not happen:
## Networkplanner ##
route set 1 file:01.def interval:15    down:2
route set 2 file:02.def interval:20;10 down:2
route set 3 file:03.def interval:30    down:7 up:10
tp :tabulated Central
vehicles vehicles.def
Note that I had to adjust the departures on route 3, as the route 2 depatures has been shifted 10 minutes. (I could have adjusted the «up» and down values for route 2 instead.)
Central [A]
-- 12 22 -- 42 52 | 2 East
02 -- -- 32 -- -- | 3 East
Central [B]
00 10 -- 30 40 -- | 2 Southwest
-- -- 20 -- -- 50 | 3 Northwest
Central [C]
07 22 37 52 | 1 North
Central [D]
10 25 40 55 | 1 Southwest
                  1001  1002  1003  1004  1005  1006  1007  1008  1009  1010  1011
----------------------------------------------------------------------------------
North/1     dep   0000  0015  0030  0045  0100  0115  0130  0145  0200  0215  0230 
Southwest   arr   0030  0045  0100  0115  0130  0145  0200  0215  0230  0245  0300 
Southwest/2 dep   0032  0052  0102  0122  0132  0152  0202  0222  0232  0252  0302 
East        arr   0102  0122  0132  0152  0202  0222  0232  0252  0302  0322  0332 
East/2      dep   0120  0140  0150  0210  0220  0240  0250  0310  0320  0340  0350 
Southwest   arr   0150  0210  0220  0240  0250  0310  0320  0340  0350  0410  0420 
Southwest/1 dep   0202  0217  0232  0247  0302  0317  0332  0347  0402  0417  0432 
North       arr   0232  0247  0302  0317  0332  0347  0402  0417  0432  0447  0502 
North/1     dep   0245  0300  0315  0330  0345  0400  0415  0430  0445  0500  0515 
                3001  3002  3003  3004
--------------------------------------
Northwest dep   0007  0037  0107  0137 
East      arr   0042  0112  0142  0212 
East      dep   0110  0140  0210  0240 
Northwest arr   0145  0215  0245  0315 
Northwest dep   0207  0237  0307  0337 
1000: Number of vehicles: 11
3000: Number of vehicles: 4
---------------------------------------
Total number of vehicles: 15
Note that this network requires 1 vehicle more than the original one. If you are a public transportation undertaking, you may not see the value (for you) of the increased cost. But the passengers on the east- west route get a better interval.
Feel free to have a go at reducing the number of vehicles by 1, by tweaking the parameters.
You may have seen this approach before, with routes 12 and 28 of the Lisboa tram network.
File: intervals/complicated.def
## Networkplanner ##
route set 1  file:01.def interval:30 down:17
route set 2  file:02.def interval:30 down:7  up:10
route set 3  file:03.def interval:30 down:22 up:20
route set 1a file:01.def interval:30 down:2  up:15
route set 2a file:02.def interval:30 down:17
tp :tabulated :merge[1;1a] :merge[2;2a] Central
vehicles vehicles-complicated.def
The support for multiple «:merge» arguments was added in v.0.0.3.
File: intervals/vehicles-complicated.def
=1000
1a U North/1;North          10
2a D Southwest/2;Southwest  2
2a U East/2;East            10
1a D Southwest/1;Southwest  2
=3000
1 U North/1;North          10
2 D Southwest/2;Southwest  2
3 U East/3;East            10
3 D Northwest/3;Northwest  10
2 U East/2;East            10
1 D Southwest/1;Southwest  2
The output:
Central [A]
07 -- 27 37 -- 57 | 2 East
-- 17 -- -- 47 -- | 3 East
Central [B]
-- 10 20 -- 40 50 | 2 Southwest
00 -- -- 30 -- -- | 3 Northwest
Central [C]
07 22 37 52 | 1 North
Central [D]
10 25 40 55 | 1 Southwest
                  1001  1002  1003  1004  1005
----------------------------------------------
North/1     dep   0015  0045  0115  0145  0215 
Southwest   arr   0045  0115  0145  0215  0245 
Southwest/2 dep   0047  0117  0147  0217  0247 
East        arr   0117  0147  0217  0247  0317 
East/2      dep   0130  0200  0230  0300  0330 
Southwest   arr   0200  0230  0300  0330  0400 
Southwest/1 dep   0202  0232  0302  0332  0402 
North       arr   0232  0302  0332  0402  0432 
North/1     dep   0245  0315  0345  0415  0445 
                  3001  3002  3003  3004  3005  3006  3007  3008  3009
----------------------------------------------------------------------
North/1     dep   0000  0030  0100  0130  0200  0230  0300  0330  0400 
Southwest   arr   0030  0100  0130  0200  0230  0300  0330  0400  0430 
Southwest/2 dep   0037  0107  0137  0207  0237  0307  0337  0407  0437 
East        arr   0107  0137  0207  0237  0307  0337  0407  0437  0507 
East/3      dep   0120  0150  0220  0250  0320  0350  0420  0450  0520 
Northwest   arr   0155  0225  0255  0325  0355  0425  0455  0525  0555 
Northwest/3 dep   0222  0252  0322  0352  0422  0452  0522  0552  0622 
East        arr   0257  0327  0357  0427  0457  0527  0557  0627  0657 
East/2      dep   0310  0340  0410  0440  0510  0540  0610  0640  0710 
Southwest   arr   0340  0410  0440  0510  0540  0610  0640  0710  0740 
Southwest/1 dep   0347  0417  0447  0517  0547  0617  0647  0717  0747 
North       arr   0417  0447  0517  0547  0617  0647  0717  0747  0817 
North/1     dep   0430  0500  0530  0600  0630  0700  0730  0800  0830 
1000: Number of vehicles: 5
3000: Number of vehicles: 9
---------------------------------------
Total number of vehicles: 14
It may look impressive (and indeed it was quite a job to get it right), but the result is network that is a nightmare to operate. Whenever something happens (as e.g. a derailment at Northwest on route 3), all three routes will be affected. The result, from a passenger perspective, will be delayed and/or missing departures on the entire network.
## Networkplanner ##
route set 1  file:01.def interval:30 down:17
route set 2  file:02.def interval:30 down:7  up:10
route set 3  file:03.def interval:20 down:22 up:20
route set 1a file:01.def interval:30 down:2  up:15
route set 2a file:02.def interval:30 down:17
tp :tabulated :merge[1;1a] :merge[2;2a] Central
vehicles vehicles-complicated.def
The result, with an error message instead of the 3000-series:
Central [A]
07 27 37 -- 57 | 2 East
07 27 -- 47 -- | 3 East
Central [B]
10 20 -- 40 50 | 2 Southwest
10 -- 30 -- 50 | 3 Northwest
Central [C]
07 22 37 52 | 1 North
Central [D]
10 25 40 55 | 1 Southwest
The sections do not have the same accumulated intervals
                  1001  1002  1003  1004  1005
----------------------------------------------
North/1     dep   0015  0045  0115  0145  0215 
Southwest   arr   0045  0115  0145  0215  0245 
Southwest/2 dep   0047  0117  0147  0217  0247 
East        arr   0117  0147  0217  0247  0317 
East/2      dep   0130  0200  0230  0300  0330 
Southwest   arr   0200  0230  0300  0330  0400 
Southwest/1 dep   0202  0232  0302  0332  0402 
North       arr   0232  0302  0332  0402  0432 
North/1     dep   0245  0315  0345  0415  0445 
1000: Number of vehicles: 5
---------------------------------------
Total number of vehicles: 5
[
  Introduction |
  Oslo Metro |
  Oslo Tram |
  Bergen |
  Misc.
]
[
  Misc. Intro |
  Lisboa |
  Railways |
  Reindeer Expressed |
  Intervals NEW
]