Even out the peak - better public transport (and less congestion from private vehicles) through spreading the load.There are two flights a day from London to Tirana each with 174 seats. The flight at 13:30 typically has 170 seats occupied, but the flight at 01:30 only carries a handful of passengers. Speak to almost anyone travelling the route and you'll hear that the flights are almost always full and complaints of not being able to get a seat and yet ... seat occupancy is only 50%.
Tell people to drive into Bath and they'll tell you it's always queuing all along London Road. No, actually it isn't ... any time from 7 p.m. to 7 a.m. the next morning you'll get straight through ... but there's no-one around to report on those empty roads.
Peak loadings - everyone wanting to travel at the same time. It's a nightmare of inefficient and extra costs. Here's an example of passenger flows on the railway from Corinium (a residential town of some 25,000 people, set in the Gloucsetershire Countryside) to Durocornovium (a major employment centre and interchange with a population of around 200,000).
Here are the inbound train services in the morning - using a single unit on a two hour 'cycle' but with a three hour gap in the middle of the day to allow for good peak arrivals and departures at Durocornovium for the 'classic' 8 hour working day
d Corinium 05:30 07:30 09:30 11:30 14:30 16:30 18:30 20:30 22:30
a Durocornovium 06:20 08:20 10:20 12:20 15:20 17:10 19:20 21:20 23:20
inwardbound 20 150 50 20 30 40 20 10 10
d Durocornovium 06:30 08:30 10:30 12:30 15:30 17:30 19:30 21:30 23:30
a Corinium 07:20 09:20 11:20 13:20 16:20 18:20 20:20 22:20 00:20
outwardbound 10 20 20 30 50 150 40 10 20
With all sorts of assumptions (see code below), we'll need a 5 car train for social distancing:
350 passenger, 1575 total capacity, 22.2% loading
150 largest load, 175 train capacity, 5 carriages
8666.67 GBP Operation cost = 24.76 GBP per passenger
Readers may be horrified at the 22.2% loading, but that's not such an untypical figure I understand.
The longer train and costs have to be provided for the 07:30 inbound and the 17:30 outbound.
What happens if we persuade 50 of the 150 who used to use the 07:30 onto the 05:30, 09:30 or even 11:30:@level_001 40 100 70 30 30 40 20 10 10
350 passenger, 945 total capacity, 37.0% loading
100 largest load, 105 train capacity, 3 carriages
7333.33 GBP Operation cost = 20.95 GBP per passenger
By levelling out the peak, you have saved 2 carriages and increased the loading from 22.2% to 37% - that's an improvement of 66%. Cost per passenger is now just 85% of what it was - not such a big saving, because you still have the same fixed staff costs.
Let's level that out much further - have people travel in all day to work:
@level_002 40 60 60 50 50 50 20 10 10
350 passenger, 630 total capacity, 55.6% loading
60 largest load, 70 train capacity, 2 carriages
6666.67 GBP Operation cost = 19.05 GBP per passenger
A further carriage saved, loading up from 22% to 55.6% - an improvement of no less that 150%. Cost per passenger now down to just 77% of what it was with the sort of peaks we were familiar with before shutdown and before we had considered the restart option with peaks evened out.
The train is running anyway - let's add 120 leisure passengers, but keep them off the busiest train:
@promo_base 20 150 80 50 40 60 40 20 10
470 passenger, 1575 total capacity, 29.8% loading
150 largest load, 175 train capacity, 5 carriages
8666.67 GBP Operation cost = 18.44 GBP per passenger
Still 5 carriages needed, but loading up from 22% to 29.8% - an improvement of 34%. And with the extra passenger speading the cost but not costing any more to carry (in previously unoccupied seats), cost per passenger is down from 24.76 to 18.44 - a reduction of just over 25%
As a final practical exercise, lets even out the peak a little and add leisure traffic:
@promo_001 40 100 100 60 40 60 40 20 10
470 passenger, 945 total capacity, 49.7% loading
100 largest load, 105 train capacity, 3 carriages
7333.33 GBP Operation cost = 15.60 GBP per passenger
3 carriages now - loading up from 22% to 49% - more than doubled - and cost per passenger down from 24.76 to 15.60 - that's just 63% of what it was before we started shaping our peak traffic and promoting off peak / leisure journeys.
The final two examples are pure theory ... figures for even loading - firstly if loadings went just over 3 carriages:
@ideal_spill 71 71 71 71 71 71 71 71 71
639 passenger, 945 total capacity, 67.6% loading
71 largest load, 105 train capacity, 3 carriages
7333.33 GBP Operation cost = 11.48 GBP per passenger
and railway Utopia, where every train is exactly full!:
@ideal_equal 70 70 70 70 70 70 70 70 70
630 passenger, 630 total capacity, 100.0% loading
70 largest load, 70 train capacity, 2 carriages
6666.67 GBP Operation cost = 10.58 GBP per passenger
Conclusion - Whether or not we need to space people out more in trains in the future, there are huge economic / financial gains to be made by persuading (carrot) or forcing (stick) people to spread out their journeys. That spreading out in unlikely to result in a totally even commuter traffic, and while the commuter traffic remains lumpy, there are further huge economic / financial gains to be made by promoting off peak rail travel to fill seats that would otherwise be emptyReaders may say I've taken a long post to come up with the bl**ding obvious ... but it's nice to see numbers.
* Clearly, similar patterns would need to be enacted on homework journeys
* If significant employment opportunities were to develop in Corinum, there is further scope for improving loading and reducing sosts per journey
* Other things to explore - overnight work / shift in Durocornovium and a 24 hour train service.
* Intermediate stations ... model also needs to consider them.
* Leisure passengers may travel in household groups and so the train capacity for them may be higher than with individual commuters.
Here is the complete Python program I used to generate those figures
data = """
d Durocornovium 06:30 08:30 10:30 12:30 15:30 17:30 19:30 21:30 23:30
a Corinium 07:20 09:20 11:20 13:20 16:20 18:20 20:20 22:20 00:20
*outwardbound 10 20 20 30 50 150 40 10 20
d Corinium 05:30 07:30 09:30 11:30 14:30 16:30 18:30 20:30 22:30
a Durocornovium 06:20 08:20 10:20 12:20 15:20 17:10 19:20 21:20 23:20
@inwardbound 20 150 50 20 30 40 20 10 10
@level_001 40 100 70 30 30 40 20 10 10
@level_002 40 60 60 50 50 50 20 10 10
@promo_base 20 150 80 50 40 60 40 20 10
@promo_001 40 100 100 60 40 60 40 20 10
@ideal_spill 71 71 71 71 71 71 71 71 71
@ideal_equal 70 70 70 70 70 70 70 70 70
"""
from math import ceil
# Capacity of each carriage
placesPerCarriage = 35
# stated: "staff, stock hire, and NR» fees 1/3 1/3, 1/3"
# Clearly simplified - lets say that works for a 4 coach train
staffcost = 4
nrcharge = 4
# Cost multiplier - a guess, but it applies equally across the board, so whilst the
# final results are a guess, they will be pretty much in proportion
elevator = 2000
# Analyse each "@" marked set of passenger counts
for record in data.split("\n"):
values = record.strip().split("\t")
try:
if values[0][0] != "@":
continue
except:
continue
print()
print(record)
# Count all the trains, find the highest load
passengertotal = 0
services = 0
maxpassengers = 0
for item in values[1:]:
passengertotal += int(item)
services += 1
if int(item) > maxpassengers: maxpassengers = int(item)
carriages = ceil(maxpassengers / placesPerCarriage)
capacity = services * carriages * placesPerCarriage
loading = passengertotal / capacity
cost = elevator * (staffcost / 3 + carriages / 3 + nrcharge / 3)
print("{} passenger, {} total capacity, {:.1f}% loading".format(passengertotal,capacity,loading*100))
print("{} largest load, {} train capacity, {} carriages".format(maxpassengers,carriages * placesPerCarriage, carriages))
print("{:.2f} GBP Operation cost = {:.2f} GBP per passenger".format(cost,cost/passengertotal))