2008-10-16 10 views
9

Estamos embarcando en algunos R & 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.Algoritmos de personalización del perfil

¿Alguien sabe alguna revista de investigación, o pseudocódigo por ahí que mejor explica estos algoritmos?

Gracias, Devan

Respuesta

11

Aquí es un documento útil:

Memetic Algorithms for Nurse Rostering (pdf)

Contiene un poco de teoría y pseudo-código.

El problema de programación es NP-hard y generalmente se resuelve mediante algoritmos genéticos (GA).
Usted puede comenzar a aprender GA de Wikipedia article

1

Hay muchas muchas muchas cuestiones a considerar al establecer un horario de lista, por lo que la punta de aku acerca de los algoritmos genéticos es la mejor.

Se necesita una buena función de evaluación para determinar la calidad de la lista de este tipo de algoritmo, y que puede, y debe, considerar las cosas como lo siguiente (pero no limitados a):

  • has resuelto el problema de carga de trabajo con esta lista? (es decir, ¿tiene suficiente gente en el trabajo en todo momento?)
  • si no, ¿puede 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 ello, o simplemente arrastrarlo un poco a tiempo)
  • es la lista buena, teniendo en cuenta factores como la estabilidad del cambio para cada persona, sus días libres, ya sea que obtengan o no los fines de semana con alguna regularidad
  • ¿es legal la lista? tomar las cosas como las normas locales en cuenta, que regulan cosas como cuánto tiempo debe pasar entre un turno y otro (tiempo de inactividad), cuánto puede cada persona trabajar dentro de un intervalo dado (día, semana, mes)
6

Usted También puede querer 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í es un documento de comparación (para un dominio diferente, no programación): http://www.ee.utulsa.edu/~tmanikas/Pubs/gasa-TR-96-101.pdf

Hemos utilizado recocido simulado en una aplicación de programación grande y funcionaba bien.

Para ser sincero, si el volumen de personal es inferior a aproximadamente 40, recomendaría dar una representación visual de la lista y dejar que el usuario finalice el programa. 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.

-1

o utilizando OR;)

+0

-1 Aunque los problemas de los algoritmos de schduling serían relevantes para Operation Research, simplemente mencionar O sin elaborar no es una respuesta. Es como decir Por qué no usar IA, matemáticas o aloritmos – tovare

+0

Tomando un punto, me siento avergonzado. Pero en mi defensa, el OR es alink y con una breve pregunta sin restricciones sobre el dominio del problema no es fácil dar una respuesta elaborada. – Jonke

+0

Sí, como pena, necesitas encontrar un buen código de muestra de GA y publicar el enlace ;-) – tovare

0

leí un artículo de rostering algo these chicos hace un tiempo.

Cuestiones relacionadas