Hopp til hovedinnhold

Tildeling av praksisplasser

Denne veilederen viser hvordan man kan bruke Alloker til å fordele praksisplasser til studenter på en effektiv og rettferdig måte. Fordelen med å bruke en algoritme er at studentene behandles objektivt og likt, beregningen er rask og resultatet blir ofte mye bedre enn hva man kan håpe å få til manuelt.

I Norge er det omlag 14 000 sykepleierstudenter og 16 000 lærerstudenter, og disse gjennomfører praksis i løpet av studiet. Andre studentgrupper har også praksis, f.eks. noen ingeniørstudenter.

Problemstillingen er også svært lik andre som oppstår i utdanningssektoren:

  • Elever til valgfag (f.eks. språk på ungdomsskolen)
  • VGS-elever til praksisplasser (Restaurant- og matfag, Elektro og datateknologi, osv.)
  • Forelesere til fag
  • Studenter til seminargrupper

Nedenfor skisseres én mulig fremgangsmåte, men det er ingen absolutt fasit. Det kan f.eks. være naturlig å fordele studenter som har søkt om tilrettelegging før resten av studentene, og man kan velge å innhente studentenes preferanser via et spørreskjema eller å lage preferanser indirekte basert på reisevei, og så videre.

Uansett kan Alloker hjelpe med å finne en god fordeling av praksisplasser. Om du har en spesifikk problemstilling du vil diskutere, så er det bare å ta kontakt.

Bilde av studenter

Praksisplasser

La oss se på et fiktivt eksempel. Vi velger et lite eksempel av pedagogiske grunner, men eksempelet må samtidig være stort nok til å vise at en manuell fordeling ville vært krevende. I virkeligheten kan Alloker håndtere tusenvis av studenter på noen sekunder.

Anta at vi har følgende ledige praksisplasser til sykepleierstudenter:

  • Nordåsen sjukeheim (kapasitet: 4)
  • Fjordklinikken psykisk helse (kapasitet: 2)
  • Bergly omsorgssenter (kapasitet: 2)
  • Havblikk helsestasjon (kapasitet: 3)

Studentenes preferanser

Vi ber hver student rangere praksisplassene. Denne rangeringen kan studentene basere på reisetid, praksisplassens rykte, eller andre faktorer som de opplever som relevante. Når vi bruker en algoritme er det ingen grunn til å ikke la studentene oppgi så mange preferanser som mulig - da får studentene mer valgfrihet. En student som er likegyldig kan oppgi en tilfeldig rangering. Studiestedet kan også velge å ikke innhente preferanser i det hele tatt, men heller lage disse for studentene basert på reisevei og andre faktorer.

Her er et fiktivt eksempel som viser 10 studenters rangerte preferanser. Dette er JSON-formatet som APIet bruker, men du kan også laste opp en Excel-fil heller enn å bruke APIet.

[
  {"id": "Anna",   "preferences": ["Fjordklinikken", "Havblikk", "Nordåsen", "Bergly"]},
  {"id": "Oscar",  "preferences": ["Fjordklinikken", "Nordåsen", "Bergly", "Havblikk"]},
  {"id": "Lea",    "preferences": ["Bergly", "Fjordklinikken", "Havblikk", "Nordåsen"]},
  {"id": "Maria",  "preferences": ["Fjordklinikken", "Havblikk", "Bergly", "Nordåsen"]},
  {"id": "Elias",  "preferences": ["Bergly", "Nordåsen", "Fjordklinikken", "Havblikk"]},
  {"id": "Marcus", "preferences": ["Nordåsen", "Fjordklinikken", "Havblikk", "Bergly"]},
  {"id": "Eva",    "preferences": ["Bergly", "Fjordklinikken", "Havblikk", "Nordåsen"]},
  {"id": "Sara",   "preferences": ["Fjordklinikken", "Bergly", "Havblikk", "Nordåsen"]},
  {"id": "Emma",   "preferences": ["Havblikk", "Bergly", "Fjordklinikken", "Nordåsen"]},
  {"id": "Lucas",  "preferences": ["Bergly", "Havblikk", "Fjordklinikken", "Nordåsen"]}
]

