Codekraker 19: Martin van Buuren

Codekraker 19: Martin van Buuren

Waarom je als IT’er niet altijd een nieuwe geïntegreerde applicatie moet willen bouwen

Combineer IT-vaardigheid én wiskundig inzicht met programma’s die voor eindgebruikers vertrouwd zijn

Wat als werknemers efficiënter moeten plannen, terwijl ze al jaren hetzelfde werkproces aanhouden? Gedragsverandering bij zo’n ingesleten gewoonte is een uitdaging. Maar wat doe je dan? IT’ers bouwen het liefst een modern ogende, geïntegreerde planningsapplicatie. Een organisatie wil vooral zo weinig mogelijk gelijktijdige verandering, zodat medewerkers er geen last van hebben. Een combinatie daarvan is weldegelijk goed mogelijk. Mijn tip: verkijk je niet op ingewikkelde software die voor een eindgebruiker onbegrijpelijk is, maar maak gebruik van slimme wiskundige modellen in combinatie met de mogelijkheden van vertrouwde programma’s zoals Excel.

De wens om efficiënter te werken is bij veel organisaties aanwezig. Vaak is het échte probleem dat organisaties denken dat er rigoureuze veranderingen nodig zijn om dit te realiseren. Dat is soms ook zo, maar dat proces kan zich vaak vooral bij ons achter de schermen afspelen. Dat er wiskundige diepgang en hoogstaande optimalisatiesoftware gebruikt is, hoeft de eindgebruiker niet te merken. Dit realiseren we door technische en wiskundige processen te verbergen achter een tool waar medewerkers al bekend mee zijn, zoals Excel.

In een recentelijke case binnen de zorgsector kregen we te maken met een groep wat oudere mensen die al lange tijd volgens dezelfde processen werkten en weinig affiniteit met computers hebben. Het veranderen van zo’n vastgeroest werkproces roept dan weerstand op. Ondanks de toegenomen zorgvraag, de inefficiëntie in de planning en strakker wordende budgetten, zien medewerkers de noodzaak niet in. De mogelijkheden lijken op eerste gezicht allemaal niet fijn voor de eindgebruiker. De oplossing? Zo veel mogelijk intelligentie onder de motorkap laten functioneren en de nieuwe planning presenteren in hetzelfde formaat dat ze al kennen.

In dit geval zijn we bij Topicus begonnen met het opknippen van de planning in lagen, waarvan de capaciteitsplanning één laag was waarin veel efficiëntiewinst te behalen was. Het uiteindelijke doel van de capaciteitsplanning is dat je de medewerkers en locaties aan elkaar koppelt en voor elk koppel weet hoeveel uren een medewerker komend jaar op een locatie gaat werken. Daarvoor moet je bijvoorbeeld weten hoeveel mensen er in dienst zijn, hoeveel uur ze werken, wat hun precieze functie is en hoeveel uren je van elke functie op elke locatie verwacht nodig te hebben. Dat is een ingewikkelde puzzel omdat je met veel verschillende factoren te maken hebt. Om deze puzzel op te lossen, heb ik een wiskundig optimalisatiemodel ontwikkeld.

Voor de planningen is een Excel-document ontwikkeld door mijn collega’s bij Topicus, waarin alle data handmatig moest worden ingevoerd. Vervolgens kon de planning opgesteld worden: groene cellen gaven aan dat er aan de randvoorwaarden voldaan werd, rode cellen nog niet. Zo werd de planning al efficiënter ontwikkeld dan voorheen. Na een tijd ontstond de vraag of dit geautomatiseerd kon worden. Die vraag belandde bij mij. Na het wiskundige aspect eerst op papier uitgewerkt te hebben, begon de softwarematige uitdaging. Ik heb daarvoor gebruik gemaakt van XLWings, een Excel plug-in. XLWings kan twee kanten op data uitwisselen tussen (geopende) Excel-documenten en Python. In Python heb ik gebruikgemaakt van een programma dat wiskundige optimalisatiemodellen helpt op te lossen: Google OR-Tools. Wat er nu gebeurt, is dat er een extra tabblad is toegevoegd aan het Excelbestand. In dit tabblad staat, naast enkele instellingsvoorkeuren, de knop ‘Los op’. Als je hierop drukt, worden alle voorkeuren ingeladen door XLWings, die het als een pakketje naar Python stuurt. Python pakt het uit, zorgt dat het wiskundige probleem met OR-Tools opgelost wordt en zet het (voor de gebruiker) leesbare resultaat via XLWings weer netjes in het Excelbestand in dezelfde cellen die eerder nog handmatig gevuld werden. Daarmee zijn de zorgprofessionals immers bekend. Op het moment dat je dus alle invoer net zoals voorheen in het Excel-document hebt ingevuld, druk je op die knop en na een halfuurtje heb je al een erg goede oplossing voor je capaciteitsplanning. Deze voldoet dan niet alleen aan alle harde randvoorwaarden zoals contracturen, maar ook aan zoveel mogelijk zachte voorkeuren zoals locatie of maximale reistijd.

De teams blijven zelfsturend en deze vernieuwde aanpak kan voor elk ‘eilandje’ op een eigen manier gebruikt worden. De teams bepalen zelf welke voorkeuren voor hen belangrijk zijn, zij geven dit door aan de tactische planners en zo ontstaat er uiteindelijk een planning waar iedereen blij mee is.

Voorheen lukte het niet om een capaciteitsplanning te creëren die voldeed aan alle harde randvoorwaarden. Nu is het één druk op de knop en 20 minuten later heb je een planning die niet alleen aan deze harde randvoorwaarden voldoet, maar ook aan de zachte: niemand hoeft over te werken, iedereen komt aan zijn contracturen en de reistijd is ook nog eens naar wens. En in de toekomst? Dan kunnen we de intelligentie verwerken in een stabiele softwareoplossing. We blijven immers een IT-bedrijf.

Benieuwd naar andere codekrakers? Je checkt ze hier.