De bezetting is een weeksjabloon: voor elk shifttijdstip en elke skill een minimum en een maximum per weekdag. Onder het minimum bemannen wordt bestraft volgens de prioriteit van die band; de ruimte tussen minimum en maximum is optionele capaciteit die open mag blijven.
Elke band zegt hoeveel mensen een shift nodig heeft en hoeveel ze er kan gebruiken, dag per dag. Het sjabloon herhaalt zich elke week; eenmalige extra's en annulaties overschrijven losse datums.
Een open plek onder het minimum op een verplichte band weegt zwaarder dan elke zachte afweging. Op een voorkeursband is het een gewogen voorkeur.
Banden dragen een prioriteit van 1 tot 10. Als niet alles bemand raakt, wordt de nachtdienst op P10 vóór de dagshift op P3 ingevuld.
De verplichte skill van een band is hard: een shift die een verpleegkundige nodig heeft, krijgt een verpleegkundige. Een voorkeursskill wordt gevolgd waar het kan.
Elke werknemer werkt onder een contract: uurplafonds en -minima, rust, opeenvolgende dagen, weekends en rotatiepatronen. Elke regel is per contract verplicht of voorkeur; verplichte regels worden nooit geschonden.
Dezelfde regel kan in het ene contract absoluut zijn en in het andere een voorkeur. Verplicht wordt afgedwongen; voorkeur wordt geminimaliseerd en gerapporteerd wanneer ervan afgeweken wordt.
Wekelijkse A/B-rotatie, verboden opeenvolgingen zoals nacht naar ochtend, shiftkoppelingen met dagen ertussen en toestemming voor gesplitste dagen zijn contractpatronen die het plan volgt.
Een onbeschikbare dag is hard. Een ongewenste dag wordt bestraft, een gewenste dag beloond, beide met gewichten die je zelf instelt.
Geen-nachten-markeringen en persoonlijke tijdvensters staan op de werknemer, boven het contract. Een shift buiten het venster wordt nooit toegewezen.
Dagen vóór vandaag liggen vast, en het gepubliceerde rooster is de basislijn. Meldt iemand zich ziek, dan komen zijn shifts opnieuw open en vult de nieuwe solve ze in met zo weinig mogelijk verstoring voor de rest.
Alles vóór vandaag is context, geen beslissing. Een nieuwe solve wijzigt alleen de dagen die nog komen.
Wijzigingen worden gescoord tegen de gepubliceerde basislijn: toewijzingen die verschuiven kosten het plan punten, dus de herstelling blijft klein.
Een werknemer meldt zich ziek, geeft één shift terug of vraagt een dag vrij. Elk daarvan zet precies dat werk opnieuw open voor de volgende solve.
Elke werknemer kan voor één solve worden uitgesloten om te zien hoe het rooster zonder hem standhoudt.
Werknemers kunnen hun eigen kalender op de telefoon markeren: vrije dagen, dagen die ze liever niet werken, dagen waarop ze net wel willen werken. De solver neemt elke markering in één keer mee: onbeschikbare dagen zijn absoluut, gewenste en ongewenste dagen worden gewogen, en eerlijkheid houdt de belasting gelijk terwijl hij ze volgt. Alles is optioneel: het rooster lost even goed op met weinig of geen markeringen.
Onbeschikbaar is hard: geen shift, nooit. Een ongewenste dag wordt bestraft en een gewenste dag beloond, met gewichten per solve.
Een werknemer vraagt een dag vrij of geeft een shift terug; de markering gaat mee in de volgende solve. Selfservice is een keuze per team, geen vereiste: planners kunnen elke markering zelf invoeren of overschrijven.
Het plan weegt de markeringen van alle werknemers samen af in plaats van wie eerst komt, eerst maalt. Een voorkeur waar het plan tegenin moest gaan, wordt opgelijst, niet verborgen.
Het aantal shifts blijft evenwichtig verdeeld over het team terwijl voorkeuren gevolgd worden, zodat de stille collega's niet de hele week dragen.
Klik op een open shift en de engine beveelt aan wie ze het best opneemt: elke werknemer wordt gescoord alsof hij effectief is toegewezen, onder de volledige regelset, en gerangschikt met de reden erbij. De topkandidaat toewijzen vult de plek in.
Kandidaten worden gescoord met dezelfde regels als een solve, inclusief pins, bevroren dagen en uitsluitingen, en elke kandidaat draagt de reden voor zijn rang.
Shifts kun je tussen mensen slepen of vanuit de lijst toewijzen. Een vastgepinde shift blijft bij zijn houder, door elke nieuwe solve heen.
Een handmatige aanpassing die een harde regel schendt, wordt op het bord gemarkeerd; één nieuwe solve herstelt het rooster rond wat je plaatste.
Elke solve wordt bewaard en kan tegen de basislijn worden gelegd: ingevuld, verplaatst, geschrapt en kosten, naast elkaar.
De regels hierboven zijn de standaardset. Regels eigen aan jouw operatie worden aan het model toegevoegd als harde of zachte regels met een eigen gewicht. De solver behandelt ze zoals de ingebouwde: harde regels worden nooit geschonden, zachte regels worden afgewogen tegen de rest.
Een eigen regel is ofwel absoluut ofwel een gewogen voorkeur. Absolute regels worden nooit geschonden; voorkeuren dragen een gewicht dat je per solve instelt.
Eigen regels worden tijdens het zoeken op elk kandidaat-rooster geëvalueerd, niet achteraf gecontroleerd. Een rooster dat er een schendt, wordt nooit voorgesteld.
Elke regel rapporteert zijn eigen bijdrage, zodat je ziet wat hij het rooster kost, zijn gewicht bijstelt of hem uitschakelt.
Je beschrijft de regel zoals je planners hem formuleren; hij wordt een benoemde regel in het model.