Figuren nedenfor visualiserer studentenes preferanser. Klarer du å finne den beste løsningen ved prøving og feiling? Det er mulig å gi 6 studenter førsteønsket og 4 studenter andreønsket.

Visualisering av preferansematrise

Velg tilnærming og løs problemet

Med en algoritme må man ta et bevisst valg om hvilken forståelse av rettferdighet som ligger til grunn for allokeringen. Gjerne les litt om algoritmenes egenskaper før du bestemmer deg. Ettersom det er flere muligheter, viser vi tre:

  • Ingen rangering av studentene - målet er å gjøre så mange som mulig fornøyde, uansett hvem de er
  • Felles rangering av studentene - de med høyest karaktersnitt prioriteres først
  • Individuell rangering av studentene - hver praksisplass får rangere studentene som de vil

Ingen rangering av studentene

Vi kan behandle alle studentene helt likt og maksimere samlet tilfredshet med allokeringen. Da er Optimal allokering et utmerket valg. Algoritmen vil gjøre studentene så fornøyde som mulig i sum.

Input-formatet krever at gruppene må rangere studentene, men med person_weight=1 vil denne rangeringen være helt vilkårlig og i praksis bli ignorert.

{"data": {
"persons": [
  {"id": "Anna",   "preferences": ["Fjordklinikken", "Havblikk", "Nordåsen", "Bergly"]},
  {"id": "Oscar",  "preferences": ["Fjordklinikken", "Nordåsen", "Bergly", "Havblikk"]},
  {"id": "Lea",    "preferences": ["Bergly", "Fjordklinikken", "Havblikk", "Nordåsen"]},
  {"id": "Maria",  "preferences": ["Fjordklinikken", "Havblikk", "Bergly", "Nordåsen"]},
  {"id": "Elias",  "preferences": ["Bergly", "Nordåsen", "Fjordklinikken", "Havblikk"]},
  {"id": "Marcus", "preferences": ["Nordåsen", "Fjordklinikken", "Havblikk", "Bergly"]},
  {"id": "Eva",    "preferences": ["Bergly", "Fjordklinikken", "Havblikk", "Nordåsen"]},
  {"id": "Sara",   "preferences": ["Fjordklinikken", "Bergly", "Havblikk", "Nordåsen"]},
  {"id": "Emma",   "preferences": ["Havblikk", "Bergly", "Fjordklinikken", "Nordåsen"]},
  {"id": "Lucas",  "preferences": ["Bergly", "Havblikk", "Fjordklinikken", "Nordåsen"]}
],
"groups": [
{"id": "Nordåsen",       "capacity": 4, "priorities": []},
{"id": "Fjordklinikken", "capacity": 2, "priorities": []},
{"id": "Bergly",         "capacity": 2, "priorities": []},
{"id": "Havblikk",       "capacity": 3, "priorities": []}
]},
"parameters": {"person_weight": 1}
}

Med 10 studenter og totalt 11 plasser er det stor konkurranse. Her er resultatet, som får mange inn på sitt førstevalg:

{"Anna":   "Fjordklinikken",  # <- 1. ønske
 "Oscar":  "Nordåsen",        # <- 2. ønske
 "Lea":    "Bergly",          # <- 1. ønske
 "Maria":  "Havblikk",        # <- 2. ønske
 "Elias":  "Nordåsen",        # <- 2. ønske
 "Marcus": "Nordåsen",        # <- 1. ønske
 "Eva":    "Bergly",          # <- 1. ønske
 "Sara":   "Fjordklinikken",  # <- 1. ønske
 "Emma":   "Havblikk",        # <- 1. ønske
 "Lucas":  "Havblikk"         # <- 2. ønske
}

Her er løsningen visualisert:

Visualisering av preferansematrise

Felles rangering av studentene

Vi kan bruke én felles rangering av alle studentene dersom vi mener at noen studenter bør prioriteres foran andre. I noen sammenhenger kan det være naturlig å tenke at studentene med høyest karaktersnitt skal prioriteres.

Da lar vi alle de fire gruppene rangere studentene etter en felles rangering. Det har ikke noe å si om vi bruker Utsatt aksept eller Bytteringer. Begge algoritmene gir samme resultat når rangeringen til gruppene er lik, og fungerer slik:

  1. Innfri det høyeste ønsket, som har ledig plass, til studenten med høyest karaktersnitt
  2. Ta bort studenten som ble tildelt plass, oppdater kapasiteten i gruppen, og gå til neste person

Dersom vi antar at Anna har høyest karaktersnitt, deretter Oscar, deretter Lea, osv., så får vi følgende resultat:

{"Anna":   "Fjordklinikken",  # <- 1. ønske
 "Oscar":  "Fjordklinikken",  # <- 1. ønske
 "Lea":    "Bergly",          # <- 1. ønske
 "Maria":  "Havblikk",        # <- 2. ønske
 "Elias":  "Bergly",          # <- 1. ønske
 "Marcus": "Nordåsen",        # <- 1. ønske
 "Eva":    "Havblikk",        # <- 3. ønske
 "Sara":   "Havblikk",        # <- 3. ønske
 "Emma":   "Nordåsen",        # <- 4. ønske
 "Lucas":  "Nordåsen"         # <- 4. ønske
}

Legg merke til at de med lavt karaktersnitt ender opp med 3. og 4. plass. Å basere seg på karaktersnitt ofrer den kollektive forståelsen av rettferdighet til fordel for å prioritere de med høyt karaktersnitt. Disse to tenkemåtene er ofte i konflikt, og det er også tilfellet i dette eksempelet. Faktisk er eksempelet bevisst valgt for å illustrere denne konflikten.

Bilde av studenter

Individuell rangering av studentene

Et tredje alternativ er å la praksisplassene gjøre en individuell rangering av studentene. Kanskje de ville ha vektlagt karakterer i enkeltfag, studentenes alder, eller noe annet?

I en slik modell kan alle tre algoritmene være aktuelle:

Valget bør baseres på egenskapene man ønsker fra løsningen, heller enn hva det spesifikke resultatet blir. Om du trenger hjelp til å velge algoritme for din situasjon, så er det bare å ta kontakt.

Personlig ville jeg nok valgt Bytteringer, fordi den har to egenskaper som er gode i denne sammenhengen:

  • Den er strategisikker, så studentene kan trygt oppgi sine ekte preferanser. Det er helt umulig å oppnå et bedre resultat ved å lyve, f.eks. ved å oppgi et litt upopulært valg som førsteønske i håp om å “kapre plassen”. (Dette er teoretisk mulig med Optimal allokering, men i praksis ofte vanskelig å få til: å forsøke å manipulere resultatet ved å lyve kan slå tilbake på studenten som prøver seg.)
  • Den er Pareto-optimal, som betyr at det aldri vil være to eller flere studenter som innbyrdes kunne ha byttet praksisplass og begge ville blitt mer fornøyde. Det vil aldri skje at f.eks. Elias prater med Sara og de to finner ut at de ønsker hverandres praksisplasser.

Her er et eksempel der praksisplassene oppgir litt ulik preferanse for studentene.

