diff --git a/algorithm/README.md b/algorithm/README.md index f40a55b8..0bb231d9 100644 --- a/algorithm/README.md +++ b/algorithm/README.md @@ -1,23 +1,16 @@ # Algoritme -Algoritmen baserer seg på MIP-programmering (Mixed Integer Linear Programming). +**mip_matching** er en pakke for å tildele intervjutider til søkere basert på ledige tider for søkere og komitéer. + +Algoritmen baserer seg på MIP-programmering (Mixed Integer Linear Programming). Se [Modellering.md](./src/Modellering.md) for detaljer. ## Setup Python Venv ```bash cd algorithm python -m venv ".venv" -``` - -``` .\.venv\Scripts\activate pip install -e . pip install -r requirements.txt +pip install pymongo[srv] ``` - -## TODOs - -- [x] Lage funksjon som deler opp fra en komités slot -- [x] Sette opp begrensningene fra modelleringen -- [ ] Flikke litt på modelleringen. -- [ ] Finn ut hvordan man kan preprosessere dataen for å få ned kjøretiden (f. eks ved å lage lister av personer for hver komité.) diff --git a/algorithm/src/Modellering.md b/algorithm/src/Modellering.md index 30fc6439..9f1ab19b 100644 --- a/algorithm/src/Modellering.md +++ b/algorithm/src/Modellering.md @@ -1,11 +1,4 @@ -# Modellering av problem gjennom Mixed Integer Linear Programming - -## Nyttige ressurser - -- https://python-mip.readthedocs.io/en/latest/quickstart.html -- https://towardsdatascience.com/mixed-integer-linear-programming-1-bc0ef201ee87 -- https://towardsdatascience.com/mixed-integer-linear-programming-formal-definition-and-solution-space-6b3286d54892 -- https://www.gurobi.com/resources/mixed-integer-programming-mip-a-primer-on-the-basics/ +# Modellering av møtetildelingsproblem gjennom Mixed Integer Linear Programming ## Variabler @@ -19,7 +12,7 @@ `t` -- Timeslot (Må gjøres til intervaller etter hvert) +- Timeslot `m(p, k, t)` @@ -55,8 +48,15 @@ For alle `k`: ## Mål -Maksimere `sum(m(p, k, t))` for alle `p`, `k` og `t` +Maksimere `sum(m(p, k, t))` for alle `p`, `k` og `t`. Altså: Maksimere antall intervjuer som tildeles. ### Sekundærmål -- [Ikke enda implementert] La det være færrest mulig og minst mulig mellomrom mellom intervjuene for komitéene. +- La intervjuene klumpe seg rundt klokken 12 og dermed også minske hvor mange hull komitéene får i sin intervjuplan. + +## Nyttige ressurser + +- https://python-mip.readthedocs.io/en/latest/quickstart.html +- https://towardsdatascience.com/mixed-integer-linear-programming-1-bc0ef201ee87 +- https://towardsdatascience.com/mixed-integer-linear-programming-formal-definition-and-solution-space-6b3286d54892 +- https://www.gurobi.com/resources/mixed-integer-programming-mip-a-primer-on-the-basics/