Quale algoritmo dovrei usare per creare una funzione di pianificazione automatica del personale?


18

Immagina una piccola impresa locale (nel mio caso un asilo nido per cani) con poche decine di impiegati part-time. L'obiettivo è creare automaticamente programmi settimanali per il personale. La mia domanda riguarda gli approcci algoritmici da esplorare per questo problema.

Vi sono molti vincoli da tenere a mente, principalmente (1) la disponibilità del personale e (2) le esigenze di ciascun turno, non solo la quantità di personale per ciascun turno ma le competenze necessarie per ciascun turno (ad esempio per un determinato turno, potresti aver bisogno di qualcuno che sappia guidare per fare pick-up / drop-off dei cani, per un altro, qualcuno che sappia fare il bagno ai cani, ecc.).

Altri vincoli includono cose come evitare o richiedere determinate combinazioni di personale - forse a causa di conflitti di personalità da un lato, o necessità di formazione da parte dell'osmosi da personale senior a personale junior dall'altro.

Inoltre, ci sono preferenze da tenere in considerazione. Alcuni membri del personale preferiscono la mattina, circa due giorni di fila piuttosto che dire lunedì e giovedì, ecc. Sappiamo che non possiamo sempre soddisfare le preferenze di tutti. In effetti, disponiamo di una gerarchia in cui i dipendenti ottengono le prime osservazioni sulle loro scelte.

Ho la sensazione che ci sia un modo per ridurre o esprimere questo problema in un algoritmo esistente, già risolto. Ma non so quali algoritmi esplorare. Quali algoritmi specifici esistenti sarebbero più promettenti?



3
E a parte questo, non ho mai trovato un algoritmo che funzioni per questo problema al di là dei vincoli più semplici del passato oltre "metti tutti i programmi in ordine casuale ignorando qualsiasi altro vincolo e lasciali scambiare o fare i turni come desiderato".

4
È disponibile una soluzione completa dal sito di JBoss Drools: optaplanner.org - è necessario codificare i vincoli di pianificazione, come ad esempio le ore massime alla settimana, ecc.
BobDalgleish,

Sospetto che ciò equivale al problema SAT, che è noto per essere NP-completo, ma senza dubbio buoni algoritmi che ottengono risultati ragionevoli.
David Conrad,

Risposte:


16

Algoritmi come Ricerca locale (Ricerca Tabu , Ricottura simulata , Accettazione tardiva ) funzionano molto bene su tali problemi.

Come suggerisce Bob, se lavori in Java, dai un'occhiata a OptaPlanner (open source). Guarda questo video sulla selezione dei dipendenti .


3
Potresti spiegare gli algoritmi o aggiungere collegamenti in un posto che lo fa? Se aggiungi collegamenti, aggiungi anche un po 'di informazioni pertinenti alla pagina.
Adam Zuckerman,

Fatto. Nota: molti di questi sono spiegati anche su Wikipedia.
Geoffrey De Smet,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.