Hacker News new | past | comments | ask | show | jobs | submit login
Why Do Buses Bunch? (setosa.io)
310 points by elliekelly 46 days ago | hide | past | web | favorite | 150 comments

I enjoyed the callout to this when I was reading Google's Percolator paper a few years ago:

> The random-scanning approach requires one additional tweak: when it was first deployed we noticed that scanning threads would tend to clump together in a few regions of the table, effectively reducing the parallelism of the scan. This phenomenon is commonly seen in public transportation systems where it is known as “platooning” or “bus clumping” and occurs when a bus is slowed down (perhaps by traffic or slow loading). Since the number of passengers at each stop grows with time, loading delays become even worse, further slowing the bus. Simultaneously, any bus behind the slow bus speeds up as it needs to load fewer passengers at each stop. The result is a clump of buses arriving simultaneously at a stop [19]. Our scanning threads behaved analogously: a thread that was running observers slowed down while threads “behind” it quickly skipped past the now-clean rows to clump with the lead thread and failed to pass the lead thread because the clump of threads overloaded tablet servers. To solve this problem, we modified our system in a way that public transportation systems cannot: when a scanning thread discovers that it is scanning the same row as another thread, it chooses a new random location in the table to scan. To further the transportation analogy, the buses (scanner threads) in our city avoid clumping by teleporting themselves to a random stop (location in the table) if they get too close to the bus in front of them.

From here: https://ai.google/research/pubs/pub36726

> To further the transportation analogy, the buses (scanner threads) in our city avoid clumping by teleporting themselves to a random stop (location in the table) if they get too close to the bus in front of them.

Subway trains do this "to regulate service" iirc is the term used on the London Underground.

Takt time[1]and Drum Buffer Rope[2]both related concepts of regulating flow through a process/system.

[1] https://en.m.wikipedia.org/wiki/Takt_time

[2] https://en.m.wikipedia.org/wiki/Theory_of_constraints

I don't really understand why they don't "teleport". There are additional ways to get to a point ahead of a slowed down train with a replacement train, right? When you see one is dragged down too much and starts clogging, introduce a new train in front that jumps in at an expected schedule, then slowly empty the old train and take it out of the loop when its empty.

I haven't seen that but I'm not sure why its not done. I don#t think it will be more expensive in the long run than increasing slack. And the service experience and maintenance level is increased drastically.

London subway trains teleport themselves?

No they don't. When you hear "to regulate the service" what they actually do in my experience is delay trains to try and introduce a more even service.

So if you have trains that are:


Then they will delay some of the trains such that it becomes:


i.e. reduce the speed of the lead trains to try and reduce bunching.

So generally if you hear "to regulate the service" it means you're in for a longer journey than normal.

I believe there are passing points along the tracks, I don't think they can be used to leapfrog, and there's no such thing as "express" services.

I've often felt that maybe the front bus should skip a few stops, but unfortunately, the fuller a bus is, the bigger the chance that someone has to get out at every stop, and that means people are going to get in at every stop too.

Maybe the empty rear bus should overtake the front bus, but that's not always possible.

Teleporting to a random stop would be really annoying for people who had to get out at the next stop. That's only an acceptable solution when the bus is completely empty.

When I was growing up in Calgary when buses bunched the lead bus would linger at a stop specifically so the other buses could pass and even out the ridership.

The transit system even employed this on purpose at busy times since Calgary is such a suburban city. It's fairly rare in the morning for people to need to get off until a major intersection or light rail station. Buses were sent in pairs (sometimes three) to run the same route, leapfrogging each other at every stop. If someone did ask for a stop the driver would radio ahead and the lead bus would skip the stop. Taking the bus route at a leapfrog time really did cut the journey time down significantly. The technique doesn't work quite as well coming home since you can't predict when people will need to get off.

This happens with the subway in NYC all of the time - a very crowded train will announce that it's running express to X stop...a thousand people get off and onto the next one to continue on.

It's quite annoying when it's you that has to get off and wait, again, haha, but appears to be the right move for the system

