“GENERACIÓN DE HORARIOS ACADÉMICOS UNIVERSITARIOS EMPLEANDO ALGORITMOS GENÉTICOS” Autores: Gabriel Rodríguez, Marianela nelagabriel@latinmail.com Cruz Ortiz, Julio César jucecruz@terra.com Miguel Vásquez, Fredy Ricardo fredymv@hotmail.com Romero Ruiz, Hugo José Luis genesyss@hotmail.com Institución: Universidad Privada del Norte Facultad de Ingeniería de Sistemas Av. Ejercito Nº 920, Trujillo, Perú Teléfono: (051) 044 – 220062 Portal Web: www.upnorte.edu.pe Palabras Clave.- Búsqueda, generación de horarios, algoritmos genéticos, inteligencia artificial El presente trabajo de investigación detalla la construcción de una aplicación informática que implementa rutinas de búsquedas para la generación de horarios académicos basados en la teoría de John Holland quien propuso una manera de seleccionar individuos y de cruzarlos y Goldberg quien lo popularizó como el algoritmo genético simple, con la salvedad de que nuestra investigación no reduce los códigos genéticos a binario, sino que los trabaja en su formato original, gracias a la tecnología de punta computacional actual. La aplicación ha sido desarrollada en Microsoft Visual Studio .NET El funcionamiento del algoritmo genético sigue el siguiente proceso: 1. El sistema genera varios centenares de individuos o soluciones posibles. 2. Los que mejor se ajustan a los requerimientos, obtienen más posibilidades de reproducirse. 3. Se procede al cruzamiento de individuos aleatoriamente 4. De acuerdo a una heurística se decide, si los individuos, además deben mutarse o no y así se obtiene una nueva generación de individuo o soluciones. 5. Nuevamente se evalúa a los que mejor se ajustan a los requerimientos y obtienen más posibilidades de reproducirse. Las peores son descartadas. 6. Continuación: los pasos 3 y 4 se reiteran docenas de miles de veces. Tras miles de generaciones, el mejor individuo-solución resuelve el problema de manera satisfactoria. No se puede aspirar al óptimo absoluto. Todo este proceso se basa en el tipo de reproducción en el que la dotación genética del nuevo ser tiene dos o más orígenes. La gran ventaja del ordenador es que puede simular decenas de miles de generaciones en minutos. Este trabajo está basado en un algoritmo genético adecuadamente configurado. La función para nuestra evaluación esta definida independientemente por el usuario final, para reflejar sus deseos particulares (es decir, incluir en esta, todas las restricciones que deberán ser consideradas en el AG, así mismo las bonificaciones y penalizaciones a que se hace acreedor el/los individuo(s) en evaluación) con respecto a la calidad de la solución a obtener. También implica, que pueden utilizarse varias heurísticas o probabilidades ya desarrolladas, en la generación de nuevos individuos, lo que a menudo conduce a una mejora del rendimiento de éstos. Modelo de Aplicación del Algoritmo Genético El caso de estudio que se presenta en esta sección corresponde a las necesidades académicas para el semestre 2003-1 de la Universidad Privada del Norte - UPN. Partiremos entonces para este modelo, de un conjunto de clases (ofertas de un curso previstas por la universidad para un semestre académico), cada una de las cuales tiene asociada una duración y un tamaño, que es la cantidad de horas asignadas a la clase (divididas en horas de teoría, horas de practica y horas de laboratorio) y el número de estudiantes real o estimado que se espera que asistan a él. Además existe un conjunto de aulas de diversas características y capacidades, y un conjunto de períodos de tiempo, en los cuales se llevarán a cabo los eventos. Definimos entonces qué: un horario es una colección de N asignaciones, una para cada evento. Esta definición está sometida a múltiples restricciones, y con diferentes pesos. Algunas son inviolables, es decir, ningún horario será aceptado si no las cumple (restricciones duras). Y otras son convenientes o deseables y servirán para medir la calidad del horario obtenido (restricciones blandas). Variables Involucradas a. Facultad y Carrera Profesional.- el ámbito donde se dictaran las asignaturas de la universidad. b. Clases por especialidad.- Se refiere a la asignación de cursos para cada período. c. Carga horaria por Clase.- se refiere a la cantidad de horas de teoría, práctica y laboratorio asignadas a cada clase para el semestre en preparación. d. Características de la Clase.- única; compartida por docente, aula o laboratorio y/o carrera profesional. e. Número de carreras.- Cantidad de especialidades que se imparten en la institución. f. Disponibilidad horaria del personal docente.- Las horas disponibles en que el profesor puede estar frente a un grupo. g. Número y características de aulas.- Espacios físicos disponibles. h. Y algunas otras políticas particulares de asignación de clases. 3. REPRESENTACIÓN GRAFICA DE UN HORARIO El caso de estudio que se presenta en esta sección corresponde a las necesidades académicas para el semestre 2003-1 de la Universidad Privada del Norte - UPN. Cromosoma 1 Cromosoma 2 Cromosoma 3 Cromosoma n REPRESENTACIÓN DE UN HORARIO Primero Veamos un Cromosoma Representación de una Clase El código de una clase está formado por cuatro (4) dígitos. Los códigos de clase pueden ir desde 0001 hasta la clase 9999. Ejemplo: Aula L006 14 5 4352 Clas e Do c ente Dí a Grup o … 2915 Aula … L003 25 3 Do c ente Dí a Grup o Clas e 2407 4153 Aula B201 1 25 4167 2406 Clas e Do c ente Dí a Grup o Fig. 1 Representación Grafica de un Individuo Como habíamos descrito en la problemática…”…Un horario (Individuo) fig. 1 será una colección de N asignaciones, una para cada evento…” Esto significa que una asignación será tomada como un cromosoma del individuo fig. 2 y este a su vez estará seccionado en genes que no vienen a ser sino, los atributos de una asignación. Fig. 2 Representación Grafica de un Cromosoma Codificando un individuo de acuerdo a la estructura descrita: Representación de un Docente El código de un docente está formado por cuatro (4) dígitos. Los códigos de docente pueden codificarse desde 0001 hasta 9999. Ejemplo: Representación de un Día El código de un día está formado por un (1) dígito. Los códigos de día pueden codificarse desde 1 hasta 7. Ejemplo: Representación de un Aula El código de un aula está formado por cuatro (4) caracteres. Los códigos de aula pueden ser alfanuméricos, para incluir en este una letra que identifique a un pabellón o edificio o tipo de aula (aula de teoría, aula de prácticas o laboratorio de pruebas). Ejemplo: Representación de Grupo Hora Se ha tratado de representar todas las combinaciones existentes de horarios posibles que pudiesen existir para un día. Dicho de otra manera, existen clases que se dictan en grupos de una hora, de dos horas, de tres horas y hasta de cuatro horas contiguas, podemos observar entonces en el siguiente cuadro cuantos grupos contiguas de horas se han encontrado. Aula B201 C301 L003 L006 COMBINACIONES DE HORARIOS DISPONIBLES Horario de Clases Grupos de Horas Contiguas de Clases 07:00 – 07:50 1 2 08:00 – 08:50 1 3 2 4 09:00 – 09:50 1 3 2 4 10:00 – 10:50 1 3 2 4 11:00 – 11:50 1 3 2 4 12:00 – 12:50 1 3 2 4 13:00 – 13:50 1 3 2 4 14:00 – 14:50 1 3 2 4 15:00 – 15:50 1 3 2 4 16:00 – 16:50 1 3 2 4 17:00 – 17:50 1 3 2 4 18:00 – 18:50 1 3 2 4 19:00 – 19:50 1 3 2 4 20:00 – 20:50 1 3 2 4 21:00 – 21:50 1 3 2 22:00 – 22:50 1 Horarios Disponibles 16 8 7 5 5 4 4 3 3 3 TOTAL 58 Conclusiones o Es posible aplicar la técnica de Algoritmos Genéticos al problema de la generación de horarios académicos universitarios. o Se ha logrado expresar adecuadamente las políticas de asignación de horarios para el caso de la Universidad Privada del Norte. o En el algoritmo se proponen distintos operadores dominio-dependientes y se utiliza una función de evaluación basada en penalizaciones y bonificaciones de acuerdo a las restricciones definidas para el caso de estudio. o Se ha diseñado un algoritmo que logra una buena solución, siendo posible ejecutarlo varias veces y así obtener distintas soluciones equiparables en calidad, pero diferentes en sus detalles, lo que permitirá a los usuarios finales escoger entre varios horarios de buena calidad. Los programas han sido desarrollados en Microsoft Visual Studio .NET, utilizando C Sharp (C# ) como lenguaje de programación y SQL Server 2000 como gestor de bases de datos.