Estoy trabajando en una aplicación simple que generará un horario (planificador diario) para las escuelas. He leído los conceptos básicos de los algoritmos, pero estoy confundido en cuanto a dónde comenzar.
Qué algoritmo usar para generar el horario de las escuelas
El problema:
Asignar maestros a clases, teniendo en cuenta un gran número de limitaciones como:
1) Asunto
2) Experiencia del maestro
3) No más de 2 clases de forma continua .. etc
Sobra decir que no debe haber superposición. Básicamente, necesito asignar N maestros a M clases con un número fijo de horas de trabajo todos los días (8).
Las entradas:
1) Número total de clases
2) Maestros junto con su experiencia en la materia
3) Materias/Cursos para cada clase
4) Número de conferencias por clase por día
5) Otras restricciones flexibles como mínimo/máximo de horas de trabajo de un profesor por día, horas de trabajo totales por maestro por semana, etc
Mis preguntas:
1) ¿es correcto para verlo como un problema de asignación con múltiples restricciones?
2) ¿Qué algoritmo debería usar? (¿Algún algoritmo húngaro?)
3) ¿Debería comenzar obteniendo todo el conjunto de restricciones de una vez, y luego generar la tabla, o debería hacerse en pasos intermedios?
¡Soy un principiante para aprender/los algoritmos de la aplicación, así que cualquier ayuda apuntarme en la dirección correcta apreciada! Gracias.
Encontré un archivo PostScript que habla sobre un algoritmo ** Tabu Search ** (http://en.wikipedia.org/wiki/Tabu_search) para asignar profesores a las clases (http://www.uv.es/sestio /TechRep/tr01-01.ps). Es principalmente heurística matemática. Espero que te dé una dirección. –
Esto es un duplicado. Respondí esta misma pregunta hace un par de semanas: http://stackoverflow.com/questions/2177836/algorithm-for-creating-a-school-timetable –
@Stefano, enlace invaluable! Gracias – Checksum