¿Qué algoritmo debo usar para crear una función de programación automática del personal?

15

Imagine una pequeña empresa local (en mi caso, una guardería para perros) con unas pocas docenas de empleados a tiempo parcial. El objetivo es crear automáticamente horarios semanales de personal. Mi pregunta es sobre qué enfoques algorítmicos explorar para este problema.

Hay muchas limitaciones a tener en cuenta, principalmente (1) la disponibilidad del personal y (2) las necesidades de cada turno, no solo la cantidad de personal para cada turno, sino las habilidades necesarias para cada turno (por ejemplo, para un Para ciertos turnos, es posible que necesite a alguien que sepa conducir para hacer recogidas / entregas de perros, para otra persona, alguien que sepa cómo dar baños a los perros, etc.

Otras restricciones incluyen cosas como evitar o requerir ciertos combos de personal, tal vez debido a conflictos de personalidad por un lado, o la necesidad de entrenamiento por osmosis de un miembro del personal de mayor jerarquía en el otro.

Además, hay preferencias a tener en cuenta. Algunos miembros del personal prefieren las mañanas, otros dos días seguidos en lugar de decir lunes y jueves, etc. Sabemos que no siempre podemos satisfacer las preferencias de todos. De hecho, tenemos una jerarquía en la que los empleados obtienen sus primeros pasos en sus elecciones.

Tengo el presentimiento de que hay una manera de reducir o expresar este problema en un algoritmo ya resuelto. Pero no sé qué algoritmos explorar. ¿Qué algoritmos existentes y específicos serían más prometedores?

    
pregunta Ghopper21 22.04.2014 - 21:20
fuente

1 respuesta

13

Algoritmos como Búsqueda local ( Tabu Search , Recocido simulado , Late Acceptance ) funcionan muy bien en estos problemas.

Como sugiere Bob, si está trabajando en Java, eche un vistazo a OptaPlanner (abierto fuente). Vea este video en lista de empleados .

    
respondido por el Geoffrey De Smet 25.04.2014 - 18:50
fuente

Lea otras preguntas en las etiquetas