Skip to content

Commit

Permalink
esups and readme
Browse files Browse the repository at this point in the history
  • Loading branch information
yurchisin committed Nov 11, 2024
1 parent 9acb35a commit 1649171
Show file tree
Hide file tree
Showing 6 changed files with 10,551 additions and 38 deletions.
48 changes: 11 additions & 37 deletions optimization202/ESUPS_case_study/README.md
Original file line number Diff line number Diff line change
@@ -1,46 +1,20 @@
# Technician Assignment With Mathematical Optimization
# Emergency Supply Prepositioning Strategy (ESUPS) Case Study

To reduce gaps and overlaps in emergency preparedness, [ESUPS](https://esups.org/) promotes coordinated prepositioning of emergency supplies and collective logistics strategies.

## 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
By using scenario-based transportation linear programming model, the model resource allocation and logistics decisions, providing quantitative metrics to evaluate and improve humanitarian operations.

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](technician_routing.ipynb) 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.
- There are two versions of this notebook: a partial version ([resource_assignment](resource_assignment.ipynb))
that can be used for teaching, and one with the complete description, formulation, and the code ([resource_assignment_complete](resource_assignment_complete.ipynb)).
- The [data-Sce0.xlsx](data-Sce0.xlsx) is the input used for the _Technician Routing_ model.
- The [routes.csv](routes.csv) and [orders.csv](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 a Gurobi license can run the model (check out [License Requirement](#license-requirement) section for more info about the license).
- How much of each supply to store in certain locations
- How to respond to disaster events at minimal cost

## Google Colab
If you like to access the notebooks in Google Colab, click:
- [technician_routing](https://colab.research.google.com/github/decision-spot/technician_assignment/blob/main/technician_routing.ipynb)
- [resource_assignment](https://colab.research.google.com/github/decision-spot/technician_assignment/blob/main/resource_assignment_complete.ipynb)
[Google Colab Link - ESUPS Case Study](https://colab.research.google.com/github/Gurobi/modeling-examples/blob/master/optimization202/ESUPS_case_study/disaster_prepositioning.ipynb)

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](https://www.gurobi.com/downloads/).
The data used in the models is small enough to run the model with a Gurobi restricted license
(available via `pip install gurobi` as shown in the notebook).
----
For details on licensing or on running the notebooks, see the overview on [Modeling Examples](../../)

© Gurobi Optimization, LLC
10,537 changes: 10,537 additions & 0 deletions optimization202/ESUPS_case_study/disaster_prepositioning.ipynb

Large diffs are not rendered by default.

Binary file modified optimization202/Gurobi-Training-Opti-202.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions optimization202/Modeling_Session_1/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ We also put **completed** versions of the modeling notebook and the exercise in


## Exercise Set 1 Notebook Links
Note that you must sign in with a Google account to be able to run the code in Colab.

[Google Colab Link - Exercise *without* answers](https://colab.research.google.com/github/Gurobi/modeling-examples/blob/master/optimization202/Modeling_Session_1/exercise_set1.ipynb)

Expand Down
1 change: 1 addition & 0 deletions optimization202/Modeling_Session_2/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ We also put **completed** versions of the modeling notebook and the exercise in


## Exercise Set 2 Notebook Links
Note that you must sign in with a Google account to be able to run the code in Colab.

[Google Colab Link - Exercise *without* answers](https://colab.research.google.com/github/Gurobi/modeling-examples/blob/master/optimization202/Modeling_Session_2/exercise_set2.ipynb)

Expand Down
2 changes: 1 addition & 1 deletion optimization202/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
The material is from the [Optimization 202 for Data Scientists](https://www.gurobi.com/events/optimization-203-for-data-scientists/) training, which consists of two modeling examples and a culminating use case.
You can review the Jupyter Notebooks here. For all examples, a completed version is available. If you want to test yourself and try out some of the exercises, you should start with the not-completed-versions of the notebooks and then compare with the completed versions.

- Resources for the first [hands-on exercises](Modeling_Session_1)
- Resources for the **first** [hands-on exercises](Modeling_Session_1)

- Resources for the **second** [hands-on exercises](Modeling_Session_2)

Expand Down

0 comments on commit 1649171

Please sign in to comment.