This repository contains a MILP for an appointment scheduler developed for the 'seminar applied optimization' at University of Bern.
Note that in the source code, the entity for a service is 'Queue'. This is because I want to add some properties of queues to make the time-slot assignments more fair.
You can find more details in the presentation file.
this project uses python 3.11. If you don't have python 3.11 installed, you may want to run it in docker (see at the bottom of this file)
First, make sure you have a (virtual) environment up and running. Pipenv the preferred way. In this case, just run
pipenv install
For any other case, there is also a generated requirements.txt
file
python main.py
python scenario_concentrated_on_500.py
python scenario_no_preferences.py
python scenario_random_concentration.py
python scenario_random_intervals.py
You will get the solution as console output and plots (see the out/
directory!)
It is also possible to run within docker. However, if you don't map a directory to out/
, you will not be able to view the plots.
First: Build image
docker build . -t appointment-scheduler
Then, run either completely isolated
docker run -it --entrypoint bash appointment-scheduler
Or with a directory (here, your current working directory) to the out directory to get the plots
docker run -it --entrypoint bash -v ${PWD}:/app/out/ appointment-scheduler
Pipenv is used for managing dependencies. However, we can extract a requirements.txt file for users who would like to use another environment.
pipenv requirements > requirements.txt