Skip to content

Commit

Permalink
docs(algorithm): update docs
Browse files Browse the repository at this point in the history
  • Loading branch information
jorgengaldal committed Sep 14, 2024
1 parent 0ff5cb5 commit efce61c
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 24 deletions.
15 changes: 4 additions & 11 deletions algorithm/README.md
Original file line number Diff line number Diff line change
@@ -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é.)
22 changes: 11 additions & 11 deletions algorithm/src/Modellering.md
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -19,7 +12,7 @@

`t`

- Timeslot (Må gjøres til intervaller etter hvert)
- Timeslot

`m(p, k, t)`

Expand Down Expand Up @@ -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/
4 changes: 2 additions & 2 deletions algorithm/src/mip_matching/match_meetings.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,8 @@ def match_meetings(applicants: set[Applicant], committees: set[Committee]) -> Me
clustering_objectives.append(
CLUSTERING_WEIGHT * relative_distance_from_baseline * variable) # type: ignore

# Setter mål til å være maksimering av antall møter
# med sekundærmål om å samle intervjuene rundt CLUSTERING_TIME_BASELINE
# Setter mål til å være maksimering av antall møter
# med sekundærmål om å samle intervjuene rundt CLUSTERING_TIME_BASELINE
model.objective = mip.maximize(
mip.xsum(m.values()) + mip.xsum(clustering_objectives))

Expand Down

0 comments on commit efce61c

Please sign in to comment.