Team: psychos John Wang (jrwang2) Eric Oh (ehoh) Christina Yao (yuanyao2) Eric Fan (ericfan)

Inspiration

Have you ever sat at a bus stop for 15 minutes, watching 5 buses zoom by in the other direction, only to miss the bus when it finally arrives due to lack of space? The Pittsburgh bus schedule is fixed every time of day, every day of the year, with no adaptations for the activity of passengers, making it very inefficient. So, we were inspired to present a new approach to the bus scheduling system using a learning algorithm to drastically improve efficiency.

What it does

Our app collects data about activity at all bus stops at various times throughout the day throughout the year. It then uses this data to alter bus times, by varying the departure times, selecting the appropriate bus sizes, as well as sending out more buses as needed. These modifications are chosen by running a learning algorithm that uses the past data to adapt throughout the year.

How we built it

First, we determined the best way to get the input data of passenger activity. We decided to collect the amount of time spent waiting at each stop throughout the day, since that would most accurately represent which stops are the highest priority, and directly targets our goal of saving passenger time.

For the algorithm aspect, we implemented a weighted regression model to assign priority values for each bus stop based on the passenger activity data. Given limited resources each day, the model adjusts the departure time of the buses, number of buses sent out, and the bus sizes to minimize the weighted squares value of the data. On a high level, we input a matrix of passenger counts at each bus stop throughout the day, and the model outputs the new bus schedule, bus sizes, and number of buses by assigning weights to each bus stop point. Throughout the year, these weights change depending on new data.

Challenges we ran into

One challenge we ran into was that there wasn’t enough data. Also, due to the limited amount of time, we couldn’t think of a good way to take special occasions into account, which is an area for further development. For example, we weren’t sure how to deal with holidays or unexpected traffic delays in a good way, since our algorithm takes time to adapt.

Accomplishments that we're proud of

Coming up with an algorithm that is able to adapt by itself to the needs of the community throughout the year, that doesn’t require extreme attention to the many factors that may affect bus scheduling. Although we don’t produce the perfectly optimal scheduling, we were able to come up with an idea that is much more efficient than the current system, which could provide great benefits for our community.

What we learned

We learned about weighted statistical learning models, and how to combine large amounts of data to produce an appropriate, efficient output for our problem. Also, we were able to better understand working on projects as a team, and improve our coordination and collaboration skills. Finally, we gained more insight into how buses work in Pittsburgh.

What's next for Bussin

One potential idea we have for the future is to convert buses that have intersecting paths to new paths in order to accomodate the one with higher priority, which would require a lot more complexity. Also, we could figure out a way to account for outliers or special occasions, potentially by considering historical data from past years, or by adding a override feature to manually schedule buses during those events.

Built With

Share this project:

Updates