The transit trilemma
The fundamental trade off all railways face
Thank you to Matthew Bornhoult for introducing me to this way of framing the problem.
In macroeconomics, there is a concept called the impossible trinity. It is impossible for a country to have all three of a fixed foreign exchange rate, an absence of capital controls, and an independent monetary policy. You can pick two, but not all three.1
There is a similar concept in transit. A railway line can pick two of frequent services, reliable operations where the trains run to the timetable, and complex service patterns – expresses, branching and sharing tracks with other services. I’ve alluded to this concept on several occasions, but it is fundamental enough that it deserves its own blogpost.
Edit: In response to one of the comments, I should explain why complexity can be a good thing. I think that expresses are self-evidently useful. Track-sharing with freight and intercity trains is good because it lowers construction costs. And complicated branching can be useful for passengers: I used to live on the Northern Line, and it was really useful to be able to get a direct train to either the City or the West End. All else being equal direct trains are preferable. But this passenger convenience comes with a trade off, which is what this post is all about.
The trilemma explained
Anybody who has got the Victoria Line at rush hour will have witnessed a train leaving the platform, and another coming onto the platform only 30 seconds later, almost like a conveyor belt. The Victoria Line runs 36 trains per hour (tph); some transit lines like Line 14 of the Paris Métro get up to 40 tph.
This is what happens when you have a very simple service pattern. On both the Victoria Line and Line 14, every train stops at every station (and they also take the same amount of time to travel between the stations). The only limit to frequency is imposed by the signalling system, which means that in practice you can have a train every 90 seconds (or 100 seconds on the Victoria Line) and both lines are reliable.
The Victoria line therefore chooses frequency and reliability, but trades off complexity. Every train stopping at every station2 is the simplest service pattern possible.
What happens, however, if we introduce some complexity? Suppose we want to have a branch. The diagram below shows a flat junction: the line branches off, but the branch line crosses over the main line on the same plane. This means that trains from B to A have to cross the path of those running from A to C, and vice versa.
Maintaining 2-minute intervals between trains (Paris Line 14 is exceptional for its 90 second headways), in theory we can operate the junction like this. By repeating this pattern like this, these parallel moves enable us to get 30 tph through the junction.
But there is an obvious problem – the entire dance has to be co-ordinated perfectly in order to work. If one of the trains is delayed, then everything else will have to wait for it. Frequency combined with complexity mean that reliability suffers.
Likewise, consider what happens if we add an express service (red) that only stops at the important stations, on the same tracks as some stopping trains (blue). We are again maintaining a 2-minute spacing between trains, which is shown in the lighter shading.
This service pattern works – so long as nothing goes wrong. If the 11.01 stopping train is delayed at Station 9, it will delay the 11.09 express. We have once more traded off reliability in favour of frequency and complexity.
Exactly the same logic applies if we have intercity or freight trains on the same tracks, or if we are using a tram-train which shares space with road traffic. A final form of complexity is joining and splitting trains, so that one train can serve two destinations – but the more trains we try to run in this way, the more instability we introduce into the timetable.
For the third option, suppose we want to run a reliable, complex service. The only way to do that is to ensure that the services do not run too often. Continuing with the example above, if we trim the blue service down to quarter-hourly, then the timetable will be more robust, with fewer chances of delays:
To be clear, all of this is assuming competence. Deutsche Bahn and the New York City Subway both show that it is possible to have complex services, which are neither frequent, nor reliable. In both cases, the root cause of the poor reliability is under-investment, which is exacerbated by the complex service patterns they try to run.
Which limb to trade off?
Given that we have to trade off one of these three desiderata, which is it to be?
It is almost always a bad idea to trade off reliability. For one, it has enormous salience with the travelling public, who view an hour’s traffic jam on the motorway as a fact of life, but start tutting as soon as a train is two minutes late. The existence of the urban myth about Mussolini – ‘say what you like about him, but at least he made the trains run on time’3 – shows just how much value is placed by the public on reliable trains.
Poor reliability is also really bad for the railway. Small delays are not in themselves especially problematic – but they can easily snowball. When delays mount up, they turn into cancellations. Cancelled trains mean that rolling stock and crew members are in the wrong places, which means more delays, and more cancellations. If a train is cancelled, the railway has to pay compensation, and the train after the cancelled one is often overcrowded. Passengers with the option are less likely to travel by train.
Deciding whether to trade off frequency or complexity is a harder question.
When it comes to urban services, more frequent is almost always better. This is partly because frequency means capacity, but also because the time spent waiting for the next train is a bigger fraction of the overall trip time. Suppose you have a 15-minute service, so a passenger has to wait an average of 7.5 minutes for a train. That extends a 60-minute journey by 12.5%, but a 15-minute urban journey by 50%.
The flip-side is that long waiting times matter less on long-distance services: frequency may still be necessary for capacity, but it’s not as necessary to attract passengers.
Complexity can also be a virtue on a long-distance network. A Swiss-style long-distance network, which is built around good connections, necessitates a degree of complexity. In Switzerland there are two kinds of service that run between the big cities. Simplifying slightly, the Intercity services run nonstop, and the Interregio trains serve medium-sized places, connecting with the Intercitys at the main stations. These different categories of train run on the same tracks, increasing complexity – but it’s worth it, for the connectivity benefits.

Similarly, the Dutch network is quite complicated. It is designed so that very nearly every major town gets a direct train to all of Amsterdam, The Hague, Rotterdam, Utrecht, and Schipol Airport. (The map below shows the whole of the Dutch network, not just the long-distance trains, but I have included it because it’s a nice piece of information design).

In other words, the trade off between frequency and complexity depends on the use case. Urban lines should lean towards frequency, while more complexity is permissible on longer-distance services, although not all – the Shinkansen between Tōkyō and Ōsaka has to prioritise frequency, because there is so much demand for travel.
Reducing complexity
Assuming that reliability is non-negotiable, the trilemma reduces to a dilemma: to what extent do we prioritise frequency versus complexity? Reducing frequency is easy – run the trains less often. There are, on the other hand, several ways to reduce complexity.
Padding. The bad way to do this is to pad out the timetable excessively. A degree of padding is good, because it gives time to recover from small delays – Switzerland pads by 7%, i.e. 1 minute in 15. Padding reduces complexity by making the speed of the fast trains more similar to that of the slow trains, so an express is less likely to get stuck behind a stopper. Deutsche Bahn, thanks to its inability to run trains on time, pads by 25%: in other words, a journey that could be done in four hours is scheduled to take five, which is obviously very bad for passengers.
Simplicity. The most obvious good way to reduce complexity that is to reduce the number of possible service patterns. There are, for instance, thirteen separate service patterns on the line between New York City and New Haven, CT. Reducing this to two – one express, one local – would enable faster journeys, because it would reduce the need for padding, enable better frequency, and more reliability.
Removing branching. One option is to remove the branching. This diagram shows the Hanshin Main Line, a commuter line in Japan between Ōsaka and Kōbe. The branch to Mukogawadanichimae no longer has a direct service to either city: that would make the service pattern too complicated.

Passengers obviously like direct services, so this can be hard to accomplish. Direct services need to be compensated with good, quick connections, preferably at higher frequencies than the old direct trains.
On the other hand, sometimes branching is useful. The Hanshin Main Line branches at Amagasaki, with one route going to Umeda, near Ōsaka’s main station, and the other one going to Namba, Ōsaka’s historic central business district. This is good for travellers, who can get a train to both. It is all about deciding what to trade off, and where.
Removing expresses. Likewise, it is possible to remove express services. The obvious trade off is journey times, but this can be deceptive: given that having fewer express services enables more trains, the shortened waiting times might mean that there is no change to the average journey time.
Grade separation, which means that one of the lines of a junction passes over or under the other, so that trains no longer cross each other’s paths. In the diagram below, the line from A to C is tunnelled under the line from B to A. We no longer have to worry about the delicate sequence of parallel moves: a late train from B to A can no longer delay one from A to C.
Passing loops – short stretches of four-tracking so that express services can overtake local ones. On commuter routes like the Elizabeth Line, which only have two tracks to play with but which run quite long distances, passing loops are a good way of ensuring faster, more reliable services – and they increase capacity as well.
This trilemma is fundamental to railway planning. Unfortunately, passengers want everything – trains that run like clockwork, services so frequent you never need to look at a timetable, and expresses and direct trains into the bargain. That is impossible. The task of the railway is to make the trade off in the best way that it can.
Today, Britain foregoes a fixed exchange rate in order to have free-flowing capital and an independent monetary policy but it was not always so: in the Bretton Woods era, we chose to impose capital controls, so we could have the other two limbs of the trilemma.
This isn’t quite true, as some trains terminate at at Seven Sisters, but it is close enough.
He did not. He did, however, build Milano Centrale Station, which is gorgeous.







AKA the Engineer’s Trilemma: you can have it high quality, you can have it quickly, you can have it priced reasonably; pick two.
Great article on something I hadn’t thought much about before!