12 ms·
Why do buses bunch?
- mmanfrin 11y agoThis site/group also did a fantastic visualization on gridlock vs. bottlenecks: http://setosa.io/blog/2014/09/02/gridlock/ http://setosa.io/blog/2014/09/02/gridlock/
- FatalErrorr 11y agoI've never heard of them before, but they have some really amazing things! I am thoroughly impressed.
- justincormack 11y agoBecause bus drivers like to play poker together in the pus station.
- hoverbear 11y agoIt makes me sad that this doesn't seem to work in Firefox!
- roghummal 11y agoOr Safari.
- TorKlingberg 11y agoOr IE 11.
- deleted 11y ago[deleted]
- lewis500 11y agogoing to fix that
- NathanCH 11y agoSome developers who use Chrome don't bother with cross-browser testing, I've noticed. Not sure why but it's a common problem I experience with HN links.
- Sir_Cmpwn 11y agoYet another example of a lazy Chrome dev. This is getting too prevalent.
- judk 11y agoGoogle is turning into Microsoft 2000. It is the natural order of things.
- samstave 11y agoI haven't read the article, but I ride the bus a lot. Here is my subjective take: bus drivers get into a very distinct and slow pattern of their bus driving behavior. Slow to do everything, never not taking their break, never attempting to make up for lost time. So in their daily routine, the traffic between stops is variable, but their little rituals and apathy to the travel plight of passengers is not. They also like to take up time socializing between driver swaps, which aren't accounted for in bus schedules. Thus the largest factor is bus A may have no traffic, and bus B had a lot, but their stops at each place take the same amount of time, thus they end up clumping when traffic let's one drive between stops faster than the other, who will still be on his break at the Bart station.
- URSpider94 11y agoThe point of the article is that you can generate this behavior in an ideal system without taking into account differences in drivers. Put simply, small stochastic differences in arrival rates of passengers or initial speed of buses will amplify themselves. If you take three buses and shift the center one in time, you'll end up with one longer gap and one shorter one. The bus with the longer gap will tend to find more people waiting at each stop, while the bus with the shorter gap will find fewer people and move faster. Ultimately, the faster bus will catch the one in front of it and follow it, with zero people getting on at each stop. There will then be a -huge- gap, followed by a very slow bus that has to pick up a ton of people at each stop.
- samstave 11y agoWhich pretty much maps to my comment.
- aczrWcJGuRhB 11y agoI haven't read the article, but ... it's an interactive and intuitive explanation of why this happens, and it has nothing to do with anything you mentioned. "my ignorance is just as good as your knowledge"
- _delirium 11y agoFwiw a relevant general concept is that of stable vs. unstable equilibria. In a stable equilibrium, small deviations will tend to correct back to the equilibrium, while in an unstable one, small deviations get magnified and the system drifts away from it (absent active intervention). Given some assumptions, such as those implemented by this simulation, evenly spaced buses represent an unstable equilibrium, since a bus slightly early or late will cause an asymmetry in passenger load that pushes things further in the "wrong" direction.
- pkaye 11y agoNow how do we explain how buses seem to arrive and depart just before we arrive to the stop?
- derefr 11y agoNote how this would all go away if the empty buses could pass the full buses. Which they usually can, since even on single-lane roads, the bus stop is out of the way of traffic. But then there are trolleybuses. When the busses are all hooked to a single overhead cable run, as is common in places like Vancouver, the driver of one trolleybus would have to de-latch and then re-latch their "rabbit ears" (i.e. get out of the bus twice) in order to pass another trolleybus. Needless to say, this is uncommon. (Someone on HN: please, come up with a trolley pole design that can hot-pass another trolley pole pair while remaining on the line, and sell it to cities.)
- seanmcdirmid 11y agoTrolley buses are common on hilly routes where electricity provides torque needed to navigate steep grades. Very common in the pacific northwest (Seattle) and much of the alps (e.g. Lausanne). Buses tend to bunch in Beijing also, bad traffic prevents them from passing very well.
- seanp2k2 11y agoAnd San Francisco.
- seanmcdirmid 11y agoThey also have real trolleys just for this purpose. Unfortunately, those have become tourist attractions.
- jakejake 11y agoIn Chicago on very rare occasions when the train is running late they will have an impromptu "express" train where they skip the next 4 or 5 stops. They announce it so you know not to get on the train if your stop is being skipped. It seems like such a huge deal for them to do this - it's very rare. It must be a giant pain, even though it makes a lot of sense. Not only does it get the train back on schedule, but it reduces the riders on that train, which further speeds it up. If there was an easy, intelligent way to allow the bus to go into "express" mode and alert the riders then the busses could avoid getting bunched up.
- owenwil 11y agoDamn, this is a beautiful site.
- dukerutledge 11y agoThis kills the firefox.
- yellowapple 11y agoFor real, though. Buses bunch because this site doesn't render properly. All the buses seem to be stuck off to some corner.
- stephengillie 11y agoDoes anyone know why this doesn't work in Firefox?
- benihana 11y agoBased on the tone of some other responses, I'm guessing because the author of this is literally hitler.
- stephengillie 11y agoDoes anyone have a technical means for Hitler to do this?
- judk 11y agoDifferent JS and DOM and CSS engines , so some tight inner loops are a significant factor slower do to missed optimizations.
- stephengillie 11y ago(Not trying the article's domain against the corporate firewall, sorry) Sometimes it's because there's traffic going the opposite way. Many buses travel a circuit, so their route ends at its beginning. If your bus is late, maybe it was stuck in traffic an hour ago, and was late to every stop since that traffic. Traffic itself becomes a travel-time multiplier - driving a car home from some offices, leaving at 3pm would get me home at 3:30. But leaving at 3:15 gets me home at 4. Leaving at 3:30 gets me home at 4:30. It seems to describe a bell curve that maximizes about 5:30 or 6pm.
- judk 11y agoWhy are you afraid to try?
- itsybitsycoder 11y agoWhere I live, if a bus gets late enough (or too full) and the driver knows there's another bus right behind, they'll start skipping stops. I don't think that would help in this simulation because people getting on seem to be equally likely to want to get off on each stop, but IME that's not really accurate for most bus routes. People want to get on the bus at all sorts of random places, but 90% of people are getting off at the same two or three stops (transfer point, city center, etc). It would be interesting to see these things would affect the bunching, I think.
- AceyMan 11y agoI commute in LA and observe (and am impacted) by this regularly; so much so, that I've been meaning to write the municipal operator about solving the issue, or at least reduce the tendency (attractor?). My mitigation idea: When the buses become bunched; the forward bus should switch to 'Disembark Only' mode. (Most modern buses I've seen have a preset to post this on the LED signage). This way it can pass all the stops with folks waiting and (we hope) will make enough time up to get far enough down the line to remain un-bunched. Then, by some condition (e.g.,"back to within 5 minutes of posted schedule") switch back to normal "pickup & drop-off" mode. It's very cool to see someone else noticing and thinking about this phenomena. To quote the great thinker Yogi Berra, "You can observe a lot just by watching."
- bluehawk 11y agoI think this would work well, but my gut reaction is that a passenger who is already annoyed at a late bus watching that bus just go right on by would be unappreciative.
- charliepark 11y agoA couple of tweaks that might make it less problematic for you: 1. Bus #1's signage updates so it doesn't show the bus route externally; it's no longer "your" bus, so you aren't upset when it passes by 2. Bus #2 (which is ostensibly no more than half a block away) has an N% discount for passengers (where N increases according to demand). 3. When Bus #1 gets "bumped" (metaphorically) by Bus #2, bus company regulations have it pull over and let Bus #2 pass it; therefore, the less-crowded Bus #2 can pick up more of the waiting passengers. [Edit: Oh; I see this has been covered in some other comments already.]
- r00fus 11y agoDiscount is a great idea - but if passengers are regular riders (monthly bus pass) - it's not clear what you can offer them for their annoyance.
- 11y ago
- thrownaway2424 11y agoWhere's the button to make the goldbricking union bus driver stop and get out for a smoke break in the middle of the run?
- guyzero 11y agoTwo words Toronto streetcar riders dread: short turn.
- duncancarroll 11y agoAnyone else learn this from scheduling trains / switches in A-Train? =)
- gd2 11y agoIn the simulation, the back of the bus slides out like a race car in the "S" curve. Don't spill your coffee.
- Ellipsis753 11y agoThis is interesting and I like the display. However, in Firefox (Gentoo 35.0) the buses don't stick to the roads on the turns and seem to go a little slower than intended. This therefore means that the buses don't bunch at all. This is an amusing bug as it's pretty much impossible to notice (everything works) but ruins the effect on Firefox.
- lewis500 11y agohey yall maybe you will like this short paper on dynamic control for bus bunching from my group http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.153.1664&rep=rep1&type=pdf http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.153...
- ChrisNorstrom 11y agoNice explanation I just wish it went into more detail as to WHO causes the time delay. No bus stop line has stops where the exact amount of people get on every time. It's the fact that the first bus picks up more people (due to rush hour) and those people take more time to get on, request more stops and delay the bus. The time delay is caused by: Asymmetrical passenger quantity. (usually rush hour) Which the really nice demo doesn't show (because it wants to show the delay with the passengers as a control). Both bustops have the same number of passengers each in relation to each other. That's just not realistic. In the real world, the asymmetrical passenger quantity causes the delays, not traffic.
- nwp90 11y agoWhen I lived in London, and used buses fairly regularly, I started thinking about ways to improve the service and stop bunching. I considered the reason stated here, and some of the solutions, but later realised that the root cause was that the drivers liked to stop and chat and perhaps play cards with each other at the (presumably unsupervised) "bus station" at the far end of the route. Once I'd observed 3 of them waiting for each other, chatting, and then all leaving at once on the same route, my interest in trying to think of ways to fix the problem waned.
- eru 11y agoYou could give them smartphones to make them less social.
- brc 11y agoI lived in London and used to ride the 9, which at the time was one of the last routemaster buses. I also learned that the drivers are comfortable in their chair, and they get paid whether they are late or early, whether they take off smoothly or like a jackrabbit, and whether people are crammed in or left waiting on here stop because they weren't quick enough. In other words, automation has to be a part of any solution, because the drivers do not care.
- nwp90 11y agoI'm sure there are several valuable lessons hidden away in there - concerning assumptions, human factors, jumping to "obvious" solutions without having verified the actual cause of a problem, unintended consequences etc. etc. Would be interesting to look at a system where it does actually work well and see what's different.
- skatenerd 11y agoI actually made a small tool to track bus bunching in Chicago. https://github.com/skatenerd/buses/blob/master/artifacts/healthy_buses_for_once.png https://github.com/skatenerd/buses/blob/master/artifacts/hea... The results were largely depressing, but unsurprising.
- chaz 11y agoNYC Metropolitan Transportation Authority posted a cute 8-bit video about the same problem, but for subways: https://www.youtube.com/watch?v=eShtZSx4kWc https://www.youtube.com/watch?v=eShtZSx4kWc
- cmdrfred 11y agoOver here in and around Philadelphia I think the main problem is the stoplights. In my commute home I literally have to stop at each and every one and they are sometimes no more than a few hundred feet apart. I always wonder why they can't be synchronized in some way to allow for a more fluid traffic flow, but never the less they seem to like stopping long lines of traffic to allow a single car or two to get out of a shopping center with the priority it seems being given to those in the shopping center.
- smegel 11y agoIs it just me, or did it not actually explain why: > Bus bunching happens because, if a bus gets delayed, then there will be more people waiting at the next stop than anticipated. The extra passengers' boarding time makes the bus even later, and so on in a vicious cycle. OK, so I get that buses get delayed. And even more delayed. But why buses "bunch" up and arrive at the same time doesn't seem to be explained anywhere.
- UberMouse 11y agoThis doesn't even seem like an accurate simulation, if bus 1 is unloading/loading at a bus stop and bus 2 catches it, bus 2 waits for bus 1. This makes sense in the context of the website because buses always drop off/pick up passengers when they get to a bus stop. But that isn't how it works in real life, if bus 2 doesn't have to drop off someone while bus 1 is at the stop it will just leapfrog past it. The fact that busses don't overtake each other seems to be the reason the bunching happens, as soon as the front bus starts slowing down a little it's inevitable bus 2 will catch it and then the situation can't be fixed.
- brc 11y agoBecause as the lead bus gets filled, the following bus has fewer and fewer people to pick up, so it speeds up until it catches the lead bus, which is running later and later due to the passengers overloading, who turned up early for the later bus. The lead bus can't be passed by the following bus, so they bunch.
- falsedan 11y agoWow, this was the CS101 4th week assignment I had to do (without the graphics).
- softgrow 11y agoBuses bunch as they move further along the route as a consequence of having a dwell time (the time spent at the stop) that increases as a result of the number of passengers boarding at each stop increases AND having passengers arrive at each stop randomly. You can reduce bunching effects by: * loading passengers who have already paid through multiple doors like Curitiba which every transport engineer includes on their honeymoon :) * having passengers use smart cards rather than cash which is slower * running infrequent services so passengers read the timetable and do not arrive at the bus stop randomly as their is an incentive to be their at the timetabled time. The last method is obviously not acceptable in running a service but it highlights the curse of running frequent services. As frequency increases, people's behaviour moves to "turn up and go" rather than read a timetable and the buses bunch. So you in effect trade waiting time, waiting for a timetabled service for bunch delay time. Hence one good reason to go for smart cards or bus platforms where you pay prior to boarding the platform like a train station to speed up loading.
- pkulak 11y agoHere in Portland I've often seen pairs of bunched busses leapfrogging each other at every stop so that at least they both move faster.
- leni536 11y agoEven cars "bunch" (cause traffic jams) without any apparent reason. It's due to instabilities in traffics caused by reaction times [1]. [1] http://www.sciencedirect.com/science/article/pii/S0167278905003775 http://www.sciencedirect.com/science/article/pii/S0167278905... Direct link: http://www-personal.umich.edu/~orosz/articles/PhysicaDpublished.pdf http://www-personal.umich.edu/~orosz/articles/PhysicaDpublis...
- yason 11y agoBut trains generally don't. Trains are signalled so the waits and delays take place between stations and not at the platform: it takes a while for the delayed train to reach the next station so it won't just sit behind the first train and be of no use. The stop times for commuter trains are quite consistent because there's no onboard ticketing: people just hop out and then on, and that's it. Tickets are prepurchased or sold by the conductor while the train is moving. A good portion of the time spent at a stop is spent decelerating and accelerating and not only loading/unloading passenger. Even if there were no passengers, the stop time wouldn't necessarily be substantially shorter. There's no other traffic which helps keep to the schedules: this cuts down the sources of unexpected delays. Barring track and switch failures, the only source of delay is a huge crowd of passengers leaving and boarding on a single station. Even there, station platforms are quite long and even if some venue were to ooze thousands of people out to the train station at the same time, there's a limit of how many people can realistically populate the whole platform in between trains. So there generally is always some space on the platform to which the existing passengers can still exit, and people waiting on the platform tend to saturate available free space instead of crowding into an unpenetrable flock. Now, buses could use "soft signalling" to even out the distance between consecutive units. Using travel cards only (either with prepaid monthly periods or by having single-fare smartcard readers onboard) and allowing unloading/loading through all doors at the same time would help. Bus lanes and unconditional traffic light prioritization (bus always gets green light) for public transit are used in many countries. But there's very little to do about the capacity of a bus and the short length of a bus stop. Even trams are much better: they can take in 3x-5x as many passengers and tram stops are generally much longer, allowing the tram to operate with 6-8 doors instead of 2-3 like a bus. Tram routes are often heavily isolated as well, and run with at least some basic level of traffic light priorities.
- Animats 11y ago"But trains generally don't." The London subway has real problems with this, because they have so much rolling stock on some lines that any delay cascades back through the chain of trains. On some lines, a 30 second delay will cause the train behind to stop between stations, which means it has to accelerate again, putting it about a minute behind. This can delay several following trains. The Yamanote line in Tokyo, which is a big loop around the central city, has trains about every 2 minutes. If any train is delayed by 5 seconds, the schedule for all the trains in the loop is slipped back 5 seconds. This maintains spacing.
- Animats 11y agoThere's a bug in that simulator: 00:12:07.824 "Error: Argument 1 of SVGPathElement.getPointAtLength is not a finite floating-point value. [6]</MapCtrl</MapCtrl.prototype.place_bus@http://setosa.io/bus/dist/bundle.js:380:10 $parseFunctionCall@http://setosa.io/bus/dist/bundle.js:29490:15 expressionInputWatch@http://setosa.io/bus/dist/bundle.js:29899:31 $RootScopeProvider/this.$get</Scope.prototype.$digest@http://setosa.io/bus/dist/bundle.js:31386:34 $RootScopeProvider/this.$get</Scope.prototype.$evalAsync/<@http://setosa.io/bus/dist/bundle.js:31591:15 completeOutstandingRequest@http://setosa.io/bus/dist/bundle.js:22010:7 Browser/self.defer/timeoutId<@http://setosa.io/bus/dist/bundle.js:22398:7 "1 bundle.js:28741:17 consoleLog/<() bundle.js:28741 $ExceptionHandlerProvider/this.$get</<() bundle.js:25682 $RootScopeProvider/this.$get</Scope.prototype.$digest() bundle.js:31412 $RootScopeProvider/this.$get</Scope.prototype.$evalAsync/<() bundle.js:31591 completeOutstandingRequest() bundle.js:22010 Browser/self.defer/timeoutId<() bundle.js:22398 No buses are drawn.
- junto 11y agoI must be missing the complexity here. Surely this is.simple, since buses run to a timetable. Hence they can only be on time or late, but never depart earlier than advertised. Hence over time the chances that it will be delayed increases the chances of bunching.
- ido 11y agoBuses here (Berlin) often depart as soon as they reach the station, which can be early (except on their very first station I guess). You could argue that they shouldn't, though.
- jezfromfuture 11y agotraffic lights...
- dovg 11y agoHi Lewis. I really liked this page, but it is consuming too memory and CPU power.
- david_p 11y agoI believe that to solve this problem, metros in paris have two strategies: -1 a train that has a train too close before it will idle between stations to restore a reasonable space between trains (problem: all trains go as slow as the "first" train) -2 a train that has train too close after it will ask all travelers to step out at a station to wait for the next train, then skip a couple of stations to restore a good space between trains (problem: people in the "scarified" train get a big delay)
- osi 11y agoIn Chicago, the CTA is rolling out new 2-way communication into buses to allow the dispatcher to try and help alleviate bunching http://chi.streetsblog.org/2015/05/14/heres-how-new-cta-technology-helps-reduce-bus-bunching/ http://chi.streetsblog.org/2015/05/14/heres-how-new-cta-tech...
- Grue3 11y agoIf you ever played Minimetro, the trains always bunch when you put several of them on one line.
- tempodox 11y agoDoesn't seem to work in my browser. Maybe my address bus bunches with the data bus.
- fexl 11y agoIn Lima Peru the bus drivers pay spotters on the street who report flow conditions by cell phone.
- ivancamilov 11y agoThey do this in my city too (Bogotá, Colombia). It's actually illegal here, but they do it anyway.
- fexl 11y agoIt's bizarre that it would be illegal. For all I know, it might be illegal in Peru too, but it happens, and it works pretty well. In Lima, the spotters are known as "dateros" (loosely, "data wrangler"). The bus drivers pay them roughly 20 centavos, I think per stop but I'm not certain. One case where it doesn't work is when certain bus drivers ignore the system and aggressively jump ahead of other buses. Nevertheless, it's pretty smooth.