Problema dei turni

sk000ks
Ciao a tutti, da tempo sto pensando come risolvere, senza fortuna, un problema di questo tipo:

Mettiamo che in un ospedale ci siano 7 sale operatorie, e di queste 5 siano operative dal lunedì al venerdì per 6 ore, mentre le altre due siano operative 24 ore su 24, tutti i giorni.
In questo ospedale ci sono 20 anestesisti, che possono lavorare fino a 42 ore alla settimana, ma mai più di 12 ore di continuo. Considerando che a turno alcuni di loro sono in ferie, come si può trovare una turnazione valida sulle 7 sale per ogni settimana.

Pensavo di farlo impostando un sistema di equazioni, ma non ci sono chiare difficoltà a formulare i vincoli.

Come si potrebbe fare?

P.S. Sapete se esistono dei software per facilitare la creazione di turni di lavoro?

Risposte
carlo232
"sk000ks":
Considerando che a turno alcuni di loro sono in ferie


Devi specificare meglio questo punto... quando sono in ferie e per quanto ci stanno? :D

GIOVANNI IL CHIMICO
Se le ferie occupano un numero intero di settimane, si può ovviare risolvendo il problema settimana per settimana considerando come numero degli anestesisti e degli operatori solo quelli realmente presenti.

sk000ks
"carlo23":
[quote="sk000ks"]Considerando che a turno alcuni di loro sono in ferie


Devi specificare meglio questo punto... quando sono in ferie e per quanto ci stanno? :D[/quote]


Consideriamo le ferie per giorni. Minimo 1, fino a che so, 3-4 settimane. Più di un anestesista può essere il ferie, fino ad un massimo di 5 insieme. In realtà questo non ha molta importanza. Ammettiamo anche che nessuno vada in ferie, che mezzi ha la matematica per risolvare un problema complesso di questo tipo? Sicuramente ci saranno diverse soluzioni compatibili con i limiti. Io avevo pensato alla programmazione lineare ma non riesco a realizzare un problema di questo tipo (sono in realtà un po' a digiuno di PL).

Con il computer si potrebbe provare a fare tutte le combinazioni e scartare quelle che non rispettano i limiti. Un'idea semplice, ma forse il calcolo di tutte le permutazioni possibili mette in ginocchio anche un pc.

pjcohen
La matematica offre la programmazione lineare. Ma funziona bene quando le soluzioni sono a valori reali, mentre in questo caso si cercano soluzioni intere decenti (non credo che siano accettabili turni di 37,543 minuti, ma di 1,2,3,...,N ore). La programmazione lineare intera potrebbe risolverti il problema, ma non so dirti (senza documentarmi) se questi algoritmi risultino efficienti nel caso medio (a volte certamente non risultano efficienti).

In ogni caso il problema particolare in esame risulta più facile di quelli ordinari. Di solito infatti, nei problemi di turni, si richiede non soltanto una soluzione particolare, ma una soluzione "ottima", ovvero una soluzione che soddisfi delle richieste quantificabili. Ad esempio, capita che un anestesista chieda un certo giorno libero, o esprima preferenze sugli orari, o che il chirurgo preferisca certi anestesisti piuttosto che altri, o che lo stipendio di notte sia più elevato che di giorno (sto inventando, ma è per rendere l'idea).

Comunque, risolvere un problema particolare come quello in esame, con un numero non troppo grande di variabili, non è mai un problema con un calcolatore. Però credo che appunto il problema così formulato non sia del tutto soddisfacente. Che dire ad esempio, se ad un anestesista fossero assegnati due turni da 11 ore consecutive, mentre a un altro il lavoro risultasse molto più "diluito"? Non credo che sarebbe molto accettabile una tale situazione.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.