{"data": {
"persons": [
  {"id": "Anna",   "preferences": ["Fjordklinikken", "Havblikk", "Nordåsen", "Bergly"]},
  {"id": "Oscar",  "preferences": ["Fjordklinikken", "Nordåsen", "Bergly", "Havblikk"]},
  {"id": "Lea",    "preferences": ["Bergly", "Fjordklinikken", "Havblikk", "Nordåsen"]},
  {"id": "Maria",  "preferences": ["Fjordklinikken", "Havblikk", "Bergly", "Nordåsen"]},
  {"id": "Elias",  "preferences": ["Bergly", "Nordåsen", "Fjordklinikken", "Havblikk"]},
  {"id": "Marcus", "preferences": ["Nordåsen", "Fjordklinikken", "Havblikk", "Bergly"]},
  {"id": "Eva",    "preferences": ["Bergly", "Fjordklinikken", "Havblikk", "Nordåsen"]},
  {"id": "Sara",   "preferences": ["Fjordklinikken", "Bergly", "Havblikk", "Nordåsen"]},
  {"id": "Emma",   "preferences": ["Havblikk", "Bergly", "Fjordklinikken", "Nordåsen"]},
  {"id": "Lucas",  "preferences": ["Bergly", "Havblikk", "Fjordklinikken", "Nordåsen"]}
],
"groups": [
{"id": "Nordåsen", "capacity": 4,
 "priorities": ["Anna", "Lucas", "Lea", "Maria", "Elias", "Marcus", "Eva", "Emma", "Sara", "Oscar"]},
{"id": "Fjordklinikken", "capacity": 2,
 "priorities": ["Sara", "Eva", "Lea", "Maria", "Elias", "Marcus", "Oscar", "Anna", "Emma", "Lucas"]},
{"id": "Bergly", "capacity": 2,
 "priorities": ["Anna", "Sara", "Lea", "Maria", "Elias", "Marcus", "Eva", "Oscar", "Emma", "Lucas"]},
{"id": "Havblikk", "capacity": 3,
 "priorities": ["Anna", "Lucas", "Lea", "Maria", "Emma", "Marcus", "Eva", "Sara", "Elias", "Oscar"]}]
}}

Resultatet som Bytteringer gir får alle inn på første- eller andreønsket. Hvor godt resultatet blir er selvsagt avhengig av de spesifikke rangeringene som praksisplassene oppgir, og om disse samsvarer med studentenes preferanser.

{"Anna":   "Fjordklinikken",  # <- 1. ønske
 "Oscar":  "Nordåsen",        # <- 2. ønske
 "Lea":    "Bergly",          # <- 1. ønske
 "Maria":  "Havblikk",        # <- 2. ønske
 "Elias":  "Nordåsen",        # <- 2. ønske
 "Marcus": "Nordåsen",        # <- 1. ønske
 "Eva":    "Bergly",          # <- 1. ønske
 "Sara":   "Fjordklinikken",  # <- 1. ønske
 "Emma":   "Havblikk",        # <- 1. ønske
 "Lucas":  "Havblikk"         # <- 2. ønske
}

Oppsummering

Fordeling av praksisplasser er et typisk allokeringsproblem, og eksempelet ovenfor viste noen fremgangsmåter for å modellere og løse dette. Det finnes andre måter å gå frem på som kan være vel så gode.

Å bruke en algoritme kan spare administrasjonen for tid, men minst like viktig er det at studentene blir fornøyde. Meningsfulle praksisplasser kan gi stor gevinst i livskvalitet. Kort reisevei er også viktig, spesielt for studenter som f.eks. har barn i barnehage og en familiekabal som må gå opp.

Algoritmene kan kjøres på anonymiserte data: verken studentene eller praksisplassenes navn trengs for å gjøre en beregning. For universiteter, høgskoler og andre utdanningsinstitusjoner kan Alloker gi:

  • Rettferdighet: Alle behandles likt av en algoritme
  • Strategisikkerhet: Studentene kan trygt oppgi ærlige preferanser
  • Effektivitet: Tusenvis av studenter behandles på sekunder
  • Etterprøvbarhet: Lett å dokumentere og forklare resultater

Ønsker du å se hvordan dette ville fungert på din problemstilling? Ta kontakt for en uforpliktende samtale eller test.