This is the second post in a series that attempts to tackle the issue that “my bus is never on time!”. I recommend you read the first post before this one, as there may be some references to the ideas discussed there.
Last time, we discovered that our simple problem of predicting when buses will be where (and using that to build a schedule) is plagued by the compounded randomness of the system. As a first taste, we talked about a bus’ obligation to pick up passengers as an additional source of randomness compared with what people deal with every day in their personal vehicles. In this post, we are going to talk about uncertainty in general, and break down a bus’ travel into manageable (but still unpredictable) pieces.
Academically, the entire discussion of “uncertainty”, “randomness”, “unpredictability”, and “chaos” falls into the discipline of probability and statistics. We’re not going to get much into the details, but it suffices to say that there are a lot of brilliant people that have spent a lot of time creating a rigorous world around randomness, complete with a language, rules, and a few philosophies of thinking. As I’ve learned more about it, I’ve gained a new level of respect for the incredible relevance and importance probability theory has on our lives in almost every aspect. I’m going to leave the technical stuff up to them (and to my thesis), and focus instead on how to apply some of their ideas to our current problem.
Second Day on the Job
Okay. So the first day we figured out that we are technically asking ourselves to do the impossible, namely predict the unpredictable. But after a good night’s sleep we are back, and ready to tackle the problem as best we can. The best line of attack for a daunting task? Break it down into bits.
There are two ways to deal with uncertainty. The first is to try and make it as small as possible. For bus routes, this could mean putting in a dedicated bus lane (shrinking the uncertainty due to traffic), or providing dedicated lights for turning (shrinking the uncertainty due to signals), or putting the whole transit system underground (shrinking the uncertainty due to weather). All of these strategies are valid and used often, and with emerging technologies the uncertainty in these areas is shrinking even more, but it can never be zero. There will always be some randomness, even with computer controlled vehicles in sterile environments. Otherwise, where is the fun in life?
There’s an additional problem that the first strategy has trouble dealing with, and that is the randomness of people waiting at bus stops. Imagine a bus cruising along at speed, past an empty bus stop. Now imagine that same bus slowing to a stop, opening its doors, boarding the passengers, closing the doors, and accelerating to speed again. That difference in time may be 10-20 seconds, but for a bus route with many stops each with that unpredictable factor the uncertainty adds up. Sure, people can use their phones to see when their bus is coming, but how useful is that for someone planning a trip a few days down the road?
Let’s suppose for now that we’ve done what we can to reduce uncertainty, to whatever point is feasible. At this point, anything we do won’t reduce uncertainty, it will only shift uncertainty. In a way, we have our own conservation law, the “conservation of randomness” (as far as I know this is not a mathematically valid statement, only a philosophical one). Our second strategy, then, has to be a whole lot more subtle. We need to exploit the nature of the problem to shift some of the uncertainty into areas where it doesn’t matter as much. But what does that look like?
Our First Control Strategy
Imagine that we are at a regular bus stop, where the system is left up to it’s own devices. Buses are arriving and departing, but they’re unpredictably ahead of schedule, behind schedule, and sometimes they get lucky and are on time. This is what our randomness looks like to a passenger.
Now suppose that we implement a rule: if a bus arrives ahead of schedule, it has to wait until it’s on schedule before it leaves. If a bus arrives late or on time, however, it carries on as usual. This rule is the first step in what is known as holding control strategy, something you may have seen in practice when you ride the bus, wondering why an almost empty bus is idling at an empty stop. This rule has shifted some of the probability away from the bus arrival, and onto the length of time the bus waits because of the rule. In essence, the bus now waits a random amount of time (which is less important to our problem) instead of being early a random amount of time. Sure, passengers on board may be annoyed, but passengers at this stop won’t miss their bus because it’s early, and passengers downstream will also benefit.
Excited by this idea, perhaps we add an additional rule for this stop. Now that buses never leave this stop early, let’s figure out the average amount of time a bus is late and build that into the schedule. By adding extra time into the schedule, we are essentially making more buses “early”, and exploiting the uncertainty shift just like we did above. We have to be careful, though, since adding too much slack time will cause too many buses to sit around needlessly, and make everyone’s trip longer. As with many things in transit, a balance must be found.
These strategies are great, but they all deal with the randomness from travel. There is one source of randomness that keeps coming up in our discussion, which we haven’t addressed at all: the randomness from having to pick up (and discharge) passengers.
Let’s stop and think about a subway (or an LRT with a right of way). Because of the volume of passengers, they stop at every stop, open their doors for a fixed amount of time, and continue on. They have mitigated both the boarding/alighting variation that buses face, and the travel time randomness. Because of this, they don’t usually operate with the holding control strategy.
So we’ve followed our nose to what appears to be the biggest culprit in our uncertainty, picking up and dropping off passengers. This has become the heart of our problem, and figuring out how to mitigate or shift this randomness is key to improving the whole system. The trouble is, the randomness of passenger arrival is directly connected with how on time the bus is, and visa versa. Next time, we will explore this passenger randomness, and see if we can better understand how our problem is affected by it.
I hope the irony of the situation is clear: Buses can’t run on time because people use them, and people won’t use buses if they don’t run on time.
Yeah, this is a fun problem.