In this project, we optimize a schedule for a conference based on time/room constraints and attendance preferences of the users.
This project is only a backend in which the actual solving is done.
The interaction with a graphical frontend is done via import/export of json
files.
The general workflow is:
- Read in the constraints from a
.json
file. The input format is specified on this wiki page. - Construct an integer linear program (ILP) from the constraints using PuLP. The ILP formulation is described on this wiki page.
- Solve the ILP using a solver supported by PuLP, e.g. HiGHS or Gurobi.
- Output the solution into a
.json
file. The output format is specified on this wiki page.
To install this project, simply run
$ pip install git+https://github.com/Die-KoMa/ak-plan-optimierung.git
To run the solver, simply call
$ python -m akplan.solve PATH_TO_JSON_INPUT
For a list of available cli options, run python -m akplan.solve --help
.
For a development setup, clone this repository and run pip install -e .
in the repository directory.
Further, install the tool nox
.
To see all available nox
sessions, run nox --list
:
* test -> Run pytest on all test cases.
* fast-test -> Run pytest on fast test cases.
* lint -> Check code conventions.
* typing -> Check type hints.
* format -> Fix common convention problems automatically.
* coverage -> Check test coverage and generate a html report.
* coverage-clean -> Remove the code coverage website.
A session can then be called via nox -s <session_name>
.