Skip to content
README.md 3.83 KiB
Newer Older
Alexander Hess's avatar
Alexander Hess committed
# Urban Meal Delivery

This repository holds code
analyzing the data of an undisclosed urban meal delivery platform (UDP)
Alexander Hess's avatar
Alexander Hess committed
operating in France from January 2016 to January 2017.
The goal is to
optimize the platform's delivery process involving independent couriers.

The analysis is structured into the following stages
Alexander Hess's avatar
Alexander Hess committed
that iteratively build on each other.


### Data Cleaning

The UDP provided its raw data as a PostgreSQL dump.
Alexander Hess's avatar
Alexander Hess committed
This [notebook](https://nbviewer.jupyter.org/github/webartifex/urban-meal-delivery/blob/main/research/01_clean_data.ipynb)
cleans the data extensively
Alexander Hess's avatar
Alexander Hess committed
and maps them onto the [ORM models](https://github.com/webartifex/urban-meal-delivery/tree/main/src/urban_meal_delivery/db)
defined in the `urban-meal-delivery` package
Alexander Hess's avatar
Alexander Hess committed
that is developed in the [src/](https://github.com/webartifex/urban-meal-delivery/tree/main/src) folder
and contains all source code to drive the analyses.

Due to a non-disclosure agreement with the UDP,
neither the raw nor the cleaned data are published as of now.
Alexander Hess's avatar
Alexander Hess committed
However, previews of the data can be seen throughout the [research/](https://github.com/webartifex/urban-meal-delivery/tree/main/research) folder.
### Tactical Demand Forecasting

Before any optimizations of the UDP's operations are done,
a **demand forecasting** system for *tactical* purposes is implemented.
To achieve that, the cities first undergo a **gridification** step
where each *pickup* location is assigned into a pixel on a "checker board"-like grid.
Alexander Hess's avatar
Alexander Hess committed
The main part of the source code that implements that is in this [file](https://github.com/webartifex/urban-meal-delivery/blob/main/src/urban_meal_delivery/db/grids.py#L60).
Visualizations of the various grids can be found in the [visualizations/](https://github.com/webartifex/urban-meal-delivery/tree/main/research/visualizations) folder
and in this [notebook](https://nbviewer.jupyter.org/github/webartifex/urban-meal-delivery/blob/main/research/03_grid_visualizations.ipynb).

Then, demand is aggregated on a per-pixel level
and different kinds of order time series are generated.
The latter are the input to different kinds of forecasting `*Model`s.
They all have in common that they predict demand into the *short-term* future (e.g., one hour)
and are thus used for tactical purposes, in particular predictive routing (cf., next section).
The details of how this works can be found in the first academic paper
published in the context of this research project
and titled "*Real-time Demand Forecasting for an Urban Delivery Platform*"
(cf., the [repository](https://github.com/webartifex/urban-meal-delivery-demand-forecasting) with the LaTeX files).
Alexander Hess's avatar
Alexander Hess committed
All demand forecasting related code is in the [forecasts/](https://github.com/webartifex/urban-meal-delivery/tree/main/src/urban_meal_delivery/forecasts) sub-package.

### Predictive Routing

### Shift & Capacity Planning


## Installation & Contribution

To play with the code developed for the analyses,
you can clone the project with [git](https://git-scm.com/)
and install the contained `urban-meal-delivery` package
and all its dependencies
in a [virtual environment](https://docs.python.org/3/tutorial/venv.html)
with [poetry](https://python-poetry.org/docs/):

`git clone https://github.com/webartifex/urban-meal-delivery.git`

and

`poetry install --extras research`
Alexander Hess's avatar
Alexander Hess committed

The `--extras` option is necessary as the non-develop dependencies
Alexander Hess's avatar
Alexander Hess committed
are structured in the [pyproject.toml](https://github.com/webartifex/urban-meal-delivery/blob/main/pyproject.toml) file
into dependencies related to only the `urban-meal-delivery` source code package
and dependencies used to run the [Jupyter](https://jupyter.org/) environment
with the analyses.
Alexander Hess's avatar
Alexander Hess committed

Contributions are welcome.
Use the [issues](https://github.com/webartifex/urban-meal-delivery/issues) tab.
Alexander Hess's avatar
Alexander Hess committed
The project is licensed under the [MIT license](https://github.com/webartifex/urban-meal-delivery/blob/main/LICENSE.txt).