Reservados todos los derechos.
Este documento ha sido extraído del CD Rom “Anales de Economía Aplicada. XIV Reunión ASEPELT -España. Oviedo, 22 y 23 de Junio de 2000”.
ISBN: 84-699-2357-9
DISEÑO DE CALENDARIOS DE EXAMENES EN LA
UNIVERSIDAD: ALGORITMOS GENÉTICOS
Zulema Furones
Joaquín Pacheco - [email protected]
Alberto Aragón - [email protected]
Universidad de Burgos
DISEÑO DE CALENDARIOS DE EXAMENES EN LA UNIVERSIDAD: ALGORITMOS GENÉTICOS
Zulema Furones1, Joaquín Pacheco2 y Alberto Aragón
1
Servicio de Informática. Universidad de Burgos Plaza Ismael Bañuelos s/n. BURGOS 09006
2
Departamento de Economía Aplicada. Universidad de Burgos Fac. C Económicas y Empresariales. C/Parralillos s/n. BURGOS 09006
Resumen.- La construcción de horarios universitarios, es un problema
común de todas las instituciones de enseñanza superior. Con la implantación de los nuevos planes de estudio, que pretenden aportar un mayor grado de flexibilidad en el diseño curricular de los estudiantes, el problema de la construcción de horarios y calendarios, tanto de clases como exámenes, se ha complicado en gran medida. Esto es debido al elevado número de asignaturas optativas y de libre elección que pueden ser elegidas. En muchas universidades, esta tarea se realiza de forma manual, suponiendo una enorme cantidad de tiempo y de trabajo administrativo, para conseguir en muchas ocasiones soluciones de poca calidad. En este trabajo se presenta un procedimiento basado en Algoritmos Genéticos aplicado al problema de la confección de calendarios de exámenes.
Palabras clave: Calendario de exámenes, Asignación de aulas, Algoritmos
Genéticos.
Area Temática Preferida: G1.
1. PLANTEAMIENTO Y FORMULACION DEL PROBLEMA
El problema de construcción de calendarios de exámenes es NP-completo, por lo que no se puede realizar una búsqueda exhaustiva de las soluciones en un tiempo razonable, y la investigación se ha decantado en los últimos tiempos, hacia la aplicación de técnicas heurísticas y metaheurísticas, que permiten obtener buenas soluciones en tiempos de computación más adecuados.
Plantearemos el problema como uno de asignación de recursos donde los recursos son profesores, alumnos, aulas y tiempos. Partiremos de un conjunto de eventos (exámenes), cada uno de los cuales tiene asociada una duración y un tamaño, que es el número de estudiantes real o estimado que se espera que asistan a él. Además existirá un conjunto de aulas de diversas capacidades, y un conjunto de períodos de tiempo en los cuales se realizarán los eventos. Un horario será una colección de n asignaciones, una para cada evento.
Para abordar el problema, nos hemos basado en un algoritmo genético adecuadamente configurado. Hay varias razones por las que los algoritmos genéticos
son particularmente apropiados para los problemas de horarios. En primer lugar, la funciones de evaluación y selección, son independientes de la codificación y de la forma de crear nuevos individuos. Esto significa, que la función de evaluación puede ser definida independientemente por la universidad, para reflejar sus deseos particulares con respecto a la calidad de la solución a obtener. También implica, que pueden utilizarse varias heurísticas ya desarrolladas, en la generación de nuevos individuos, lo que a menudo conducirá a una mejora del rendimiento. Finalmente, aunque un algoritmo genético normal converge hacia una solución, es posible ejecutarlo varias veces para obtener distintas soluciones equiparables en calidad, pero diferentes en sus detalles, lo que permitirá a los usuarios escoger entre varios horarios de buena calidad.
El problema está sometido a múltiples restricciones, de diversas clases y con diferentes niveles de importancia. Algunas de ellas son inviolables, es decir, ningún horario será aceptado si no las cumple y son las llamadas restricciones duras (hard). En cambio otras son convenientes o deseables y servirán para medir la calidad del horario obtenido. Éstas últimas se denominan restricciones blandas (soft). Un horario factible será aquel que satisfaga las restricciones duras. El que un horario sea factible no implica que sea un buen horario, esto vendrá determinado por el grado de satisfacción de las restricciones blandas.
Aunque muchas de las restricciones varían según la institución considerada, en general las restricciones siguientes son comunes a cualquier problema de horarios:
-RESTRICCIONES HARD:
C1: No dos exámenes simultáneos con alumnos comunes C2: No exceder la capacidad de las aulas
C3: Obligaciones o Exclusiones de algunos exámenes en determinados slots de tiempo.
Estas restricciones son las que definen un horario factible. En nuestro caso consideramos dos restricciones blandas, que medirán el grado de bondad de un horario factible.
-RESTRICCIONES SOFT:
C4: Ningún alumno con exámenes en el mismo día
C5: Ningún alumno con exámenes en períodos adyacentes
Es improbable que dadas las características del problema todas las restricciones anteriores puedan satisfacerse completamente.
-REPRESENTACIÓN DE LAS SOLUCIONES:
Para la codificación de las soluciones utilizaremos una representación directa. Los datos de entrada del problema serán:
1. Número de exámenes y sus duraciones:
2. Número de aulas y sus capacidades
A=(a1,a2,....,au) U aulas con capacidades C=(c1,c2,....cu) 3. Número de alumnos y sus exámenes
4. Obligaciones o exclusiones de los exámenes. En nuestro caso estas restricciones están relacionadas con la duración de los exámenes.
Los exámenes podrán comenzar en determinados slots de tiempo (franjas horarias), de duración fija, existiendo un número dado de slots por día. Consideramos que el número de días disponibles para realizar los exámenes está prefijado de antemano, es decir los horarios tendrán una duración fija que será un parámetro de entrada del algoritmo.
Con estas premisas una solución vendrá dada por una X-tupla:
(ti aj, tk al,..., tn am) donde el primer elemento corresponde al primer examen, el segundo al examen número dos y así sucesivamente, y representa que el examen uno comenzará en el slot de tiempo ti y se realizará en el aula aj, el examen dos comenzará en el slot tk y en el aula al, etc.
2. CARACTERISTICAS GENERALES DEL ALGORITMO
Los algoritmos genéticos son una herramienta de optimización de propósito general basada en el proceso de evolución biológica. Tienen la capacidad de encontrar soluciones óptimas globales en los espacios de búsqueda más complejos, incluso cuando se incrementan las dimensiones del problema, y por este motivo se han utilizado en una amplia variedad de aplicaciones. Operan en una población de soluciones representadas por alguna codificación. Cada miembro de la población denominado cromosoma, consta de una serie de genes, cada uno de los cuales es una unidad de información. Combinando genes de diferentes miembros de la población (crossover) se obtienen nuevas soluciones hijo. También es posible obtener nuevas soluciones alterando determinados genes de los elementos de la población (mutación). Entonces puede obtenerse una simulación de la “selección natural”, evaluando la calidad de cada solución y seleccionando los cromosomas más adecuados para sobrevivir a la siguiente generación. Después de un número de generaciones, la población converge hacia una buena solución.
La reproducción y el operador de cruce presionan al proceso para mejorar y converger hacia la solución, mientras que la mutación mantiene la diversidad de la población y permite una exploración más amplia del espacio de soluciones. En nuestro algoritmo se proponen distintos operadores dominio-dependientes y se utiliza una función de evaluación basada en penalizaciones ponderadas de las restricciones violadas.
El algoritmo genético básico puede ser descrito como sigue:
1. Generar aleatoriamente una población inicial de P cromosomas (soluciones). 2. Evaluar la población y ordenar los cromosomas en orden decreciente de su fitness
3. Aplicar el operador de selección para obtener dos cromosomas padres 4. Aplicar el operador de cruce a los cromosomas seleccionados
5. Aplicar el operador mutación a un elemento de la población
6. Evaluar la nueva población, ordenarla y eliminar los peores cromosomas 7. Repetir el paso 3 hasta cumplir algún criterio de parada
8. Impimir la mejor solución encontrada
-POBLACIÓN INICIAL Y CRITERIOS DE PARADA
Generalmente, es conveniente al enfrentarse con un problema nuevo, inicializar la población de manera aleatoria. Hacer evolucionar una población que ha sido generada aleatoriamente hasta llegar a tener una bien adaptada, es decir con configuraciones satisfactorias que sean soluciones aproximadas del problema de optimización, es un buen test para saber como está funcionando la implementación del AG. Esto se debe a que las características esenciales y críticas de la solución final, deben ser consecuencia del proceso evolutivo y no de los métodos utilizados para generar la población inicial.
Por lo tanto, generamos aleatoriamente una población inicial de P soluciones, donde P es un parámetro que puede ser variado en cada ejecución. En futuros trabajos propondremos la generación de poblaciones iniciales no aleatorias.
En cuanto a los criterios de parada, puede ejecutarse el algoritmo durante un número de iteraciones determinado o se puede utilizar alguna estimación del grado de convergencia de las soluciones obtenidas.
-FUNCIÓN DE EVALUACIÓN
El fitness de los cromosomas se calcula según una función basada en penalizaciones:
∑
+ = i i i W C f * 1 1 0< f ≤1Donde Ci son las restricciones violadas medidas en número de alumnos y Wi son los pesos asignados a cada restricción. De este modo, en el caso en que se cumplan todas las restricciones la función tomará el mayor valor posible (uno). Esta función permite presionar a la rutina de búsqueda para moverse lejos de los puntos menos deseables en el espacio de búsqueda y además permite obtener información desde puntos que son válidos para el AG pero no para el problema. En lugar de descartar los genes que no satisfacen las restricciones hard, se les asigna un coste elevado que hace que el algoritmo se mueva hacia resultados más aceptables.
Se evalúan las soluciones según la función de penalización calculando los costes de cada restricción violada, multiplicando el número de alumnos afectados por los pesos correspondientes a cada restricción. Además se calcula un coste para cada examen según el número de conflictos que presenta, teniendo en cuenta solamente las restricciones duras del problema.
A cada cromosoma de la población se le asigna un ratio de fitness, que es el fitness del cromosoma dividido por la suma de los fitness de todos los cromosomas en la población. Este ratio mide el valor de cada cromosoma relativo a los otros
cromosomas. A mayor ratio mayor fitness. La suma de todos los ratios de fitness es 1.
-OPERADOR DE SELECCIÓN
Los cromosomas padres se seleccionan para la reproducción de acuerdo a sus ratios de fitness. La función de selección es tal que los cromosomas más adecuados son elegidos con mayor probabilidad como padres de nuevos cromosomas, pero existe una probabilidad finita de que los cromosomas menos adecuados sean elegidos también. El cromosoma más adecuado tiene la mayor probabilidad de ser elegido y el peor
cromosoma tiene la menor probabilidad.
El procedimiento comienza generando un número aleatorio entre 0 y 1. Para identificar el cromosoma a elegir, se resta a 1 el ratio de fitness del mejor cromosoma. Si el número aleatorio es mayor o igual que el resultado, entonces el mejor cromosoma es el seleccionado. Si el número aleatorio es menor entonces se resta también el ratio de fitness del segundo mejor cromosoma. Si el número aleatorio es mayor que el resultado se elige este segundo cromosoma. El proceso continúa hasta que el ratio de fitness resultante es menor que el número aleatorio.
La función de selección expresada en pseudo-código sería:
Ordenar la población en orden decreciente de su ratio de fitness (los mejores primero) Generar un número aleatorio entre 0 y 1
For i=0 hasta (tamaño de la población –1)
Sumar los ratios de fitness de todos los cromosomas desde el 0 hasta el i If (1- suma anterior) <= que número aleatorio
Usar el cromosoma i y salir del bucle
De otro modo, incrementar i al siguiente cromosoma y continuar
En este algoritmo utilizamos un mecanismo de competición global para descartar los peores cromosomas, comparando el fitness de los nuevos cromosomas generados con el fitness del resto de cromosomas de la población y eliminado los peores.
-OPERADOR DE CRUCE
La función de reproducción es un two-point crossover (cruce en dos puntos). A partir de dos cromosomas padre se obtienen dos cromosomas hijo. Se generan aleatoriamente los dos puntos de cruce y se intercambia la información entre ellos. Si los puntos de cruce son i y j, y los cromosomas padre son:
C1=(e1,e2,e3,e4,……,ei,ei+1,…ej-1,ej,ej+1,……en) C2=(a1,a2,a3,a4,……,ai,ai+1,…aj-1,aj,aj+1,……an) Los cromosomas hijo generados serán :
H1=(e1,e2,e3,e4,……,ai,ai+1,…aj-1,ej,ej+1,……en) H2=(a1,a2,a3,a4,……,ei,ei+1,….ej-1,aj,aj+1,……an)
3. ALGORITMO GENETICO CON MUTACIÓN ALEATORIA
En el algoritmo básico aplicamos mutación aleatoria. Se elige aleatoriamente un elemento de la población, exceptuando el mejor cromosoma obtenido hasta el momento para evitar empeoramientos en la calidad de la solución. Entonces se elige un gen aleatoriamente de cualquier punto del horario y se le asignan unos nuevos valores de aula y de slot, generados también de forma aleatoria entre todos los valores posibles.
4. ALGORITMO GENETICO CON MUTACIÓN DIRIGIDA
Esta variante se diferencia del algoritmo anterior en el operador mutación. Se eligen aleatoriamente un elemento de la población y uno de sus genes y se intenta encontrar para éste, la mejor asignación de slot o de aula, de tal modo que se produzca la mayor mejora en el coste total del cromosoma. Si no existe mejora posible ni cambiando de slot ni cambiando de aula, entonces se utiliza la mutación aleatoria.
En resumen el operador mutación en esta variante consiste en: 1. Escoger aleatoriamente un cromosoma a mutar.
2. Elegir aleatoriamente uno de sus genes.
3. Asignar al gen el slot que dé lugar a la mayor disminución en el coste del cromosoma
4. Si no es posible esta mejora, asignarle el aula que dé lugar a la mayor mejora en el coste
5. Si no se consigue mejora, asignar aleatoriamente valores para el slot y aula del gen.
5. ALGORITMO MEMÉTICO
En este caso utilizamos el algoritmo genético básico incorporando unos procedimientos de búsqueda local para mejorar las soluciones obtenidas. La adición de búsqueda local a los operadores genéticos habituales inevitablemente tiene costes computacionales, pero puede estar justificada por la reducción en el espacio de búsqueda que debe ser explorado para encontrar la solución óptima.
El procedimiento consiste en aplicar un proceso de mejora a cada nuevo elemento generado por el operador de cruce. Se sigue utilizando mutación dirigida. El proceso de mejora consiste en generar aleatoriamente un gen del cromosoma hijo a mejorar y cambiarlo al slot que dé lugar al menor coste del cromosoma. El proceso se repite eligiendo aleatoriamente genes a mejorar, hasta que no es posible encontrar ninguna mejora en el coste total del cromosoma por cambio de slot, durante un número de iteraciones determinado.
Para la comparación de los diversos algoritmos, hemos tomado como datos de entrada los siguientes:
Nº de alumnos: 600 .Cada alumno tiene un número de exámenes comprendido entre 1 y 6. La duración de los exámenes varía entre 2 horas y 6 horas (valores enteros).
Nº de aulas : 5 con capacidades entre 20 y 150 alumnos (con valores múltiplos de 5). En cuanto a las aulas sólo consideramos su capacidad y no características especiales de éstas (acceso de minusválidos, laboratorios, aulas informáticas....). Además suponemos que la capacidad es la misma independientemente del examen que se lleve a cabo en ellas.
Nº de exámenes: 36
En nuestro problema consideramos un período de tiempo disponible para exámenes de 6 días (Lunes a Sábado) con 6 slots por día. En total habrá 36 slots, cada uno de ellos de dos horas de duración. La duración de cada slot se ha determinado en función de la duración media de los exámenes. Las horas de comienzo de los slots de cada día, podrían ser:
Mañana: 8h, 10h y 12h. Tarde: 16h, 18h y 20h.
De este modo se tiene que el slot cero indica el Lunes a las 8h, el slot 1 representa el Lunes a las 10h y así sucesivamente hasta el slot 35 que denota el Sábado a las 20 h.
Con estos datos se han generado aleatoriamente los exámenes de cada alumno y las capacidades de las aulas. Luego hemos calculado el número de alumnos comunes para cada combinación de dos exámenes, resultando un total de 604 restricciones. Además en nuestro ejemplo consideramos exclusiones y obligaciones prohibiendo la jornada partida, esto es, los exámenes deben realizarse de una sóla vez, sin interrupciones. Esto supone que los exámenes que duran 5 o 6h, sólo pueden empezar en los slots 0-3-6-9-12-15-18-21-24-27-30-33. Además, los exámenes que duran 3 ó 4h no pueden comenzar en los slots 2-5-8-11-14-17-20-23-26-29-32-35.
Los pesos tomados para las distintas restriciones son: W1=100, W2=100, W3=100, W4=1 y W5=1. Elegidos de este modo para evitar que las restricciones soft, desplacen a las restricciones hard.
El tamaño de la población es de 20 cromosomas. El algoritmo se ha ejecutado durante un número de 3000 iteraciones, registrando el tiempo que tarda en encontrar la mejor solución. Las probabilidades de mutación y de cruce son 1, es decir los dos operadores se aplican en cada iteración del algoritmo.
El programa se ha ejecutado en un PC con procesador Pentium a 150 Mhz y con 64 MB de RAM. Para cada una de las tres variantes del algoritmo, lo hemos ejecutado 10 veces, registrando la mejor solución encontrada y el tiempo transcurrido en segundos. Los resultados obtenidos se muestran en las tres tablas siguientes:
ALGORITMO GENÉTICO CON MUTACIÓN ALEATORIA: Ejecución Media 1 2 3 4 5 6 7 8 9 10 Mejor Solución 3279.6 3589 3298 2700 2888 4093 2874 3183 2894 3292 3985 Tiempo hasta la mejor solución en segundos 48.6 39 39 75 35 34 72 32 64 40 56
ALGORITMO GENÉTICO CON MUTACIÓN DIRIGIDA:
Ejecución Media 1 2 3 4 5 6 7 8 9 10 Mejor Solución 2495.2 2690 2477 2586 2478 2785 2283 2675 2703 1889 2386 Tiempo hasta la mejor solución en segundos 147.6 135 124 106 169 95 253 189 130 164 111 ALGORITMO MEMÉTICO: Ejecución Media 1 2 3 4 5 6 7 8 9 10 Mejor Solución 2172.9 1892 2289 2277 1888 2388 2189 2173 2378 2274 1981 Tiempo hasta la mejor solución en segundos 959.1 913 971 1043 1007 1184 734 1233 870 1014 622
Comparación de los algoritmos
0 10000 20000 30000 40000 50000 60000 70000 80000 0 200 400 600 800 1000 1200 1400 1600 1800 2000
Coste
Mutación aleatoria
Mutación dirigida
Memético
7. REFERENCIAS
Abramson D. and Abela J. (1991). "A parallel genetic algorithm for soving the school timetabling problem". Technical report, Division of Information Technology, C.S.I.R.O. Burke E., Elliman D.G. and Weare R.F. (1994). "A Genetic Algorithm for University Timetabling". AISB Workshop on Evolutionary Computing.
Burke E., Elliman D.G. and Weare R.F. (1995). "The Automated Timetabling of University Exams using a Hybrid Genetic Algorithm". AISB Workshop on Evolutionary Computing.
Carter M.W. (1986). "A Survey of Practical Applications of Examination Timetabling Algorithms". OR Practice 34, 193-202.
Coloni A., Dorigo M., and Maniezzo V (1991). "Genetics Algorithms and Highly Constrained Problems: The Timetable Case". Lecture Notes en Computer Science, vol. 496, pp. 55-59, Springer-Verlag.
Corne D., Ross P., and Fang HL. (1994). "Fast Practical Evolutionary Timetabling". Lecture Notes en Computer Science, vol. 865, pp. 251-263, Springer-Verlag.
Corne D., Ross P., and Fang HL. (1994). "Evolutionary Timetabling: Practice, Prospects and work in Progress". The Proceedings of the UK Planning and Sheduling SIG Worshop, Strathclyde.
De Werra D. (1985). "An Introduction to Timetabling". European Journal of Operational Research, vol. 19, pp. 151-162, Elsevier Science Publishers.
Ross P., Corne D., and Fang HL. (1994). "Improving Evolutionary Timetabling with Delta Evaluation and Directed Mutation". Proceedings of PPSN III. Springer Verlag.