Why Do Buses Bunch?
setosa.io
setosa.io
> 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
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.
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.
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.
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)
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.
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.
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
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.
I think that would be too much hassle with buses but it's possible.
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.
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.
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.
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.
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.
This probably wouldn't work for buses that take a lot longer to load/unload though...
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.
Would be nice though.
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.
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.
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.
The full bus pulls in directly behind the lead bus and lets passengers out.
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.
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.
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.
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 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.
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 pulls from the same source that Google Maps currently does, so feel free to use whichever you prefer.
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.
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.
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!
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
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
"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".
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.
That's another thing.
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.
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.
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.
(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)
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)
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.
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.
- 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.
[1]: https://steamcommunity.com/sharedfiles/filedetails/?id=53140...
Buses bunching might be more noticeable because buses tend to stay in the right lane.
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.
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.
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.
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).
It noticeably speeds up things.