Lothian buses regulate as well, but only to maintain published timetables (if a bus is running fast, it will sit at a stop until it's back on schedule)

The usual clumping is multiple buses on separate routes arriving at one, since they enforce strict stacking (can disembark in the approach to the stop but can only embark passengers at the stop sign)

There are express services but only on the metropolitan line (which uses above ground tracks shared with non-TFL trains).

Ah, you learn something new every day!


This also happened with routing messages - they are periodic and start at random offsets but they bunch up without added randomness https://ee.lbl.gov/papers/sync_94.pdf

This is possible with public transportation too. Trains run express and skip stops all the time.

I think that would be too much hassle with buses but it's possible.

I have seen full or near-full buses skip scheduled stops to alleviate this. Although from a waiting passenger's POV, having an already delayed bus that has space left zoom past you without stopping is pretty infuriating...!

Perhaps the bus that caught up to the full bus should pass it, and relieve the next stop - presumably there are extra passengers waiting at that one too, since the bus is late.

This way the bus that caught up will now risk slowing down (dealing with fuller stops), but the original full bus that was slow is likely to not speed up that much, having an above-average number of potentially disembarking passengers.

This is what CTA buses in Chicago do, though the full bus doesn't slow down. They end up leapfrogging down the route.

Yeah, the correct customer service solution is to have the full bus HOLD at a stop and let the emptier bus leave first (and stay ahead).

That delays all people who are already on the delayed bus even more.

Not necessarily. If the full bus stays in front, then there will be lots of people waiting at every future stop, trying to get on the full bus, taking ages to do so.

If the full bus lets the empty bus pass, then all the people waiting at the next stop can get into the empty bus. When the full bus arrives at the next stop, right behind the formerly empty bus, nobody needs to get on, only people need to get off, so they don't need to stop as long at the next stop.

Or at least the bus gets a little less crowded. Being able to sit in the delayed bus is also worth something.

Buses in my town back in the 2000's would just turn off their signs when they were doing this.

It probably be not too much of you had two way communication with the bus. One can leapfrog the one in front, alleviate the front bus, and everyone's faster. However it probably has limits ie when a passenger on the passing bus wants to stop at the same place as the slow bus next stop.

TL;DR - Teleportation will solve public transit problems.

Except for all those poor people that are still in the bus when it teleports :P

then again, if you have teleportation, you probably do not need the bus in the first place (did I just explain the joke?).

if teleportation is impractical you could just use a faster bus, like USB 3.0 or more lanes like PCIe

everybody gets on/off at the same time instead of one by one (every seat has it's own door?)

On old British rail trains, commuter trains had many doors, I think on each side there was a door for each pair of row of seats?

There was also no door lock, so people could start leaving the train before it fully stopped.

The lack of a door lock is also why they're not used anymore.

Would it help to have the trailing bus pass the leading bus when they bunch up?

My reasoning:

(1) As the article said, full buses move slower because more passengers means more boarding/unboarding time at stops.

(2) The lead bus is the fuller, slower one. Slower bus in front means buses get closer together.

(3) If one bus passes the other, then you have the faster bus in front and the slower one behind. They should then get further apart.

At least they should for a time. The now-leading bus is going to scoop up a lot of passengers at the next several stops and the now-trailing bus won't, so the leading bus will eventually slow down. So it's not perfectly self-balancing or anything, but maybe it would get some distance between them. More distance than not doing it.

When busses get bunched here, the lead bus just tends to skip stops and leave them for the trailing bus. This doesn't really seem to help much. They usually both stay pretty close together and, as a passenger, you end up standing there confused as to whether the bus just left you or not if you can't see the one behind.

The lead bus is much less equipped to skip a stop if it has more passengers, because there's a greater chance of a passenger needing to stop to disembark. In Chicago, you will see a trailing bus skip but it can do so because the driver hasn't gotten and cord-pulls to signal someone getting off.

That depends on how many/how frequent your stops are. Here in the north of the UK, a 30 minute journey on an urban bus could pass 60-80 stops, many of which will see no-one wanting to get on/off

The one that came to mind as I wrote that was the one I take after work. Most people tend to get off at the train station at the last stop so the bus only really stops for pickups, other than occasionally. The bus goes through an area mostly full of offices and industrial type buildings until it reaches the train station. There's not much inbetween but the same thing tends to happen. Even on other routes here though, busses tend to do the same thing when they're bunched.

A few more points regarding (1). The longer a bus takes to arrive, the more people will accumulate at the next stop, thus compounding the problem. Also, all people don't board the bus at the same speed. The more people that accumulate, the higher likelihood you have of getting an outlier when it comes to boarding time (wheelchair, elderly, bikes, etc). So the later a bus runs, the later it's likely to be.

You are forgetting people who would want to get off that stop, so this is may not be an option.

The lead bus can slow down between stops and let the empty bus overtake. Essentially "stop" several bus-lengths before the next stop and let the empty bus overtake and pull into the stop ahead of it.

The full bus pulls in directly behind the lead bus and lets passengers out.

The bus in front will have more people, and more likely to stop to let people off (and on).

Meanwhile, the one following behind will be emptier, and thus less likely to need to stop, meaning it can easily pass the one in front (while that one is at a stop for entering/exiting passengers) and then itself take on more passengers at the stops ahead --- which then gradually slows it down too, but at the same time the one behind will be mostly emptying.

I'd say it is reasonably self-balancing.

Wouldn't that mean when the bus overtakes it's now taking more passengers and therefore slowing down. The bus it just overtook (which would have quite a few passengers) is now speeding up (but also having to drop off passengers, possibly even stopping at the same stops the previous bus just stopped at.

So it just adds more bunching, doesn't fix anything.

If the bus that overtakes doesn't stop at the next stop but overtakes several stops (or until a passenger needs to get off but should be rare as emptier then the bus it overtook). And then start from there.

Someone mentioned this solution but called it random teleport.

That bus stop but in front of the slow bus.

They do that in NY. It typically equalizes and returns to bunching within a few stops, especially on busy routes.

What I see sometimes is that the delayed, leading terminates early and turns around. The later bus then picks up the passengers. Slightly uncomfortable for those passengers, but brings the bus back into schedule (including the driver who has limited working time and a replacement driver expecting the bus somewhere)

This would help with not wasting the trailing bus's extra speed, but I think the buses being that close together is already considered failure. And in the real world, there would be many more stops on a circuit. Any advantage the faster bus has will be reset in 1 or 2 stops, and on a route with 10-20 stops, the extra space between them is negligible.

You could probably have a computer calculate which stop the trailing bus should jump ahead to.

Then you have the trailing bus switch to "out of service" mode (so it doesn't enrage people when it passes a bunch of stops) and skip ahead 4 or 5 stops or whatever the computer decides is optimal.

Both buses probably need to drop off passengers, though (who would likely be a lot more enraged than people who don't get picked up by the first bus if they didn't get out where they wanted).

Anyway, I think the leading bus skips stops when possible, at least here. I don't think people mind that too much, because for all they know, the bus might simply be too full, although that certainly only happens on exceptional circumstances if ever around here.

The London Underground sometimes skips stops in order to uncongest lines after a temporary delay. They tell everyone on the trains that will be skipping stops that it's happening, and anyone who wants the intermediate stops has to get off and catch the next one.

This probably wouldn't work for buses that take a lot longer to load/unload though...

This is amazing! I wish the DC Metro did this.

When I lived in the DC area, the Metro would indeed skip stops after delays sometimes.

Here's an article talking about it: https://ggwash.org/view/38198/expressing-trains-helps-metro-...

The NY subway will also sometimes have trains switch from local to express or vice versa to help recover during delays.

It would be horrible if the slow bus behind was actually too full to pick up people so you have an empty bus passing stops that the trailing bus will also skip!

Welcome to Baltimore.

This may not work as well as you'd like if passengers need to get off frequently.

They will sometimes do that in Vancouver (or at least they did when I lived there). The lead bus will skip stops if it's able (no one getting off) leaving the passengers for the following bus, but if it has to stop, the trailing bus will just go ahead if it has no one getting off at that stop.

EDIT: it doesn't really help with the bunching, but it does help load balance between the two buses. I've been on rides where two buses passed each other several times.

The bus driver of the 'skipping bus' also has to be reasonably confident that the next bus will show up shortly. Otherwise, as a passenger, it's very frustrating to see one zoom by: but if you can see another one down the road, then you won't be freak out.

They all don't go to the same destination. They have an overlap of route but all of them go to different destinations. So you cannot just skip a bus stop. You are very rarely if ever going to see the same numbered buses bunched together

Don't overgeneralize. The featured article (simulation, really) is about bunching of buses on the same route, a phenomenon that I, a daily bus commuter in Los Angeles, USA, routinely witness.

Stops on the routes I take are also generally skipped unless someone is waiting at them or a passenger has pulled the cord/pressed the button to request a stop.

I am not overgeneralizing. I am mentioning every use case!

The stops are skipped because no one wants to get out of the bus and there is no one to board it. It has nothing to do with bus bunching.

Here in downtown Vancouver, there are some stops that have 5 different numbered buses making stop. Can they just skip ahead because there are a couple of buses already there at the stop?

To really make this works will have to check 1. Is the bus stopped in front of me the same numbered bus? 2. Does it have enough seats to board people that have lined up?

If yes then lets just not stop.

My first thought is that this would break a shitload of software around bus time indicators - i.e. on bus stops and presumably whatever API the website talks to. I believe the buses function like trains in that sense - they're numbered not just by route, but by actual bus.

Would be nice though.

The 'next bus' signs around here are all based on realtime GPS-tracking from the buses ('free wifi' is often piggy backed on the data connection the bus thus has to maintain.

I've seen buses run so late that they bunch-up and even to the point where they asked us to switch to the front bus so the rear bus could be taken out of service, once, and never seen the displays at the stops get too confused.

Of course trolley buses (or streetcars/trams) can't do this

Trolley buses usually can to an extent - the trolley arm can usually handle the 3m swing or so it takes to pass another bus.

...and then it crashes into the trolley arm of the bus ahead.

New trolley buses often have batteries, so they can run unplugged for some distance.

reattaching the trolley arms without stopping is not so easy

They do that here in Seattle sometimes.

This is very common in Manhattan. Whenever I saw a full bus, I'd skip it and wait for the next one, because it was almost certainly going to come along within 5 minutes and be pleasantly uncrowded. On a busy route, it's the sensible choice.

On longer-distance commuter routes, where the scheduled times are 30-60 minutes apart, I wouldn't usually take a chance on waiting for the next one, but I even did that on occasion when a bus was particularly-overcrowded.

It's mostly been fixed in London. They used to be famous for no busses for 20 mins then 3 at once but they are now controlled by a central computer system which knows all the positions via gps and cell data.

Sometimes you'll be on a bus and you'll get a message that it has to wait for a short time at a stop (no more than 2 minutes usually), to even out the service. This is when it's getting too close to the bus in front, so it backs off to retain an even distribution of busses.

It probably also helps that they allow people to load at both the front and back of the bus, and they check tickets while the bus is in motion. Buses in the US generally have people load one at a time through the front door and everyone's ticket has to be checked or (even worse) they have to feed dollar bills through the machine. This greatly increases per-person load times, and exacerbates the bunching effect.

That's fascinating. Are there any writeups on it?

https://en.wikipedia.org/wiki/IBus_(London) is part of it. Also https://www.intelligenttransport.com/transport-articles/688/... http://www.eltis.org/sites/default/files/case-studies/docume...

It's not actually clear if the de-bunching is algorithms or humans:

>Headway information, the time gap between consecutive buses, will be available to a bus driver at all times on a screen so that they can make decisions such as slowing down or speeding up to help maintain a regulated service and stop undesirable ‘bunching’ of buses.

Either way that's a great use of technology. AVLs and annunciators aren't exactly new technology (both exist with SF's Muni, for instance), but the MTA has definitely not used this data to avoid bunching — even in the subway.

Yeah. Sometimes when you get a bus to X it'll stop saying 'this bus terminates here' after about one stop, well short of X. When I asked the driver WTF he said it's the computer system and if they have too many empty busses going down one route they'll reallocate. There's nearly always another bus a couple of minutes behind to take you to X.

I was thinking someone could build quite a lot of the functionality into a free phone app if the drivers were willing to use it.

It still happens on the tube (one very full train, followed by a couple of emptier ones). Of course it makes a lot less difference when the trains are every minute...

If you're at a bad rail stop (like the first one outside of the central part of a city going outbound at rush hour) it's not uncommon to have to wait two or three trains just to be able to board. In a city like Singapore or London it might not be too long since many of their trains are automated (in Singapore they're all automated/driverless) and the busy lines are allocated enough cars to arrive 1 minute apart or less apart.

Even in cities like Chicago where they arrive 3~5 minutes apart at rush hour, you might still be waiting 30 minutes .. like I was yesterday. ... I really prefer finding crap to do in the city or people to hang out with so I can wait out the rush.

I'm not aware of any metro system in the world that has scheduled headways of under a minute. The Moscow Metro was tops for a long time with 95-second headways on some lines at peak (without full automation, mind you), but Paris Metro Line 1 was recently fully automated and can go as low as 85 seconds. Singapore currently has 120 second headways on its busiest line (East/West, which is not automated) and is working on getting that down to 100: https://medium.com/from-the-red-line/36-just-a-number-21011a...

Note that headway is measured between the arrival of trains, meaning the train has to come to a complete stop, let people get on & off, close doors, speed off and have another train stopped all within that period! So a 90-sec headway will feel like less than a minute to users.

Victoria line on the London underground does 100 seconds, with plans for the Northern Line to reach that too FWIW.

Doesn't really help much though. Sometimes you still have to wait 2 or 3 (or more!) trains before you can get to the front of the platform edge so that you can actually get on though!

TPH on Victoria line is now limited by platform constraints I think, you literally can't move passengers through stations like Stockwell any faster because of the size of the passageways.

Same happens in Seattle (and we have some nice services that show you the GPS locations of all the busses on the route, so you can be pretty sure an empty one is right on its way)

That app was built by a UW student and uses estimated data based on the schedule, as far as I know. It's not accurate... unless things have changed in the last year or so since I moved.

It's always been real-time location data. At one point it was pretty low-tech (odometer hooked up to a radio transmitter) but it's now been GPS-based for ~5 years.

Are we talking about OneBusAway?

These days OneBusAway is just one frontend for the data, the Transit app has the same information.

When that app (OneBusAway) first came out, it was extremely accurate. It completely went to crap when Metro took over maintenance.

It's very accurate now. I don't know when your experience with it was.

It pulls from the same source that Google Maps currently does, so feel free to use whichever you prefer.

I last used it about 4 or so years ago, so of course things may have changed. It was appallingly bad though, to the point where it was no more accurate than posted schedules on the routes I rode. I just quit using it because it was so thoroughly useless. The sad thing is that it previously had worked extremely well. Glad to hear they've fixed the issues.

There's something to be said for explicitly commuting the least distance (constrained by affordability) and not when everyone else is:

1. less time wasted -> a. more time to be productive in primary pursuits, b. more leisure time and c. if during business hours, more productivity accomplishing errands

2. less stress

It is also worth noting that in real life passengers are not uniformly distributed through time. When school lets out, or a train arrives at the station full of transfer passengers, etc. you can get a huge burst of traffic at one stop that screws up everything.

This can have knockback effects, because if buses show up late to their terminal they have now also started their return trip late.

EDIT: edited a word

Not to be a pedant (too late), but you probably meant 'uniformly distributed' in this case.

Not pedantic at all, this is a very crucial distinction.

"Uniformly distributed" : the number of passengers is the same for every time of day

"Normally distributed": number of passengers versus time of day roughly looks like a bell-shaped curve, a Gaussian.

I hesitated writing this, pushing the pedantry up a notch, but then considered spacecraft crashing into Mars due to failure in technical communication, and recalled colleagues with college degrees in computer "science" who rejected the paradigm of Evolution of species as "only a theory", so here I am writing it down to remind myself of the difference between normal and uniform distributions.

Also, I worked briefly with some Ph.D. Queuing Theory people that one time.

Maybe there should be an academic discipline of "Commuter Science".

That is indeed what I meant. Thanks for the correction.

This happens all of the time in Boston, especially with the bigger bus lines. No number 1 bus for 30 minutes, then 3 or 4 of them. Regardless of the cause, it's very frustrating as a passenger from a UX standpoint.

The dreaded 66 lining up one after an other

It's effectively a greedy algorithm where the first occurrence takes the most time, and there are no passengers left for the second bus, so it's load time is lower, and it will catch up. It's a pretty visualization though :)

Thanks for letting me relive nightmare memories of Grand Ave in Chicago! I always wondered, why couldn't the bus drivers be in communication and have the front bus just skip a couple of stops (where people are waiting) when they bunched, which was often even 3 buses!

If nobody signals to get off, buses sometimes will skip if they're bunched. I've seen it in at least three cities before. I have no idea if it's policy or if the drivers on those routes juts took matters into their own hands.

I see bunched buses on the stop right outside my work basically every day. Sometimes four from one route and another three from another parallel route all within a ~5 minute span.

Mercer in Seattle is... not great for traffic.

Mercer traffic is pretty good outside of the times of day when it’s closed and used for parking.

Not stopping when nobody signals is the point of the signal right:).

Right I mean not stopping when there's no signal and there are people at the stop waiting to get on.

edit: Well, I guess the bus could then ignore passengers on the tarmac wanting to get on.

That's another thing.

Buses have to let people off, as well as on, no?

Buses don't stop at unoccupied bus-stops, unless someone dings the bell.

The faster bus skipping stops where people are waiting, so they can be picked up by the next bus does work; I've seen it in action.

Which, as a patron who doesn't want to sit for an hour in the sun, is really not acceptable. The bus is not supposed to be in a race, they are supposed to make predictable stops along a predetermined route.

Most bus stops I have used in the US dont have covered shelters or enough space for passengers to wait outside of the elements. Usually this means sitting under the overhang of a nearby business. If the bus doesn't want to stop for whatever reason and blows by, it sucks.

Maybe a better future would be a public bus app or button at the stop that I can press to say I am waiting, but until that day, they should stop.

We're talking about bus bunching here. The bus is skipping your stop because there's an empty one right behind it.

This is great in theory, but not in practice. A bus in back sees the bus in front stop so it passes. However the bus in front might be full and only drops off one pasenger while more than one pasenger is waiting to board and are thus denied. Again, simple dismissal of the problem is ignorant of reality.

This is why I mentioned communication: surely there is a system that drivers could implement themselves with a code or something.

A better future is getting a car or hopping on a bike.

Bunching happens most often with crowded buses and results in the front bus in a cluster becoming crowded. Crowded buses are most likely to have people getting off at every stop. The ones I take often have people ringing for every stop even when nearly empty.

Depends where. Suppose it's the evening rush hour, and the bus route is along a business district, headed toward a train station. The bus is basically picking people up at multiple locations and then everyone gets off at the station.

Interesting, that simulator shows buses that are often full.

I think that's a rather rare case and know of a pretty graspable reason why lower fill buses clump up quite a bit. Assume that a stop produces a customer every minute or so, if a bus is five minutes late to the stop (lets say due to traffic) it will take a bit longer to load customers than normal adding slight amounts to its delay over time - concurrently, the bus behind it will always miss out on the customer potential that the first bus is carrying (so five people on that first stop), this will lower its loading time and cause it to gain time and run ahead of schedule - further lowering the loading time.

What can happen with longer commuterish buses is that the first bus can try and counter this effect by either pulling ahead/behind a stop and unloading passengers only, or by skipping stops if no one wishes to disembark, this shifts the load over to the later bus and can equalize the system - but this sort of thing happens all the time.

Additionally, even without that issue, buses are variable, they usually run in the same lanes as traffic and can be delayed for other reasons, high frequency (2,3,4,5 minute lines) will often have a speed deviation that exceeds the frequency, leading to the common effect of waiting six minutes for a 3 minute frequency bus.

In Seattle, where we mostly lack any sort of useable rail, it's entirely normal to have full busses, especially at rush hour. Bunching does happen and I love it because it makes my commute home quiet.

Yea uh... can you guys fix that? Metro is a godsend and Seattle suffers greatly from the lack of it - it's super annoying to try and bus to interesting parts of the city because the traffic in those areas tends to be terrible.

(I'm in vancouver now but for a while I was regularly flying in from the US and I'd usually fly to seattle and then catch the train/amtrack bus up the last leg due to the stupidly large price difference)

Perhaps relevant previous article on same subject and discussion:


"This bus is being held at this stop for a short while to even out gaps in the service". - Welcome to London.

"Why do Buses Come in Threes"

I read this book when I was 12 which opened up my mind to the hidden maths of everyday life.

I recommend to read this book, even as adults, but HIGHLY recommend to give to children to let them read about and discover coincidences like common birthdays, fractals in nature and many others.

Author link: http://www.robeastaway.com/books/why-do-buses-come-in-threes

Goodreads: https://www.goodreads.com/book/show/1225641.Why_Do_Buses_Com...

(Not including Amazon link on purpose)

There are several ways to avoid this.

1. The buses have predetermined stop times, signalled by a beep. You don't get on in time, you don't get on at all. Makes the delays predictable, regardless of the number of passangers.

2. Lines go from A to B and back, rather than in circles, so the delays cannot accumulate.

These are known and widely used. There is no reason why this should happen.

#1 is extremely non-ADA compliant but might work in countries other than the US.

Very nice visualization. Minor suggestion... I would put a [Delay] button on each bus - to avoid the explanation.

It'd also be nice with a capacity slider, the flow of buses will vary differently if they average a lower fill rate.

MTA has this interesting animation to explain the same problem, but in the context of subway.


The NYT also did a good visualizition about subway delays https://www.nytimes.com/interactive/2018/05/09/nyregion/subw...

This happens daily on the Muni 30X in San Francisco. What this algorithm needs is a comfort level such that a persons decision to get on a bus is a function of their expected comfort level and expected arrival time.

I remember a while ago reading about how bus arrival times in some South American country were studied and showed to follow psuedorandom distributions.

I don't remember the source, but the key differentiator [in that country] is that there is a person at the bus stop that tells the bus driver the time that the previous bus was there. This will cause said driver to increase/decrease speed in effect to counter bunching with the next bus.

Unfortunately, I also don't remember how rigorous the study was.

I have some feature (slider) requests to see the effect of extra variables

- Passenger boarding speed, theoretically we could stop bunching if passengers got on immediately

- Bus capacity, maybe the front bus can avoid being bunched if it drops capacity with respect to its delay (it's likely an invalid solution for the real world though)

- Poisson generation of passengers instead of uniform. Maybe delays aren't even necessary for bunching. It seems the schedule is quite an unstable equilibrium.

On busy routes one solution is to have longer buses and allow passengers to enter and exit in all doors. In Gothenburg they run these buses on certain routes: https://sv.wikipedia.org/wiki/Stombussar_i_G%C3%B6teborg#/me...

How's this any better? Now instead of having two or three buses that sometimes bunch up, you have 1 bus that's (essentially) always bunched up.

It comes one every five minutes during rush hours. You'll increase capacity by around 50%. Don't see how a longer bus will bunch up more?

It even happens on games. For example, "Cities: Skylines" has a mod[1] that keeps it from happening. The strategy is making the following bus wait a little bit if the gap is too small.

[1]: https://steamcommunity.com/sharedfiles/filedetails/?id=53140...

There is one line where I use this to my advantage, I could wait at the bus stop for the next 417, but if I miss it by a short time I know that if I catch the 137 that the 417 will pick up all of the passengers from the stops and so the 137 won't have to stop as many times, and I will usually be able to run from one to the other.

I suspect that cars bunch too. For a given traffic volume, if they're going slower, then they have to be closer together, which causes cars to slow down even more. This is a feedback cycle.

Buses bunching might be more noticeable because buses tend to stay in the right lane.

The layout of the page appears to bunch on mobile Safari on iOS as one long, skinny column for the main text.

Edit: Written on an express bus that doesn't bunch, although yes normal buses bunch, including purposely for peak times where there's lots of passengers.

It seems like phantom traffic jam. https://www.vox.com/2014/11/24/7276027/traffic-jam

I've always wondered why we don't just account for full bus/train loading deloading plus a buffer. Each stop has the mass transit stop for multiple minutes. Bingo, automatic buffer. If the bus is running late, it stops briefly.

The trade off for this, though, is increased travel times.

When buses are clumped like that, the leading bus shall not stop at the next bus stops until the distance between them becomes sufficient.

But what if I (or all passangers) want to get off at the next stop?

Then you could get out at the current stop and let the next bus take you to the next one. I've seen this in New York where trains become 'express trains' Im shure other cities do this too.

I feel like I must encourage everyone to play Transport Tycoon Deluxe, or OpenTTD.

This doesn’t work on iOS safari?

You should add a button for people to "work remote" if you want 10x karma.

How buses bunch is fairly ovious: the trailing bus has few people to pick up so it moves faster, uselessly catching up to the full bus.

Why they bunch up is actually a different reason: the operators don't give a darn about sticking to schedules and/or tracking the other buses and maintaining space.

Out here (vancouver) operators are allowed to skip stops when full, so they are able to recover from this state gracefully.

Depending on the frequency of the bus route I'd prefer adherence to a schedule vs. efforts to minimize bunching. With frequent buses I think the schedule ends up being irrelevant - but if the hourly bus I occasionally take pulls in fifteen minutes early or late then I will be pissed, especially on the early side.

Are they allowed to also skip stops where people want to get off?

Nope, that's pretty silly BS. Apparently Melbourne had some really stupid "efficiency motivators" that made train operators do this, but that's stupid. The transit company/authority/whatever that's in charge knows that the blow back for being late is nothing compared to refusing to let people disembark where they want to, it's also a _bit_ of a sunk cost. When you let someone board you're accepting the time for them to embark and disembark (you need to let them off sometime)... as a driver you would save a bit of time by not pulling into the stop.

Anyways, with downtown buses I'll often do this voluntarily, if the bus is full I'll wait until the stop after mine to pull the cord, and disembark at my stop or one before if someone else is getting off - a block or two of walking isn't going to hurt anyone.

A LOT of people who take the bus here are elderly or disabled.

Clearly not. You’re not going to hold people captive on the bus just to make up a few minutes. However that doesn’t mean the bus drive has to accept new passengers when someone does get off (it’s not common that happens but I have seen that happen before and it’s highly infuriating for those waiting for the bus. Which is likely why it’s not common)

My experience on crowded buses is that typically every stop gets rung for anyway, so skipping isn’t an option.

Of course, if it were possible to open only the back doors and let people off but not on, that might help, at the expense of leaving the people waiting to get on enraged. But then you also have the problem that on a crowded bus it can be really tough to squeeze past the rest of the passengers to get off, which also slows everything down.

The whole thing is miserable, and mostly these routes just need more buses (plus the articulated ones that hold 60% more people).

Vancouver buses have this ability! And they will often specifically refuse to let new people on the bus if they are at or near capacity.

It noticeably speeds up things.

Actually, the train system in Melbourne, Australia was doing exactly this to passengers in the very recent past. The private operators realised that there were penalties for getting to the end of the line late, but not for missing stops, so they just told the passengers who wanted to get off to suck it!

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact