Studerende regner den ud med PHP og 'fitness-funktion': Intelligent vagtplan kodet i ferien

Kod i Ferien: Et nyt intelligent modul, udviklet af en dansk studerende i robotteknologi, kan finde frem til den bedste vagtplan. Modulet er dog i fare for at ende som et skuffeprojekt.

Morten Duus, robotteknologistuderende på SDU, var én af de studerende, der var med i IT- og Telestyrelsens projekt 'Kod i Ferien'. Hans mission var at udvikle et intelligent vagtplanlægningssystem, som automatisk kunne generere en god vagtplan ud fra arbejdsgiverens og medarbejdernes ønsker.

Det nye vagtplanlægningsmodul ligger nu på Softwarebørsen på digitaliser.dk, men Morten Duus er bange for, at det bliver et skuffeprojekt. For indtil videre er der ikke nogen planer med projektet:

»Der skal desværre være nogen, der har interesse i at videreudvikle på systemet, før der sker noget. Men det har stort potentiale, for hvis der sidder en chef og lægger vagtplaner, som bruger en eftermiddag om måneden på at få vagtplanen til at gå op, så er det jo et kæmpe ressourcespild, for han koster mange penge i timen,« siger Morten Duus til Version2.

Det hele begyndte dog, da Morten Duus fattede interesse for projektet i begyndelsen af sommeren.

»Jeg fandt en gammel vagtplan på softwarebørsen og tænkte, at man godt kunne gøre den intelligent. Den, der var i forvejen, var lavet til døgninstitutioner. Her kunne man manuelt lægge vagtplaner på og kopiere planen, således at den kørte igen i ugerne efter,« siger Morten Duus til Version2.

Han tog således udgangspunkt i det gamle system, men løb hurtigt ind i problemer.

»Den vagtplan, der var der i forvejen, var fra 2003, og var sekventielt opbygget. Så jeg aftalte med min kontaktperson hos IT- og Telestyrelsen at lave et helt nyt, objektorienteret modul, der kunne arbejde sammen med det gamle system. For at sætte sig ind i det gamle system og modernisere det, samt at udvikle et nyt modul til intelligent vagtplanlægning er ikke noget, en enkelt mand lige laver som sommerferieprojekt.«

Han valgte dog at kode videre i PHP, idet den gamle vagtplan var kodet i dette sprog.

»Det var ikke mit førstevalg, for jeg er vant til at arbejde i Java. Og jeg fandt også ud af, at den ideelle måde at lave det på, nok ikke er at lave det som en webservice - som det er nu - men snarere at ligge det på klienten. Det kan tage lang tid for algoritmen at regne vagtplanen ud, og det er et problem, hvis den tager mange ressourcer fra serveren. Derfor ville det være bedre at lægge det på klienten, og måske lave det i Javascript eller C#,« siger han til Version2.

Den genetiske algoritme laver 100 helt tilfældige vagtplaner. Så hvis der skal bruges en sygeplejeske til en given vagt, tildeles en helt tilfældig sygeplejske den givne vagt. Men dette giver ikke en ret god plan. Algoritmen fungerer derefter ved, at den regner en fitness eller godhedsværdi ud for hver plan.

En plans fitness findes ud fra, hvor mange kriterier der er opfyldt. Hvis en vagt er givet til en ansat, som gerne vil arbejde på et givent tidpunkt, får planen en bedre værdi. Og omvendt; hvis en vagt og en ansat ikke matcher, får den en dårlig værdi. Fitness-funktionen tager også højde for overenskomst, så en ansat ikke får for mange eller for få vagter.

»Vi fjerner planer, der scorer for lavt, fra systemet. Nye planer bliver lavet, ud fra den plan, der scorer højst, i håbet om at ændringer kan gøre dem bedre. Hvor meget vi ændrer i en plan, afgøres af en gauss. For det meste ændrer vi kun lidt på en plan, for at søge efter vores lokale maxima, mens vi engang imellem vil ændre meget i en plan, for at forsøge at finde et andet lokalt maximum,« siger Morten Duus.

Svaghed i algoritmen

Problemet er nu, at det nye modul ikke integrerer med det gamle modul, og derfor er der ingen brugervenlig grænseflade til Morten Duus’s modul, som dermed bare er et regnemodul.

Yderligere er der nogle svagheder i algoritmen, som han gerne ville forbedre. For hvis man finder to gode vagtplaner, der har styrker og svagheder på hver deres punkter, kan systemet endnu ikke kombinere disse to til den ultimative vagtplan:

»Hvis man har en god vagtplan, og en anden god vagtplan, ville jeg gerne kunne krydse de to, og det er der ikke mulighed for i dag. Hvis man finder en rigtig god vagtplan, så må man ændre på den, så den får en lavere fitness. Men det kan være, at det var en tilfældighed, at den her vagtplan var god, og at der er nogen, der er bedre, men vi bliver nødt til at gå ned i fitness for at komme hen til den. Derfor kunne det være bedre, hvis man kunne krydse to gode. Det kan sagtens lade sig gøre, jeg har bare ikke nået at bygge det ind.«

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Kommentarer (11)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Jesper Larsen

Forskning viser at genetiske algoritmer ikke er det bedste at bruge på vagtplanlægnings-problemer som f.eks. vagtplanlægning for sygeplejersker ol. Genetiske algoritmer har i denne sammenhæng tit problemer med konvergens og derfor har metoderne ofte svært ved at opnå nær-optimale løsninger. Ved en konkurrence om vagtplanlægning for sygeplejersker i 2010 brugte de to bedste metoder optimerings-baserede heuristikker. Vi har på DTU udviklet en state-of-the-art løser med et generisk (ikke genetisk) modelleringslag, så vi kan tage højde for mange forskellige begrænsninger. Læse mere her:

www.man.dtu.dk/upload/institutter/ipl/publ/.../rapport%205.pdf

  • 1
  • 0
Log ind eller Opret konto for at kommentere
IT Company Rank
maximize minimize