Bus Bunching Demonstrator


On the left you will see a representation of a circular (thus infinitely long) bus route with 27 stops shown at a spacing of 1000m, each with a number giving the size of the bus queue. Passengers join the queue at each stop at intervals of 240* seconds. In addition, there are 13 buses (each showing its fleet identity and the number of passengers on board) which are initially evenly spaced along the route. Once START is clicked, the buses will begin to move anti-clockwise pausing to pick up and deposit passengers at the stops. The buses run between stops at 40kph ±50%. Stopping and starting entails an overhead of 15* seconds. Each passenger takes an average of 10* seconds to board and 5* seconds to alight, boarding and alighting proceeding simultaneously. All the figures marked * are subject to random variations of ±100%. Each bus carries up to 60 passengers each of whom may alight at any stop other than his/her originating stop.


Any of the figures shown in red above may be altered before the run starts. In addition, the bus route may be converted into a modern tramway by changing the "tramway" setting to "yes". The differences are that trams may not overtake each other and that only one tram may be at a stop at a time rather than two buses.


To start the simulation, click START. The run may be halted at any time by clicking STOP after which CONTINUE will allow the run to carry on or RESET will start from the beginning with a new configuration.


Buses or trams at a stop are shown in red. Those which are full are shown in blue and those queuing for access to a stop in purple. A display will normally show the theoretical degree of usage of the buses and their theoretical net speed (both unlikely to be achieved in practice) or perhaps an error message pertaining to the configuration parameters. The clock display shows the simulated time since the run started. The clock will be accelerated by a factor of up to 30, though whether this can be achieved is dependent on the complexity of the simulation, the performance of the computer and the efficiency of the browser. The clock acceleration factor may be changed at any time during the run so as to be able to observe the simulation in detail.
The average passenger speed display shows the end to end times (including queuing) experienced by the last 100 passengers to alight and the average bus speed display shows that of the buses, calculated each time the bus passes the bottom of the display.


Bus bunching is caused by random fluctuations in the running of and (mainly) demand for buses. Once a bus is delayed more than average, then, by the time it arrives at the next stop, there is likely to be more than the usual number of passengers queueing. This engenders further delay while they board. Meanwhile, the bus behind will find fewer passengers than usual to pick up, thus causing it to accelerate and, eventually catch up the first bus. Conversely the third bus, now starting to lag behind will start to experience larger queues and thus additional delays and so on.
This program illustrates the tendency of buses to bunch by the application of simple rules to a simulation of the forgoing thoughts and animates the result.
Try setting the two variation parameters to 0. You will observe a much-diminished tendency to bunch, but it is still there. Now try it again with the number of buses being an exact divisor of the number of stops.

click here for an explanation of how it works

We like to drive in convoy. We're most gregarious - Flanders & Swan
© Dik Leatherdale 1999