Bunching, or why the buses all come at once

Have you ever been waiting way too long for a bus on a major line and then out of nowhere two or three buses come by one after another? Inevitably,  the one you get on is completely stuffed with people. “What the hell is SORTA up to??” you wonder.

The drivers aren’t just being ridiculous. In fact, this behaviour of buses can be explained by statistics and a little algebra. And it’s really hard to avoid in a transit system set up the way ours is.

On transit lines that are frequent enough that people don’t tend to look at schedules, people will arrive at their stops in a fairly steady, predictable way. We have a few such routes, a fuzzy distinction to be sure, but including the main corridors of the 33, 17/19, 43, and 4 at least.

main Cincinnati transit corridors

Main transit corridors in Cincinnati.

Since people won’t try to arrive at any particular time because of the schedule, and because there are a lot of people, their arrivals are more or less random and can reasonably be predicted for any given stop in similar circumstances.

Let’s say that stops along line X accumulate on average 1 person each minute. Let’s also say that during the day, a bus will come by every 10 minutes, and that it takes 7 seconds for each person to board. They have to line up single file, pay the fare, then move to their seat. In our hypothetical world, this bus will come by a given stop every ten minutes, spend 70 seconds loading 10 passengers and then move along to the next stop where it will do the same and so on. It will spend 20 seconds travelling between each stop.

What happens if one bus is delayed by just one minute?

A single bus gets delayed by one minute between stops; say a squirrel was in the way. When it arrives at it’s next stop 11 minutes will have elapsed since the last bus came by and there are likely to be 11 people waiting at the stop. The bus will spend 77 seconds loading these passengers before moving on. When it gets to the next stop, it is now one minute and seven seconds late and has 11.0833 (in reality, 11 or sometimes 12) passengers to board, taking 77.82 seconds, putting it then one minute and 14.82 seconds behind. Remember that while this is happening, the bus immediately before it has not slowed down. It’s still on schedule, picking up it’s average ten people per stop and taking the expected time to do so.

As our hypothetical late bus progresses, needing to board more passengers than normal and taking longer than the normal 70 seconds to do so, the the gap between it and the bus ahead of it is slowly widening. This delay grows logarithmicly; the further behind the bus gets the longer it has to take to board passengers at each stop since each stop has had more time to accumulate passengers in the interval.

The first bus in a bunching scenario, stop by stop.

The first bus in a bunching scenario, stop by stop.

And here’s the math(in PHP) in case anyone is interested:


$time_between_stops = 20; // time between stops in seconds
$initial_span = 600; // time between buses in seconds
$delay = 60; // initial delay in seconds
$board = 7; // boarding time of passengers
$pass = 1/60; // passengers per second at each stop
$time_elapsed = 0; // total time from start
$span = $initial_span - 60;
while($span > 0){ // IE, the bus behind moving at scheduled speed hasn't caught up yet
$stops++;
$passengers_at_stop = ($initial_span + $delay) * $pass;
$additional_delay = ($passengers_at_stop * $board) - ($initial_span *   $pass * $board);
$delay += $additional_delay;
$time_elapsed += $delay + $time_between_stops;
$span -= $additional_delay;
}

Meanwhile, if the bus behind our late bus isn’t careful, it will speed up once it passes the squirrel-point. The nearest stop, as the squirrel will observe, is likely to have 9 passengers, taking only 63 seconds boarding time.

The time between it and the late bus decreases, such that once it has caught up to the point at which the first bus became late it will be picking up less and less people and spending less time dwelling at a stop while people pay fare and find their seats.

How a squirrel delaying a bus for one minute can stop all buses forever

A one minute delay can hypothetically lead to infinite delay for all buses some distance after the point of initial delay.

The above chart shows the impact of a bus delayed by one minute on an infinitely long line with buses coming every ten minutes forever. It’s assumed that buses can’t pass and thus the first bus will dictate the speed of all. The chart doesn’t take into account the possibility for coordinated efforts of buses running the exact same route to pass one another and individually skip stops, such coordinated action as would be needed to avoid eventually infinite delay. But as all of our high-frequency trunk lines spread out into sub-routes once they get further from Downtown, such coordination would only even be theoretically possible in one direction anyway!

There are a few things we can do about vehicle bunching.

Drunk Squirrel

Go home, squirrel. You’re drunk.

This isn’t necessarily as hard as it sounds. Squirrels aside, things like putting transit underground, or letting it bypass stop-lights can go quite a long way toward avoiding random delays.

Posted in: Back to Basics | Math | Technology Choices
Tags: | | | | | | | |

Comments

Leave a Comment


nine − = eight