❮ Projects School Bus Routing Optimization

Azavea recently worked with the School District of Philadelphia on a project to investigate the benefits of using an algorithm to create an optimized bus routing plan the school system. If implemented well, this type of optimization could lead to dramatic financial and time savings for the district and local students, respectively. Azavea conducted an analysis using OptaPlanner as a general constraint solver and OpenTripPlanner for vehicle routing. This effort has been open-sourced in the interest of creating a reproducible bus routing tool for school districts across the country.

The objectives of this project are three-fold:

  1. Augment solver functionality
  2. Analyze results
  3. Develop tool



In the beginning of the project you will prepare by:

  • Familiarization with existing BusPlan code
  • Explore the pros and cons of migrating project from OptaPlanner to Google Optimization Tools or some other framework
  • Create a roadmap

Coding Phase 1:

In this phase you will augment the existing solver functionality.

  • Parameterize a series of additional variables (e.g. bus fleet size and capacity, student age)
  • Enable solver to account for additional constraints (e.g. students with special needs)
  • Incorporate tiering (i.e. the ability for one bus to transport students to multiple different schools)

Coding Phase 2:

This coding phase focuses on analyzing results. You will conduct iterative small research projects that provide insight into solver results and inform decisions about additional features of the solver. Here are examples of some questions that may be investigated:

  • How do metrics differ for plans optimized for student ride time as opposed to overall bus time?
  • How does removing students who are geographical outliers affect overall student ride time?
  • What is the added benefit of creating new bus stops from existing intersections?

Coding Phase 3:

Help convert current work into a first-class open-source tool.

  • (Possibly) move to new optimization framework
  • Focus on algorithmic and engineering quality: should scale to large problems
  • Develop input data guidelines
  • Automate each step in data processing pipeline
  • Create documentation
  • Python
  • Java or Scala preferred
  • C/C++ may be helpful, depending on approach
  • Experience with discrete optimization a big plus
  • Experience with graph algorithms a plus
  • Knowledge of spatial statistics a plus

very challenging

Until next time

The fellowship is taking a hiatus for Summer 2021.

Azavea will not be running the Open Source Fellowship in Summer 2021. Sign up for notifications about future opportunities.