We were inspired by Braess's Paradox - the phenmenon that adding a road segment to a network can actually increase overall travel times, because of the tragedy of the commons. It follows that deleting certain road segments can decrease overall travel time. This phenomenon has been repeatedly observed in the world, such as with the Cheonggyecheon Bridge in Seoul, South Korea, the road network in Stuttgart, Germany, or 42nd Street in New York City.
The benefits of doing so are varied. Americans spent 8.8 billion hours stuck in traffic in 2017, for a total financial cost to the nation of $166 billion. The trends are only getting worse; by 2020 the costs are projected to rise to $200 billion. Baltimoreans suffer particularly due to traffic congestion; our city ranks 22nd-highest in amount of time motorists spend in traffic. The cost to each motorist is 59 hours, 22 gallons of gasoline, and $960 wasted per year.
Innovative and novel solutions are needed. Braess's Paradox results in inefficiencies that can up to double overall travel time in a network, so isolating and removing roads that are contributing to congestion can help alleviate traffic congestion. These road segments can be converted to pedestrian-friendly streets and plazas, which can make neighborhoods less congested, more small-business friendly, and more human-centric!
What it does
StreetSmart is a tool to identify real-world streets like the one in Braess's Paradox, which would improve overall traffic conditions if removed.
How we built it
We began by finding open source road map data that was query-able by address. We decided that OSMnx--a Python package for interfacing with Open Street Maps--was the best way to conduct our queries and eventually build our dynamic overlay maps. Next, it was necessary to construct a reasonable model for traffic. We reviewed resources on traffic modeling, formulated the problem, and began experimenting with Python.
Once we had a working traffic model with actionable results, the next task was to deploy our tool to the Web. Luckily, with the help of Google Cloud, we were able to set up a virtual machine to run our service.
Challenges we ran into
We were presented with three major challenges:
- Coming up with a realistic model. We applied intuitive principles ("conservation of cars") to make sure our model reflected the theory and reality of cities.
- Optimizing our algorithms to enable real-time results. We rewrote a large portion of our Python code in C++, achieving 100x speedups.
- Overcoming deficiencies in libraries. For instance, the library OSMnx had limited interoperability with Folium. We had to modify some functions to enable road coloring.
Accomplishments that we're proud of
We are proud to have created an end-to-end solution that works. To our knowledge, this is the first open traffic modelling tool specifically aimed at addressing Braess's paradox. We hope our tool can help cities transition towards more pedestrian-friendly, community-centered, social layouts.
What we learned
- Overlap between computing problems and social problems
- C++ is much faster than Python
- How to use Google Cloud to host a web service
What's next for StreetSmart
StreetSmart relies on OSMnx to interact with Open Street Maps. However, OSMnx uses a graph middleman package: NetworkX. NetworkX provides a lot of unnecessary functionality and makes the final steps of our graph processing slow for large areas. We would hope to reduce wait time for generating dynamic maps by implementing our own graph library, likely in a lower level language.