Sunday, February 14, 2010

All I Want For Christmas is a Super-Intelligent Public Transit System - Part 1

I was having a friendly debate with another commenter over at Chicagoist, in an article lamenting the latest round of RTA cuts. Upon floating some rough ideas for how Chicago's transit system (or, indeed, any city's transit system) could be made to operate more dynamically, I was rebuked by a solid wall of skepticism.

I think my biggest problem--and my problem with most technology--is that I simply don't see the benefit outweighing the expense of implementation coupled with ongoing maintenance. I honestly believe that a simple, fixed route bus system runs about as efficiently as it is possible for a bus system to run.

Could it be? That nearly the simplest possible approach to a bus system one can imagine happens to be the most efficient? I find that to be highly unlikely. Many problem domains don't favor simple approaches. Said another way: the universe is complex; deal with it. Take one example from the field of computer science: sorting numbers. Specifically, how can we efficiently store a collection of numbers that will allow us to quickly search the collection to see if a certain number is already there? One very simple approach is to store the numbers in a sequence, then put that sequence in order using bubble sort, then perform a binary search on the now-sorted collection.

The approach to sorting described above works fine when you're only sorting and searching through a few different numbers. But once you start dealing with thousands, millions, or billions of them, the performance breaks down badly. A more complicated approach to sorting involves using a specialized construct known as a red-black tree. A red-black tree is much, much more difficult to create and work with than the simple approach (believe me, I had to suffer through it in college). But it's also much faster, and handles searching through even very large collections of numbers with acceptable performance.

In many ways, the number sorting example is analogous to comparing a fixed route bus system against the one I will present in this post. Just as with the simple number sorting example, the simple bus system (fixed-route) works OK when the system is small. Suppose that the entire city of Chicago consisted of two high rise condo buildings, one grocery store, and two large office buildings. Every person lives in one of the high rises, works from 9:00AM-5:00PM in one of the offices, and goes grocery shopping every day from 6:00PM-6:30PM. This kind of city is the perfect candidate for a dumb fixed route system! You can set up bus routes that go back and forth between each high rise, and the grocery store and offices. Even if you create "express" routes between each of these buildings (a pretty sweet deal for everyone), that's only ten total routes. You can probably even eliminate some of these if, for example, two of the buildings are close together, or a building is in between two other buildings (the bus can just stop at the building in the middle), etc. And, because everyone is on the same schedule, you only need to run each of the routes at one point during the day (for example, the "high rise to office" routes only need to run a little bit before 9:00AM every day). Cheap, effective, and simple.

But what happens when the people in the high rises start to work different hours from each other? Or start wanting to go grocery shopping early in the morning, before work? Or (gasp), the city starts to grow and a developer builds a whole bunch of townhouses that are scattered around all the existing buildings? In other words, what if our simplistic, imaginary Chicago started to look more like the real thing? You either need to start adding more routes (more buses, drivers, and money), or having existing routes make additional stops (slower commute times, lower frequency of trips), or both.

Fortunately for us, in the real Chicago, the streets are laid out in a nice gridlike fashion with perpendicular "major" streets roughly a half mile apart in all directions. This general layout admittedly lends itself pretty well to a fixed-route system, at least as well as any particular layout could. But regardless of the street layout, and ignoring the fact that many people still need to make trips that don't align to these routes very well, the fixed-route system still breaks down in the face of dynamic human behavior. That's just the price we pay for being free-willed, living beings instead of cold, calculating robots. Just to give a non-comprehensive sample of some pesky human-caused problems that spring to mind...

  • Many people don't follow the same schedule every day. They might go into work early, leave late, or attend to errands/appointments in a completely different location before heading to work.

  • Certain neighborhoods start to become "hot" and lots of people suddenly want to live, dine, or get drunk there. It takes months or years for this sort of information to filter through the bureaucracy before changes to routes are implemented to meet the changed transit need - if ever. By the time the schedules/routes do change, the hot place might have moved somewhere else (coincidentally, I always keep up with these things; I rode my vintage bike to the hot spots way back before anyone else even knew about them).

  • Some people work in different locations some or all days, possibly at different hours. People are moving in to, and out of, the city every day, for a myriad of reasons (excitement over taking advantage of a large urban transit system, followed by the inevitable letdown upon seeing that system in action, being chief among them, I'm sure).

  • People might choose different modes of transit to get to their final destination depending on the season, time of day, their mood, and the alignment of the stars. They might bike in the summer, and in the winter take a bus during rush hour, or drive if it's a weird (i.e. non-rush hour) time.

  • One fine day, a whole bunch of people from all over might be interested in attending the same air show/Hungarian festival/llama parade.

Even if the CTA waved a magical wand (in a union-approved fashion, obviously), read every single rider's mind one evening, figured out their itineraries for the next day, and completely re-organized all their fixed routes to optimally[1] accommodate the day's transit needs given their stock of buses and drivers, it still wouldn't be that useful. The next day, everything would change again!

at this time, please open your favorite media player and start some overly dramatic/cheesy music What are we to do? Is there no hope? Are we stuck with this naive, frustrating, and inefficient way of using our buses? In a word: no! Stay tuned for our next installment; if you want to work ahead, I'd suggest watching some X-Files reruns.

[1] "Optimally" is surprisingly difficult to define in cases like these, and often boils down to what exactly you want to optimize. You can't have it all. For example, you can either minimize the average length of every rider's trip, or minimize the amount of time every rider has to wait before the bus arrives, but not both. For more details than you could ever want to know, as usual, see Wikipedia.