Personeelsroosters

Personeelsroosters Dit onderzoek valt uiteen in verschillende deelproblemen, maar het meest aansprekende voorbeeld is waarschijnlijk het probleem zoals dat optreedt in organisaties die 24 uur per dag actief zijn. Dit kunnen productiebedrijven zijn; hier wordt meestal vooraf een rooster van ploegendiensten gemaakt, en speelt het maandelijks roosteren geen rol; de personeelswensen lijken geen spelen directe rol te spelen. Een ander voorbeeld zijn beveiligingsbedrijven, welke vooral ook 's nachts actief zijn. We zien hier dat routeringsproblemen (surveillance) verbonden worden individuele roosters voor personeelsleden. Het meest aansprekende voorbeeld zijn waarschijnlijk de roosters voor verpleegkundigen; door de marktwerking is hier een sterke wisselwerking tussen wat een personeelslid wenselijk vindt, en wat wenselijk voor de organisatie is. De case hieronder is gebaseerd op deze situatie. Individuele personeelswensen, in de praktijk van groot belang,  zijn omwille van de toegankelijkheid, hier niet opgenomen.

Een case-studie: de Groep VanAcht

Als planner van de afdeling VanAcht; bent u verantwoordelijk voor het inplannen van uw 8 personeelsleden. Deze 8 personeelsleden vallen uiteen in 2 groepen:
  1. De full-timers (36 uur/week). Deze groep van 4 medewerkers verricht 18 diensten van 8 uur arbeid in 4 weken.
  2. De part-timers (20 uur/week). Deze groep van 4 medewerkers verricht 10 diensten van 8 uur in 4 weken.

U staat op het punt een nieuw rooster voor een periode van 4 weken (van maandag tot maandag) te maken. In dit rooster dienen dagdiensten D (8 uur arbeid) en nachtdiensten N (ook 8 uur arbeid) ingepland te worden. Van de dagdiensten zijn er 3 per dag nodig, en van de nachtdiensten 1 per dag, totaal 4 x 28 = 112 diensten in 4 weken. Deze diensten kunnen dus precies verricht worden door het aanwezige personeel.

De dagdienst begint om 9:00 uur, en duurt tot 18:00 uur; van 13:00 tot 14:00 wordt gepauzeerd.
De nachtdienst begin om 18:00 uur en wordt in het rooster op de dag getoond waarop hij begint. De nachtdienst eindigt op 2:00 van de volgende dag. De N die op vrijdag getoond wordt, is dus een weekenddienst; elke dienst die overlapt met de periode van zaterdag 0:00 uur tot maandag 0:00 uur, wordt een weekenddienst genoemd. Een belangrijk begrip is een serie: een serie is een verzameling van diensten die op opeenvolgende dagen beginnen.

De eisen waaraan het rooster moet voldoen zijn de volgende constraints. Deze constraints lijken op constraints zoals die te vinden zijn in de arbeidstijdenwet.
  1. Een full-timer krijgt precies 18 diensten.
  2. Een part-timer krijgt precies 10 diensten.
  3. Voor een medewerker start maximaal 1 dienst op een dag.
  4. Een medewerker krijgt niet meer dan 4 nachtdiensten, waarvan niet meer dan 3 in een serie.
  5. Een medewerker krijgt niet meer dan 6 diensten in een serie.
  6. Van elke 3 opeenvolgende weekenden, is 1 weekend vrij van arbeid.
  7. Na 1, 2 of 3 nachtdiensten in een serie, is er een rust van tenminste 48 uur.
De wensen (soft constraints) waar het rooster aan moet voldoen zijn de volgende:
  1. Nachtdiensten dienen in series van 2 of 3 gegeven worden. Deze serie mag wel voorafgegaan worden door dagdiensten, maar op grond van eis 7 niet gevolgd worden door dagdiensten. Boete overtreding: 100.
  2. Losse diensten (series van lengte 1) dienen vermeden te worden. Boete overtreding: 100. Op basis van deze en de vorige wens, krijgt een losse nachtdienst al een boete 200, en daarnaast ook nog een boete door wens 6, m.b.t. serielengte.
  3. In een weekend wordt bij voorkeur helemaal gewerkt, of helemaal niet. Anders gezegd: in een weekend zijn er 0 of tenminste 2 diensten voor een medewerker gepland. Boete overtreding: 100. Meer dan 2 diensten kan alleen door nachtdiensten op vrijdag, zaterdag en zondag.
  4. Na een series is er een rust van tenminste 2 dagen. Boete overtreding: 10. 
  5. Een full-timer krijgt bij voorkeur 4 of 5 diensten per week (van maandag tot maandag), en een part-timer 2 of 3. Boete overtreding: 1 bij overtreding van 1,  4 bij overtreding van 2, 9 bij overtreding van 3 en 16 bij overtreding van 4.
  6. Een full-timer krijgt bij voorkeur series van lengte 4 tot 6, en een part-timer van lengte 2 of 3. Boete overtreding: 1 bij overtreding van 1; 4 bij overtreding van 2 en 9 bij overtreding van 3.

Voorbeeldrooster

Het product HARMONY, waar ik mede-ontwikkelaar van ben, doet er enkele seconden over om onder de 30 te komen. Hierboven staat een screenshot, klik het rooster voor een vergroting. Het rooster is niet een toegelaten rooster: zoals je kunt zien heeft Ester 14 diensten, en Francis 13, terwijl zij er slechts 10 mogen krijgen. Bovendien volgt bij Francis een dagdienst meteen op een nachtdienst, wat ook niet toegestaan is. Rechts staat ook de boete (onder het kopje belasting), die in totaal 256 bedraagt.

Als ervaring planner kost het geen moeite om aan de harde voorwaarden te voldoen (of toch wel?). Let vooral op eis 6; die zie je snel over het hoofd (en breekt je mooie schema's behoorlijk). De volgende uitdaging is 100. Kun je onder de boete onder de 100 krijgen? Onder de 90, 80, 70, 60, 50, 40, 30, 20, 10... ?