Shift Scheduler Blog
Pianificazione continua dei turni: come lo storico migliora la pianificazione con IA

Molti strumenti di pianificazione trattano ogni piano turni come un progetto separato.
Per un semplice piano settimanale può anche funzionare. Con squadre reali, però, questo approccio crea subito problemi. Se oggi pianifichi luglio e il mese prossimo pianifichi agosto, il piano di agosto deve comunque sapere che cosa è successo alla fine di luglio.
Una persona che ha lavorato di notte il 31 luglio potrebbe dover riposare il 1° agosto. Chi ha già fatto troppe notti a luglio non dovrebbe essere il primo candidato per altre notti ad agosto. E una rotazione giorno, notte, riposo non dovrebbe ripartire da zero solo perché cambia il mese sul calendario.
Questo è il problema che risolve la pianificazione continua dei turni.
Che cos'è la pianificazione continua dei turni?
La pianificazione continua dei turni significa che il sistema usa lo storico recente dei turni quando prepara un nuovo piano.
Invece di guardare solo il periodo richiesto, il sistema di pianificazione con IA controlla anche i turni precedenti e li usa come contesto. Il nuovo piano viene comunque creato solo per le date richieste dall’utente, ma il solver capisce che cosa è successo prima di quelle date.
Nella gestione dei turni questo è importante perché molte regole superano i confini di un singolo periodo di pianificazione:
- Riposo dopo i turni di notte
- Numero massimo di giorni lavorati di seguito
- Limiti di ore settimanali
- Sovrapposizioni tra turni notturni
- Schemi di rotazione come giorno, notte, riposo
- Distribuzione equa dei turni più impegnativi
- Equilibrio delle ore totali nel tempo
Senza storico, il pianificatore può creare un piano che sembra valido dentro il mese selezionato, ma che nella pratica risulta poco realistico, poco equo o rischioso.
Il problema pratico: i confini dei mesi sono artificiali
Chi gestisce i turni spesso pianifica per periodi fissi: una settimana, due settimane o un mese.
Ma la squadra non si azzera all’inizio di ogni periodo.
Per esempio:
- Un turno di notte di domenica può richiedere il lunedì libero.
- Una persona che ha lavorato cinque giorni prima del nuovo periodo potrebbe essere già al limite massimo di giorni consecutivi.
- Un limite settimanale vale ancora se il periodo richiesto inizia a metà settimana.
- Un turno notturno può iniziare prima del periodo richiesto e finire al suo interno.
- L’equità dovrebbe considerare il lavoro impegnativo recente, non solo il nuovo piano.
Per questo un buon pianificatore di turni con IA ha bisogno dello storico. Il periodo richiesto è solo la finestra di output. Il solver ha bisogno di più contesto per prendere decisioni sicure ed eque.
Come Shift Scheduler usa lo storico
Shift Scheduler mantiene semplice la richiesta per l’utente: si può ancora pianificare un periodo massimo di 31 giorni.
Internamente, però, il sistema aggiunge due finestre automatiche di storico:
| Finestra di storico | Durata | Scopo |
|---|---|---|
| Storico dei vincoli | 7 giorni prima della data di inizio richiesta | Regole di riposo, sovrapposizioni, massimo di giorni consecutivi, limiti giornalieri e settimanali, continuità sicura delle rotazioni |
| Storico dell’equità | 60 giorni prima della data di inizio richiesta | Equilibrio delle ore totali e dei modelli di turno, inclusa la distribuzione dei turni di notte |
La regola importante è semplice:
Prima della data di inizio richiesta non viene creato, modificato o assegnato alcun turno.
Lo storico viene usato solo come contesto. Aiuta il solver CP-SAT a capire la situazione reale, ma le nuove assegnazioni restano limitate al periodo da pianificare.
Perché ci sono due finestre di storico
Non tutto lo storico deve influenzare il solver nello stesso modo.
Una parte dello storico è operativa. Può rendere impossibile una certa assegnazione.
Per esempio, se una persona ha lavorato di notte ieri e la regola dice che oggi deve riposare, il solver deve escluderla dal turno di oggi. Questo è un fatto rigido di pianificazione.
Un’altra parte dello storico riguarda l’equità. Deve guidare l’ottimizzazione, ma non dovrebbe lasciare intenzionalmente un turno scoperto quando esiste una soluzione realizzabile.
Per esempio, se una persona ha fatto molte notti negli ultimi due mesi, il pianificatore dovrebbe preferire altre persone qualificate per i nuovi turni di notte. Ma la copertura viene comunque prima.
Per questo Shift Scheduler separa lo storico in due gruppi:
constraintHistoryper le regole operativefairnessHistoryper il calcolo dell’equità
Questa separazione rende il comportamento del sistema più prevedibile. Lo storico recente può bloccare assegnazioni non sicure o non valide, mentre uno storico più lungo aiuta a rendere il piano più equilibrato.
Che cosa controlla lo storico dei vincoli
Lo storico dei vincoli guarda ai 7 giorni precedenti il fromDate richiesto.
Viene usato per regole che devono conoscere il lavoro recente:
- Riposo dopo specifici modelli di turno
- Numero massimo di giorni lavorati di seguito
- Limiti di ore giornaliere
- Limiti di ore settimanali
- Controlli sulle sovrapposizioni
- Turni notturni che entrano nel periodo richiesto
- Rotazioni flessibili come giorno, notte, riposo
Esempio:
Se il periodo richiesto inizia il 1° agosto e una persona ha lavorato di notte il 31 luglio, il solver può trattare il 1° agosto come giorno di riposo obbligatorio quando la regola richiede riposo dopo i turni di notte.
Il pianificatore non crea né modifica il turno del 31 luglio. Usa solo quel turno per prendere una decisione corretta sul 1° agosto.
Che cosa controlla lo storico dell’equità
Lo storico dell’equità guarda ai 60 giorni precedenti il fromDate richiesto.
Viene usato solo per il punteggio e il bilanciamento:
- Ore totali per persona
- Combinazione dei modelli di turno per persona
- Distribuzione dei turni di notte
- Uso recente eccessivo dei modelli più impegnativi
Esempio:
Se Alice ha lavorato molte notti negli ultimi 60 giorni e anche Bob è qualificato per i turni di notte, il solver dovrebbe preferire Bob per il prossimo turno di notte quando è possibile.
Non è un’equità perfetta, perché la pianificazione del personale comporta sempre compromessi. Ma è molto meglio che trattare ogni nuovo mese come una pagina bianca.
La copertura resta la priorità
L’uso dello storico non deve peggiorare il piano lasciando turni vuoti solo per motivi di equità.
Shift Scheduler mantiene la copertura come prima fase di risoluzione. Il solver prova prima a coprire il maggior numero possibile di turni nel periodo richiesto, rispettando i vincoli rigidi. L’equità viene gestita dopo, come parte dell’obiettivo di ottimizzazione.
Questo significa che lo storico dell’equità può influenzare chi viene assegnato, ma non dovrebbe lasciare intenzionalmente scoperto un turno che può essere coperto.
Nella pianificazione del personale con IA questa distinzione è importante:
- I vincoli rigidi proteggono sicurezza, conformità e fattibilità.
- Lo storico dell’equità migliora la qualità del piano turni.
- La copertura resta l’obiettivo operativo principale.
Pianificazione continua e ottimizzazione CP-SAT
Shift Scheduler usa un solver CP-SAT per ottimizzare i piani turni.
CP-SAT è adatto alla pianificazione del personale perché il problema contiene molte variabili e molti vincoli:
- Quale persona può lavorare su ciascun turno
- Quali turni si sovrappongono
- Chi non è disponibile
- Quante ore può lavorare ogni persona
- Quali regole di riposo si applicano
- Quali assegnazioni sono più eque
- Quali rotazioni dovrebbero continuare
La pianificazione continua aggiunge all’input del solver i fatti recenti. Il solver valuta quindi le assegnazioni del periodo richiesto con una visione più accurata del piano precedente.
In parole semplici:
Il solver non chiede solo: "Chi può lavorare questo turno?"
Chiede: "Chi può lavorare questo turno, considerando che cosa ha già lavorato di recente?"
Esempio: equità dei turni di notte tra mesi diversi
Immagina che il piano di luglio abbia questo andamento:
- Alice ha lavorato 8 turni di notte.
- Bob ha lavorato 2 turni di notte.
- Alice e Bob possono entrambi lavorare di notte.
- Il piano di agosto contiene 4 nuovi turni di notte.
Se il solver di agosto ignora luglio, Alice e Bob possono sembrare ugualmente bilanciati all’inizio di agosto.
Con lo storico dell’equità, il solver vede che Alice ha sostenuto più lavoro notturno di recente. Quando è possibile, può assegnare più nuovi turni di notte di agosto a Bob o ad altre persone idonee.
È proprio qui che la pianificazione continua migliora la soddisfazione del personale. Riduce la sensazione che il lavoro più pesante venga ripetuto in modo casuale o ingiusto.
Esempio: regole di riposo oltre il confine del mese
Immagina questa regola:
Dopo un turno di notte, la persona deve avere almeno un giorno libero.
Ora immagina questa situazione:
- 31 luglio: Alice lavora 19:00-07:00.
- 1° agosto: Il pianificatore deve coprire un turno di giorno.
Senza storico dei vincoli, il piano di agosto potrebbe assegnare Alice al 1° agosto, perché il solver vede solo agosto.
Con 7 giorni di storico dei vincoli, il solver vede il turno di notte del 31 luglio e blocca l’assegnazione di Alice al 1° agosto.
Il piano generato è più sicuro e più realistico.
Esempio: limiti settimanali quando il periodo inizia a metà settimana
I limiti settimanali non coincidono sempre con i periodi di pianificazione.
Se il piano richiesto inizia di mercoledì, una persona potrebbe aver già lavorato lunedì e martedì. Quelle ore devono contare nel limite settimanale.
Lo storico dei vincoli dà al solver informazioni sufficienti per evitare straordinari involontari o assegnazioni irrealistiche oltre il limite settimanale.
Questo è particolarmente importante nella sanità, nel settore alberghiero e della ristorazione, nel retail e in tutte le attività con limiti di ore legali o contrattuali.
Che cosa questa funzione non fa
La pianificazione continua è volutamente focalizzata.
Non permette al pianificatore di coprire turni prima della data di inizio richiesta. E non riscrive i turni passati.
Non prova nemmeno a risolvere ogni possibile problema di rotazione. Le rotazioni ripetitive esatte senza una data di ancoraggio avranno ancora bisogno di date di riferimento esplicite in una versione futura. L’approccio attuale si concentra sulla continuità sicura delle rotazioni flessibili, dove il lavoro precedente deve imporre riposo nel periodo richiesto.
Così il comportamento resta comprensibile:
- Il periodo richiesto resta limitato a 31 giorni.
- Lo storico dei vincoli guarda 7 giorni indietro.
- Lo storico dell’equità guarda 60 giorni indietro.
- I turni storici sono turni normali, non richieste di assenza.
- Le nuove assegnazioni vengono create solo dentro il periodo richiesto.
Riepilogo per la knowledge base
Usa questo riepilogo quando devi spiegare la pianificazione continua in Shift Scheduler:
- La pianificazione continua dei turni usa i turni precedenti come contesto per un nuovo piano.
- Gli utenti continuano a richiedere un periodo di pianificazione fino a 31 giorni.
- Il solver controlla automaticamente i 7 giorni prima dell’inizio richiesto per i vincoli operativi.
- Il solver controlla automaticamente i 60 giorni prima dell’inizio richiesto per il calcolo dell’equità.
- Lo storico dei vincoli influisce su riposo, massimo di giorni consecutivi, limiti settimanali, limiti giornalieri, sovrapposizioni, turni notturni e continuità delle rotazioni flessibili.
- Lo storico dell’equità influisce sull’equilibrio delle ore totali e dei modelli di turno, inclusa la distribuzione dei turni di notte.
- Lo storico non crea, modifica o assegna turni prima della data di inizio richiesta.
- La copertura viene ottimizzata per prima, quindi lo storico dell’equità non dovrebbe lasciare intenzionalmente scoperti i turni del periodo richiesto.
- CP-SAT usa il contesto storico per rendere le assegnazioni del periodo richiesto più sicure e più eque.
Domande frequenti
Che cos'è la pianificazione continua dei turni?
È una pianificazione del personale che usa lo storico recente dei turni quando crea un nuovo piano. Aiuta regole ed equità a proseguire tra settimane o mesi, invece di ripartire da zero a ogni nuovo periodo.
Perché lo storico conta nella pianificazione dei turni con IA?
Lo storico conta perché regole di riposo, equità dei turni di notte, limiti settimanali e rotazioni spesso superano i confini del periodo selezionato. Un pianificatore che ignora il lavoro recente può creare piani che sembrano validi, ma sono poco equi o poco sicuri.
Shift Scheduler pianifica più di 31 giorni alla volta?
No. Il periodo richiesto dall’utente resta limitato a 31 giorni. Le finestre di storico da 7 e 60 giorni sono contesto interno, non date aggiuntive in cui creare nuovi turni.
Lo storico può creare turni prima della data di inizio?
No. I turni storici sono solo contesto in lettura. Shift Scheduler crea nuove assegnazioni solo dentro il periodo richiesto.
In che modo lo storico dell’equità aiuta con i turni di notte?
Lo storico dell’equità permette all’ottimizzazione di vedere chi ha lavorato molte notti di recente. Quando più persone qualificate possono coprire un nuovo turno di notte, il solver può preferire chi ha avuto meno assegnazioni notturne recenti.