/technician_assignment

Technician routing and resource assignment using mathematical optimization

Primary LanguageJupyter NotebookApache License 2.0Apache-2.0

Technician Assignment With Mathematical Optimization

Problem

You are consulting for a telecom company that dispatches technicians to perform various tasks for customers, ranging from equipment installations and setups to repairs. Considering various constraints such as:

  • Technician availability
  • Skillset matching
  • Customer time window
  • Service priority
  • Start and return of technicians to the central depot
  • Limited resources/vans

The goal is to decide:

  • Which technicians are assigned to which customers and in what sequence?
  • How to allocate the limited resources, ensuring each technician has access to a van?

We use a two-step solution approach, using Mathematical Optimization (MO) in both, to solve this problem.

Repo Guide

  • The first model is called Technician Routing where we decide which technicians are assigned to which customers and in what sequence. This model is described and solved in the technician_routing notebook.
  • The second model is called Resource Assignment where we decide which technicians should be assigned to which vans. This model is described and solved in the resource_assignment notebook.
  • The data-Sce0.xlsx is the input used for the Technician Routing model.
  • The routes.csv and orders.csv are the outputs of Technician Routing model and are used as inputs for the Resource Assignment model. Of course, you can run the technician_routing notebook and or even modify it as you please to get new results. Ensure the format of the output is similar in case you like to use the resource_assignment notebook afterward.

The model size is intentionally small to ensure even those without access to Gurobi license can run the model (check out License Requirement section for more info about the license).

Google Colab

If you like to access the notebooks in Google Colab, click:

Note that you must sign in with a Google account to be able to run the code in Colab.

License Requirement

The problem is modeled using Gurobi Python API. So, a Gurobi license is required to run this model. If you don't have a license, you can request a free commercial evaluation license or a free academic license here. The data used in the models is small enough to run the model with gurobi restricted license (available via pip install gurobi as shown in the notebook).