Modell for fagdager
- 6. August 2021
- #optimization
På arbeidsplassen min arrangerer en fagdag hver måned. En god fagdag inneholder et emne som mange personer ønsker å lære mer om (Open Banking API, Kubernetes, React, Maskinlæring, etc). Samtidig er det viktig at noen har kunnskap om emnet og et ønske om å undervise i det. Bildet nedenfor er fra en fagdag der jeg snakket om maskinlæring.
I denne artikkelen presenterer jeg en optimeringsmodell som vi brukte som utgangspunkt for å planlegge fagdager i fremtiden. Vi kan konstruere en god plan ved å formulere problemet som et optimeringsproblem (et såkalt Integer Program). Modellen gjør to ting:
- Den velger hvilke emner som det blir fagdager av, og hvilke emner det ikke var nok interesse for.
- Den utnevner personer til å arrangere de ulike fagdagene (undervise i de ulike emnene).
Vi indekserer relevante emner for fagdager med \(i\) og personer med \(j\). Basert på en spørreundersøkelse kan vi avdekke interessen som person \(j\) har for å delta på en fagdag innenfor emne \(i\). Vi kaller dette for \(d_{ij}\). På samme måte bruker vi en spørreundersøkelse til å avdekke \(a_{ij}\), som er interessen som person \(j\) har for å arrangere en fagdag innenfor emne \(i\).
Krav til planen
For å lage en plan trenger vi en målfunksjon å maksimere, samt noen betingelser.
-
Vi definerer \(y_i \in \{ 0, 1 \}\) til å være lik \(1\) hvis emne \(i\) er valgt (mer om dette nedenfor). Hvis et emne er valgt slik at \(y_i = 1\), er gevinsten lik den totale interessen for å delta på en fagdag om emne \(i\). Vi maksimerer derfor følgende:
\begin{align*} \sum_i y_j \sum_j d_{ij} \end{align*} -
Definer \(x_{ij} \in \{ 0, 1 \}\) slik at \(x_{ij} = 1\) hvis person \(j\) skal arrangere fagdag i emne \(i\). Om et emne velges skal \(p=2\) personer avholde fagdagen. Her definerer vi også \(y_i \in \{ 0, 1 \}\) til å være lik \(1\) hvis emne \(i\) er valgt.
\begin{align*} \sum_j x_{ij} = p y_i \quad \forall \, i \end{align*} -
Hver person skal maksimalt avholde \(k=2\) fagdager:
\begin{align*} \sum_i x_{ij} \leq k \quad \forall \, j \end{align*} -
La \(a_{ij} \in \{ 0, 1 \}\) være interessen som person \(j\) har for å arrangere fagdag innenfor emne \(i\). Vi ønsker at alle de \(p\) personene som avholder fagdagen skal være interesserte i emnet:
Modell
Den komplette modellen blir:
I andre situasjoner trenger man litt andre betingelser. Å modellere noe som dette blir ofte en iterativ prosess, men modellen ovenfor er et bra utgangspunkt.