kmp search algorithm
Algoritmos de personal de la lista (5)
Nos estamos embarcando en un poco de I + D para un sistema de asignación de personal, y sé que hay algunos algoritmos sugeridos, como el algoritmo memético, etc., pero no puedo encontrar información adicional en la web.
¿Alguien sabe alguna revista de investigación o pseudocódigo que explique mejor estos algoritmos?
Gracias, Devan
Hay muchos temas que considerar al configurar un cronograma de la lista, por lo que la sugerencia de aku sobre algoritmos genéticos es la mejor.
Necesita una buena función de evaluación para determinar la calidad de la lista para dicho algoritmo, y puede, y debe, considerar cosas como las siguientes (pero no limitadas a):
- ¿Has resuelto el problema de la carga de trabajo con esta lista? (es decir, ¿tienes suficientes personas en el trabajo en todo momento?)
- si no, ¿puedes vivir con las consecuencias? (para los hospitales, es posible que tenga que posponer el almuerzo 15 minutos un día para tener suficientes personas disponibles para él o simplemente arrastrarlo un poco a tiempo)
- La lista es buena , considerando cosas como la estabilidad de turnos para cada persona, sus días libres, independientemente de si sacan los fines de semana con alguna regularidad
- es la lista legal? teniendo en cuenta cosas como las regulaciones locales, que regulan cosas como cuánto tiempo debe pasar entre un turno y otro (tiempo de inactividad), cuánto puede trabajar cada persona dentro de un intervalo determinado (día, semana, mes)
También es posible que desee ver una técnica llamada "recocido simulado". Al igual que los algoritmos genéticos, esto utiliza una función de evaluación para determinar la calidad de las soluciones candidatas, pero la generación de los candidatos tiende a ser más simple. Cada tipo de algoritmo ofrece mejores resultados en determinadas circunstancias: a partir de una breve encuesta de Google, parece que la genética tiene ventaja, pero el recocido será más rápido de implementar.
Aquí hay un documento de comparación (para un dominio diferente, no para la programación): http://www.ee.utulsa.edu/~tmanikas/Pubs/gasa-TR-96-101.pdf
Hemos utilizado el recocido simulado en una gran aplicación de programación y funcionó bien.
Para ser honesto, si el volumen de personal es inferior a 40, recomendaría una representación visual de la lista y dejar que el usuario finalice el calendario. Tal vez usaría un algoritmo para producir un calendario candidato para comenzar, y luego dejaría que el usuario juegue con él. Todavía podría usar la función de evaluación para verificar el trabajo del usuario y dar su opinión sobre cuán buena es su solución.
O usando OR ;)
Hace un tiempo leí un artículo de formación de estos muchachos.
Aquí hay un documento útil:
Algoritmos meméticos para el listado de enfermeras (pdf)
Contiene un poco de teoría y pseudocódigo.
El problema de programación es NP-hard y generalmente se resuelve usando algoritmos genéticos (GA).
Puede comenzar a aprender GA del artículo de Wikipedia