Вы находитесь на странице: 1из 89

Distribucin ptima de Horarios de Clases utilizando la tcnica de Algoritmos Genticos

Tesis Profesional Que para obtener el Ttulo de

Ingeniero en Computacin

Presenta

CARLA LENINCA PACHECO AGERO

Acatlima, Huajuapan de Len, Oaxaca

Agosto, 2000

Tesis Profesional presentada el 11 de Agosto del 2000 ante los sinodales: Dr. Juan Carlos Mendoza Dra. Virginia Berrn Lara Ing. Francisco Espinoza Maceda Asesores: Dr. Carlos A. Coello Coello Laboratorio Nacional de Inteligencia Artificial Xalapa, Veracruz Dr. Manrique Mata Montero University Memorial of Newfoundland St. Johns, NF,Canad M.C. Agustn Santiago Alvarado Universidad Tecnolgica de la Mixteca

A mis queridos padres, Julio y Antonia, por su apoyo constante, su confianza y su inmenso cario.

A Ivn, por su amor incondicional y por darme nimos durante la realizacin de este trabajo.

A mis hermanos: Csar, Julio y Mayra, para que este trabajo les sirva como estmulo para que alcancen su meta. A mis sobrinas Tani y Pame por ser los seres mas puros y maravillosos sobre la tierra.

Agradecimientos A mis padres y a Ivn por ser parte fundamental de mi vida y porque gracias a su apoyo incondicional he logrado mis metas. Al Dr. Carlos Coello Coello, por su amistad, por compartir su conocimiento conmigo y brindarme su ayuda durante el desarrollo de este trabajo. Al Dr. Manrique Mata Montero, por tener la fortuna de contar con su amistad y apoyo durante el desarrollo de este trabajo.

NDICE
ABSTRACT ................................................................................................... INTRODUCCIN ........................................................................................... CAPTULO 1
MTODOS DE OPTIMIZACIN

1 2

1.1 Introduccin .................................................................................... 1.2 Mtodo del Gradiente ....................................................................... 1.3 Mtodo del hill climbing .................................................................... 1.4 Bsqueda Iterativa ........................................................................... 1.5 Algoritmo Metrpolis ........................................................................ 1.6 Recocido Simulado ........................................................................... 1.7 Bsqueda Tab ............................................................................... 1.8 Bsqueda ciega o sin informacin ..................................................... 1.8.1 Bsqueda primero en anchura ....................................................... 1.8.2 Bsqueda primero en profundidad .................................................. 1.9 Bsqueda Aleatoria .......................................................................... 1.10 Algoritmos Genticos y los Mtodos de Optimizacin ........................ CAPTULO 2

5 5 6 6 7 8 9 11 11 11 12 13

ALGORITMOS GENTICOS

2.1 Introduccin ................................................................................... 2.2 Bases Biolgicas .............................................................................. 2.2.1 Reproduccin Sexual .................................................................... 2.2.2 Operador de Cruza ...................................................................... 2.2.3 Operador de Mutacin .................................................................. 2.3 Representacin ............................................................................... 2.4 Componentes Bsicos ...................................................................... 2.4.1 Elementos Fundamentales ............................................................ 2.5 Generacin .....................................................................................

14 16 17 20 20 21 22 24 26

2.6 Cundo aplicar un Algoritmo Gentico ............................................... CAPTULO 3


DISEO DEL ALGORITMO GENTICO PARA LA ASIGNACIN DE HORARIOS

29

3.1 Introduccin ................................................................................... 3.2 Planteamiento de la solucin a la asignacin de horarios .................... 3.3 Implementacin del Algoritmo Gentico ............................................ 3.3.1 Entorno de Desarrollo ................................................................ 3.3.2 Interfaz del Sistema .................................................................. CONCLUSIONES ........................................................................................... REFERENCIAS .............................................................................................. APNDICE A
MANUAL PARA EL USUARIO DEL SISTEMA PARA LA ASIGNACIN DE HORARIOS

30 31 33 34 35 40 42

Componentes del Sistema ...................................................................... Software del AG para la asignacin de horarios ....................................... APNDICE B

44 46

CDIGO DOCUMENTADO DE LOS PROCEDIMIENTOS Y FUNCIONES MAS


IMPORTANTES DEL SISTEMA

Programa para la asignacin de horarios ................................................

61

ABSTRACT

Elaborar una asignacin de horarios ptimos, es un problema por el que se atraviesa constantemente en cualquier institucin educativa, sobre todo si su poblacin de estudiantes crece desproporcionadamente con relacin a su infraestructura. En el presente trabajo se describe cmo este problema puede ser resuelto utilizando un Algoritmo Gentico. Esta tcnica ha sido muy utilizada en problemas similares. En este caso se decidi utilizarla ya que combina rapidez y eficiencia, produciendo as buenos resultados. Actualmente, esta tcnica de bsqueda ha alcanzado un impresionante xito debido a que su aplicacin en problemas de optimizacin no requiere de conocimiento auxiliar sobre el problema.

INTRODUCCION

Bajo el trmino de Tcnicas Heursticas Modernas (Reeves, 1993) se engloba a un conjunto de tcnicas de bsqueda de soluciones, cuyo funcionamiento se inspira en procesos naturales. Entre estas tcnicas se encuentran los Algoritmos Genticos (Holland, 1975), el recocido simulado (Kirkpatrick, 1982) y la bsqueda tab (Glover, 1989). Estas tcnicas se caracterizan por ser mtodos que generan soluciones que, a partir de valores iniciales, emplean un conjunto de mecanismos de bsqueda para mejorar stas. En los Algoritmos Genticos, estos mecanismos se basan en los modelos biolgicos de la evolucin propuestos por Charles Darwin, en su libro "Del origen de las especies por medio de la seleccin natural de 1859, tales como el mantenimiento de una solucin (poblacin) o la naturaleza probabilstica de ciertos operadores (seleccin, reproduccin, cruza,....), aunque ciertamente no son una rplica exacta del modelo de la evolucin.

El objetivo de este trabajo es el de contribuir a optimizar los recursos, tanto materiales como humanos con que cuenta la Universidad Tecnolgica de la Mixteca (UTM), misma que fue creada en el ao de 1991 en la regin del mismo nombre del estado de Oaxaca.

3 Introduccin

Para el ciclo escolar 2000-2001 la UTM cuenta en su infraestructura con 39 aulas, 5 salas de cmputo, 2 laboratorios de electrnica, 3 laboratorio de alimentos, 1 laboratorio de telecomunicaciones, etc., para un total aproximado de 1200 alumnos, que se encuentran divididos en grupos (de cuarenta estudiantes como mximo) que requieren como mnimo 5 horas de clase al da. Al hacer una asignacin de cursos de forma manual para tal cantidad de alumnos, puede ocasionarse que los horarios sean en muchas ocasiones incompatibles con las actividades de investigacin de los profesores de la planta docente de la UTM. Por lo que se pretende que mediante la elaboracin de un Algoritmo Gentico, trabajo de esta Tesis, se reduzcan los errores que se pueden presentar actualmente en la asignacin de horarios. Para la realizacin de este algoritmo se deben tomar en cuenta las siguientes condicionantes:

En las salas de cmputo no deben encontrarse ms de 20 alumnos, por lo que los grupos que cuenten con ms alumnos debern ser reasignados. Las clases comienzan a las 08:00 hrs y terminan a las 18:00 hrs, teniendo un receso de 13:00 hrs a 16:00 hrs. Las clases de las asignaturas de Matemticas y Fsica debern impartirse en las primeras horas de clase.

4 Introduccin

El siguiente trabajo de Tesis, comprende un total de cuatro captulos referentes a diversas reas temticas, dos apndices y un anexo, estructurados de la siguiente manera: En el primer captulo se abordan algunos de los mtodos de optimizacin que existen, as como sus caractersticas. Posteriormente se muestra una comparacin con los Algoritmos Genticos. En el segundo captulo se expone la investigacin que se hizo respecto a los fundamentos y bases biolgicas de los Algoritmos Genticos, as como sus conceptos bsicos y sus principales componentes. En el tercer captulo se da una introduccin al problema a resolver as como la solucin propuesta. Posteriormente se detalla como trabaja el sistema para la asignacin de horarios mostrando tambin algunos resultados obtenidos En el cuarto y ltimo captulo se muestran las conclusiones a las que se lleg despus de realizar este trabajo de Tesis. Al final de este documento se agregan los apndices A y B, los cules contienen el manual del usuario y el cdigo de las funciones y procedimientos ms importantes del Algoritmo Gentico para la asignacin de horarios, respectivamente. Tambin por ltimo se anexa un ejemplo de asignaciones realizadas por el Algoritmo Gentico, implementado en este trabajo, para los semestres de Octubre-Febrero y Marzo-Julio.

CAPITULO 1

MTODOS DE OPTIMIZACIN.

1.1

Introduccin.

El trmino optimizacin se refiere a un problema complejo de decisin, que incluye la seleccin de valores para cierto nmero de variables interrelacionadas, centrando la atencin en un solo objetivo diseado para cuantificar el rendimiento y medir la calidad de la decisin. Este nico objetivo se maximiza segn las restricciones que pueden limitar la seleccin de valores de las variables de seleccin. [Luenberger, 1989] A continuacin se hace una clasificacin de los mtodos de optimizacin, mencionando brevemente cmo funcionan algunos de ellos.

1.2

Mtodo del Gradiente.

Un nmero de diferentes mtodos de optimizacin se comportan como funciones continuas que han sido desarrolladas para utilizar informacin del gradiente de la funcin para guiar la bsqueda del ptimo global. Estos mtodos

6 Mtodos de Optimizacin

como el del gradiente conjugado, que usa la informacin de la funcin objetivo as como de sus derivadas parciales, tienen algunas desventajas, ya que si la derivada de la funcin no puede ser computada por el hecho de ser discontinua, el mtodo tiende a fallar. [Beasley, 1993]

1.3

Mtodo del hill climbing.

Otro mtodo es el denominado comnmente como hill climbing (escalado de colinas), que no requiere de la informacin de las derivadas de la funcin y que funciona adecuadamente slo si la funcin contiene un solo mximo (funciones unimodales). Pero en funciones con muchos mximos (funciones multimodales) tienden a cometer errores ya que el primer mximo local que encuentren en la funcin lo toman como si fuera el mximo global de la funcin y por tanto no continan la bsqueda. Un ejemplo en una sola dimensin se presenta en la figura 1. El escalado comienza en un punto aleatorio X y se mueve en forma ascendente donde el mximo B es encontrado, por lo tanto los mximos mejores, A y C no son encontrados. [Beasley, 1993]

Figura 1. Mtodo del escalado de colinas.

7 Mtodos de Optimizacin

1.4

Bsqueda Iterativa.

La bsqueda aleatoria combinada con el mtodo del gradiente da como resultado la bsqueda iterativa. Cada vez que se encuentra un mximo, la bsqueda comienza de nuevo pero con otro punto escogido al azar. Esta tcnica es de enorme simplicidad y su desempeo es bueno en funciones que no contengan muchos mximos locales. Cada vez que se busca otro punto aleatoriamente, ste es aislado y no se vuelve a tomar como parte del espacio de bsqueda. Esto significa que al estar buscando puntos stos pueden encontrarse en regiones donde existan mximos locales y no globales. [Beasley, 1993]

1.5

Algoritmo Metrpolis.

Este mtodo esta basado en la analoga con el proceso de recocido de slidos: Se incrementa la temperatura a una temperatura alta. Posteriormente se decrementa la temperatura muy lentamente hasta alcanzar un estado base. La idea principal de este algoritmo es la siguiente: Dado un estado inicial i, con energa Ei, Genera un nuevo estado j mediante un mecanismo de perturbacin (pequea distorsin del estado i). Calcula la energa del estado Ej. Si ( E j Ei ) 0 entonces acepta el estado j como nuevo.
E Ej Si no, acepta el estado con probabilidad exp i K .T donde T denota la B temperatura y KB la constante de Boltzmann.
B

8 Mtodos de Optimizacin

Si se baja la temperatura lentamente se puede alcanzar el equilibrio trmico en cada temperatura. Esto se hace mediante la generacin de varias transiciones en cada temperatura. El equilibrio trmico est caracterizado por la distribucin de Boltzmann. La distribucin da la probabilidad de que el slido est en el estado i con energa Ei a temperatura T y est dada por:
PT {X = i} = Ei 1 exp K T Z (T ) B

Donde X es la variable estocstica que denota el estado actual del slido y

Z(T) es la funcin de particin definida como:


Ej Z (T ) = exp K T .[Morales, 1999] j B

1.6

Recocido Simulado.

Esta tcnica fue inventada por Kirkpatrick en 1982, est basada en el algoritmo Metrpolis propuesto en 1953 y es esencialmente una variacin del hill

climbing. Kirkpatrick introdujo los conceptos de recocido dentro del mundo de la


optimizacin combinatoria. Comienza con la bsqueda de un punto escogido aleatoriamente y posteriormente con un movimiento aleatorio. Si el punto encontrado es uno de los mximos, entonces es aceptado. Si el punto es un mnimo entonces es aceptado con probabilidad p(t), donde t es el tiempo. El valor inicial de la funcin p(t) es muy cercano a uno y gradualmente se va acercando a cero; esto es anlogo al enfriamiento de un slido. Inicialmente cualquier movimiento es aceptado, pero conforme la temperatura se va reduciendo, la probabilidad de aceptar un movimiento negativo es mnima. Algunas veces los movimientos negativos son esenciales sobre todo si no se ha encontrado el mximo global, aunque obviamente muchos movimientos negativos pueden desviarnos a la bsqueda del ptimo global.

9 Mtodos de Optimizacin

Al igual que la bsqueda aleatoria, el recocido simulado trata con una solucin el mismo tiempo, esto ocasiona que no se vaya construyendo la figura a partir del espacio de bsqueda. La informacin de movimientos previos no es guardada para guiar los nuevos movimientos. Esta tcnica est en constante actividad de investigacin (recocido rpido, recocido paralelo, etc.). [Beasley, 1993]

1.7

Bsqueda Tab (BT).

La BT es un procedimiento heurstico de "alto nivel" introducido y desarrollado en su forma actual por Fred Glover (1989) y (1990). En trminos generales el mtodo de BT puede resumirse de la siguiente manera: Se desea moverse paso a paso desde una solucin factible inicial de un problema de optimizacin combinatoria hacia una solucin que proporcione el valor mnimo de la funcin objetivo C. Para esto se puede representar a cada solucin por medio de un punto s (en algn espacio) y se define una vecindad N(s) para cada punto s como un conjunto de soluciones adyacentes a la solucin s. El paso bsico del procedimiento consiste en empezar desde un punto factible s y generar un conjunto de soluciones en N(s), de estas se elige la mejor

s* y se posiciona en este nuevo punto ya sea que C(s*) tenga o no mejor valor
que C(s). Hasta este punto se est cercano a las tcnicas de mejoramiento local a excepcin del hecho de que se puede mover a una solucin peor s* desde s. La caracterstica importante de la BT es precisamente la construccin de una lista tab T de movimientos: aquellos movimientos que no son permitidos (movimientos tab) en la presente iteracin. La razn de esta lista es la de excluir los movimientos que nos pueden regresar a algn punto de una iteracin anterior. Ahora bien, un movimiento permanece como tab slo durante un cierto nmero

10 Mtodos de Optimizacin

de iteraciones, de forma que se tiene que T es una lista cclica donde para cada movimiento s a s* el movimiento opuesto s* a s se adiciona al final de T donde el movimiento ms viejo en T se elimina. Las condiciones tab tienen la meta de prevenir ciclos e inducir la exploracin de nuevas regiones. Pero esto no representa que las restricciones tab no sean inviolables bajo toda circunstancia. Cuando un movimiento tab proporciona una solucin mejor que cualquier otra previamente encontrada, su clasificacin tab puede eliminarse. La condicin que permite dicha eliminacin se llama criterio de aspiracin. Es as como las restricciones tab y el criterio de aspiracin de la BT, juegan un papel dual en la restriccin y gua del proceso de bsqueda. Las restricciones tab, permiten que un movimiento sea admisible si no est clasificado como tab, mientras que si el criterio de aspiracin se satisface, permite que un movimiento sea admisible aunque este clasificado como tab. En la BT tres aspectos merecen nfasis: 1. El uso de T proporciona la "bsqueda restringida" de elementos de la aproximacin y por lo tanto las soluciones generadas dependen crticamente de la composicin de T y de la manera como se actualiza. 2. El mtodo no hace referencia a la condicin de optimalidad local, excepto implcitamente cuando un ptimo local mejora sobre la mejor solucin encontrada previamente. 3. En cada paso se elige al "mejor" movimiento. Para problemas grandes, donde las vecindades pueden tener muchos elementos, o para problemas donde esos elementos son muy costosos de examinar, es de importancia aislar a un subconjunto de la vecindad, y examinar este conjunto en vez de la vecindad completa. Esto puede realizarse en etapas, permitiendo al subconjunto de candidatos expanderse si los niveles de aspiracin no se encuentran. [Gutirrez, 1999]

11 Mtodos de Optimizacin

1.8

Bsqueda ciega o sin informacin.

El orden en que la bsqueda se realiza no depende de la naturaleza de la solucin buscada. La localizacin de la meta(s) no altera el orden de expansin de los nodos. [Morales, 1999].

1.8.1 Bsqueda Primero en Anchura.


Explora progresivamente en capas del grafo de una misma profundidad. La bsqueda primero en anchura es una bsqueda completa (encuentra una solucin si existe) y ptima (encuentra la solucin ms corta) si el costo del camino es una funcin que no decrece con la profundidad del nodo. Pero tiene dos desventajas: requiere de mucha memoria, ya que bsicamente tiene que guardar la parte completa de la red que est explorando y la segunda es que en bsquedas de complejidad exponencial no se puede utilizar. La bsqueda en amplitud trabaja de la siguiente forma, si se tiene un factor de arborescencia de b y la meta est a profundidad d, entonces el mximo nmero de nodos expandidos antes de encontrar una solucin es: 1 + b + b 2 + b3 + .... + b d . [Morales, 1999]

1.8.2 Bsqueda primero en profundidad.


Esta bsqueda siempre expande uno de los nodos a su nivel ms profundo y slo cuando llega a un camino sin salida se regresa a niveles menos profundos. Aqu cada nodo que es explorado genera todos sus sucesores antes de que otro nodo sea explorado. Despus de cada expansin el nuevo hijo es de nuevo seleccionado para expansin.

12 Mtodos de Optimizacin

Si no se puede continuar, se regresa al punto ms cercano de decisin con alternativas no exploradas. Esta bsqueda necesita almacenar un solo camino de la raz a una hoja junto con los hermanos'' no expandidos de cada nodo en el camino. Por lo que con un factor de arborescencia de b y profundidad mxima de m, su necesidad de almacenamiento es a los ms bm. Su complejidad en tiempo (cunto se tarda) es O(bm) en el peor de los casos. Para problemas con muchas soluciones la bsqueda en profundidad puede ser ms rpida que de amplitud porque existe una buena posibilidad de encontrar una solucin despus de explorar una pequea parte del espacio de bsqueda La desventaja de la bsqueda en profundidad es que en situaciones donde los rboles de bsqueda tienen una profundidad muy grande puede caerse en ciclos infinitos. [Morales, 1999]

1.9

Bsqueda aleatoria.

La bsqueda aleatoria basa su trabajo en el uso de nmeros aleatorios para encontrar puntos mnimos. Desde que las libreras de los programas de las computadoras tienen generadores de nmeros aleatorios, esta bsqueda puede ser utilizada convenientemente. Algunas de las ventajas de esta bsqueda aleatoria son: Esta bsqueda puede trabajar adecuadamente an si la funcin objetivo es discontinua y no diferenciable en alguno de sus puntos. La bsqueda aleatoria puede ser usada para encontrar el mnimo global an cuando la funcin posea varios mnimos relativos. Esta bsqueda se puede aplicar cundo otros mtodos tienden a fallar al presentarse dificultades como: funciones con variaciones muy marcadas y funciones con regiones planas. [Rao, 1996]

13 Mtodos de Optimizacin

1.10 Algoritmos Genticos y los Mtodos de optimizacin tradicionales.


La siguiente tabla muestra una breve comparacin a modo de resumen de las caractersticas que poseen los Algoritmos Genticos, con respecto a otros mtodos de optimizacin. [Goldberg, 1989]

Algoritmos Genticos Trabajan con parmetros codificados, es decir que deben codificarse como cadenas de longitud finita sobre algn alfabeto infinito. Utilizan poblaciones de puntos, es decir que se usa una base de datos de puntos simultneamente, de tal forma que la probabilidad de quedar atrapados en ptimos locales se reduce.

Mtodos de optimizacin tradicionales. Trabajan con los parmetros mismos.

Operan sobre puntos individuales, ya que sus movimientos en el espacio de bsqueda se hacen de un punto a otro usando reglas de transicin determinstica. Esto puede ocasionar que se encuentren ptimos locales en lugar de ptimos globales. Requieren de mucha informacin auxiliar para trabajar adecuadamente.

No necesitan conocimientos auxiliares sobre el problema ya que usan informacin de la funcin de evaluacin con respecto a los cromosomas. Utilizan reglas probabilsticas. de transicin

Usan reglas determinstica.

14

CAPITULO 2

ALGORITMOS GENTICOS.

2.1 Introduccin
Una de las caractersticas ms notables de la Naturaleza es la existencia de organismos adaptados para la supervivencia en prcticamente cualquier ecosistema, incluso en los ms inhspitos. La importancia de este hecho se

manifiesta cuando se considera que el medio ambiente se encuentra sometido a continuos cambios, lo cual motiva que ciertas especies se extingan y otras evolucionen y adquieran preponderancia gracias a su adaptacin a la nueva situacin. Basndose en estos principios, muchos investigadores han intentado trasladar dichos principios al campo de la algoritmia, con el objetivo de obtener sistemas con caractersticas anlogas. De aqu, que en los ltimos aos, la comunidad cientfica internacional haya mostrado un creciente inters en una nueva tcnica de bsqueda de soluciones basada en la Teora de la Evolucin y que se conoce como Algoritmo Gentico (AG).

15 Algoritmos Genticos

Esta tcnica se basa en los mecanismos de seleccin que utiliza la naturaleza, de acuerdo a los cuales los individuos ms aptos de una poblacin son los que sobreviven al adaptarse ms fcilmente a los cambios que se producen en su entorno. Estos cambios se efectan en los genes 1 de un individuo, y sus atributos ms deseables, es decir los que le permiten adaptarse mejor a su entorno, se transmiten a sus descendientes cuando ste se reproduce sexualmente. [Coello, 1995] Los AGs son procedimientos de bsqueda basados en el mecanismo de seleccin natural, lo que permite que la exploracin de posibles soluciones en el espacio de bsqueda sea mayor que si se utilizaran mtodos tradicionales. [Goldberg, 1999]. Estos algoritmos fueron desarrollados por John H. Holland 2 en 1960 para resolver problemas de aprendizaje de mquina (machine learning). En un AG se define una estructura de datos que admite todas las posibles soluciones a un problema. Cada uno de los posibles conjuntos de datos admitidos por esa estructura ser una solucin al problema. Unas soluciones sern mejores, otras peores. Solucionar el problema consiste en encontrar la solucin ptima, y por tanto, los AGs son en realidad un mtodo de bsqueda. Pero un mtodo de bsqueda muy especial, en el que las soluciones al problema son capaces de reproducirse entre s, combinando sus caractersticas y generando nuevas soluciones. En cada ciclo se seleccionan las soluciones que ms se acercan al objetivo buscado, eliminando el resto de las soluciones. Las soluciones seleccionadas se reproducirn entre s, permitiendo de vez en cuando alguna mutacin o modificacin al azar durante la reproduccin. [Gascn De la Herrn, 1999a]

Se denomina gene o gen a cualquier posicin a lo largo de una cadena que representa a un individuo. 2 John Holland. Investigador de Universidad de Michigan, propuso los Algoritmos Genticos como una tcnica de bsqueda. [Holland, 1975]
1

16 Algoritmos Genticos

Los AGs son programas de computadora que desarrollan diferentes patrones de la seleccin natural para poder resolver problemas muy complejos, en los cuales se desconoce la solucin ptima global. Estos algoritmos hacen posible que se puedan explorar grandes espacios de posibles soluciones para un problema. Su funcionamiento est regido por dos procesos bsicos: la seleccin natural y la reproduccin sexual. El primero es la conexin entre los cromosomas 3 y la capacidad de sobrevivencia de sus estructuras decodificadas. Esto contribuye a que los cromosomas que codifican estructuras aptas se reproduzcan con ms frecuencia que los que codifican estructuras poco aptas, as se determina que miembros de la poblacin sobreviven para poder reproducirse, y el segundo, asegura la recombinacin de genes de los progenitores. [Holland, 1992]

2.2

Bases Biolgicas.

La evolucin de los seres vivos es un proceso extremadamente complejo y fascinante. A lo largo de la historia se ha tratado de explicar el funcionamiento del mismo mediante diversas teoras. Una de ellas es el Maltusianismo que menciona que dada la elevada tasa geomtrica de reproduccin de todos los seres orgnicos, su nmero tiende a crecer de manera exponencial. Dado que los alimentos, espacio fsico, etc. no lo hacen en la misma proporcin, nacern muchos ms individuos de los que es posible que sobrevivan, y en consecuencia, generalmente se recurre a la lucha por la sobrevivencia, ya sea con individuos de la misma especie o de especies distintas, o simplemente con el entorno, intentando modificar sus caractersticas adversas. De aqu que un individuo, si acta de un modo provechoso para l, tendr una mayor probabilidad de sobrevivir, y ser seleccionado naturalmente. [Malthus, 1860]

En biologa son elementos orgnicos para codificar la estructura de los seres vivos, en el contexto de los AGs es una estructura de datos que contiene una cadena de genes.

17 Algoritmos Genticos

La teora de la seleccin de las especies sostiene que aquellos individuos de una poblacin que posean las caractersticas ms ventajosas dejarn proporcionalmente ms descendencia en la siguiente generacin; y si tales caractersticas se deben a diferencias genticas, que pueden transmitirse a los descendientes, tender a cambiar la composicin gentica de la poblacin, aumentando el nmero de individuos con dichas caractersticas. De esta forma, la poblacin completa de seres vivos se adapta a las circunstancias variables de su entorno. El resultado final es que los seres vivos tienden a perfeccionarse en relacin con las circunstancias que los envuelven. [Darwin, 1859] Las bases de un AG son: la gentica, la reproduccin sexual y las mutaciones. Aunque los AGs estn inspirados en las ideas biolgicas de la teora de la evolucin, esto no quiere decir que sean una rplica del modelo exacto de la evolucin. En un algoritmo gentico se establece una relacin entre cada una de las posibles soluciones a un problema, y un cdigo gentico, patrn o cadena de informacin, que de alguna forma las representa. Este cdigo gentico podr sufrir mutaciones, transmitirse a la descendencia y combinarse con otros mediante reproduccin sexual. El cdigo es seleccionado naturalmente decidiendo si se mantiene o no en el sistema. Tambin puede ser evaluado cuantitativamente, asignndole un peso.

2.2.1 Reproduccin Sexual.


En la reproduccin sexual, la informacin gentica de ambos progenitores se combina generndose el cdigo gentico de un nuevo individuo. Adems, existe una cierta probabilidad de que en este proceso se produzca alguna mutacin (variacin al azar) del material gentico resultante.

18 Algoritmos Genticos

La reproduccin sexual tiene la ventaja de que combina dos (o ms) bloques de genes que ya han probado su efectividad, de manera que es posible que el patrn resultante herede las caractersticas deseables en ambos progenitores, en cuyo caso ser seleccionado, aumentando la existencia de dichas caractersticas en la poblacin. Lo ms sencillo es que el patrn represente directamente una solucin. Sin embargo, muchas veces esto no es posible. En los seres vivos, los genes, ms que determinar directamente las caractersticas que definen un nuevo individuo, definen un conjunto de reglas de desarrollo que, aplicadas y combinadas, provocarn dichas caractersticas. Para ello, la dotacin gentica, que existe en todas las clulas de cada ser vivo, controla la realizacin de ciertas reacciones qumicas, de manera que los genes son los que determinan, pero no directamente, la constitucin y comportamiento de dicho individuo. [LBS, 1999] El operador de reproduccin sexual puede ser implementado en un algoritmo de diferentes formas. Sin embargo la forma ms fcil es la tcnica conocida como la rueda de la ruleta. En esta tcnica cada cadena de la poblacin est representada como una porcin de la rueda, de acuerdo con su evaluacin. Posteriormente se gira la rueda y se escogen nmeros al azar. La cadena seleccionada ser aquella cuya evaluacin sea mayor o igual al nmero aleatorio. Posteriormente cada cadena seleccionada para ser reproducida, es replicada exactamente. Esto se puede ver claramente con el siguiente ejemplo: Consideremos una poblacin inicial de cuatro cadenas: 01101 11000 01000 10001

19 Algoritmos Genticos

Al aplicarles la funcin de aptitud (que puede verse como una caja negra), arroja los siguientes valores: No. 1 2 3 4 Cadena 01101 11000 01000 10011 Aptitud 169 576 64 361 1170 % del Total 14.4 49.2 5.5 30.9 100.0

Sumando las aptitudes de todas las cadenas obtenemos un total de 1170 puntos. Los porcentajes correspondientes de las cadenas pueden verse de la siguiente forma en la rueda de la ruleta:

Figura 1. Reproduccin simple utilizando la rueda de la ruleta, donde cada cadena es representada segn el valor del % de la aptitud.

Para la reproduccin, en este ejemplo la cadena nmero 1 tiene una aptitud de 169, la cual representa el 14.4% del total del mismo. Como resultado, la cadena 1 est representada en la rueda como el 14.4% de ella, es decir la probabilidad de que esta cadena sea seleccionada para la reproduccin es de 0.144. Durante esta fase a las cadenas seleccionadas se les hace una copia idntica.

20 Algoritmos Genticos

Estas nuevas cadenas sern una poblacin de padres a la cul se le aplicar el operador de cruza.

2.2.2 Operador de Cruza.


Este operador es fundamental en la evolucin, ya que efecta el intercambio de material gentico entre los individuos de una poblacin. Este operador es lo que diferencia a los AGs de otros algoritmos. En un AG la cruza simple recombina el material gentico de dos cromosomas para crear descendientes. Esta operacin involucra dos pasos: 1) las cadenas de la nueva poblacin son apareadas aleatoriamente, 2) cada par de cadenas experimentan un corte aleatorio e intercambian ese material gentico entre ellas. La figura 2 muestra un ejemplo del operador de cruza. [Goldberg, 1989]

Figura 2. Operador de cruza, usando un punto de cruza escogido al azar.

2.2.3 Mutacin.
Permite que las poblaciones se vuelvan heterogneas, conservando as una diversidad que mantiene constante el proceso de evolucin. Una mutacin consiste en seleccionar aleatoriamente un cromosoma, posteriormente se escoge un gen al azar y se cambia el valor de este gen.

21 Algoritmos Genticos

2.3

Representacin.

En un AG tradicional una solucin al problema puede considerarse como un cromosoma. La representacin tradicional usada es el esquema binario en el cual un cromosoma es una cadena de la forma (a1, a2,..., ak), donde a1, a2,..., ak se denominan alelos y stos pueden tomar el valor de cero o uno. Existen muchas razones por las cuales la codificacin binaria es la ms utilizada. La mayora de ellas se refieren al trabajo desarrollado por Holland, ya que compar dos representaciones diferentes que tuvieran aproximadamente la misma capacidad de acarreo de informacin, pero de ellas, una tena pocos alelos y cadenas largas y la otra tena un nmero grande de alelos y cadenas cortas. Holland argument que la primera opcin permita un grado ms elevado de

paralelismo implcito porque permite la creacin de ms esquemas. Un esquema es


una plantilla que describe un subconjunto de cadenas que comparten ciertas similitudes en algunas posiciones a lo largo de su longitud. [Holland, 1992] El hecho de tener ms esquemas favorece la diversidad e incrementa la posibilidad de que se formen buenos bloques constructores (porcin de un cromosoma que le produce una aptitud elevada a la cadena en la cual est presente) en cada generacin, lo que en consecuencia mejora el desempeo del AG. El paralelismo implcito, se refiere al hecho de que mientras el AG calcula las aptitudes de los individuos en una poblacin, calcula de forma implcita las aptitudes promedio de un nmero mucho ms alto de cadenas cromsomicas a travs del clculo de las aptitudes promedio observadas en los bloques

constructores que se detectan en la poblacin.

22 Algoritmos Genticos

Por lo tanto, es preferible contar con muchos genes que tengan pocos alelos posibles que contar con pocos genes con muchos alelos posibles. Esto tiene una justificacin biolgica, ya que en gentica es ms usual tener cromosomas con muchas posiciones y pocos alelos por posicin que pocas posiciones y muchos alelos por posicin. [Coello, 1999]

2.4

Componentes Bsicos.

Un AG, como se ha dicho antes, es un proceso probabilstico e iterativo que opera sobre un conjunto P de individuos (poblacin), cada uno de los cuales contiene uno o ms cromosomas. Dichos cromosomas permiten que cada individuo represente una posible solucin al problema que se est considerando. Un proceso de codificacin-decodificacin () permite obtener la solucin que los cromosomas de cada individuo contienen. Inicialmente, esta poblacin es generada aleatoriamente. Cada uno de los individuos de la poblacin recibe, a travs de una funcin de evaluacin de la aptitud (fitness (F)), una medida de su comportamiento con respecto al problema a resolver. Este valor es utilizado por el algoritmo para guiar la bsqueda.

23 Algoritmos Genticos

El proceso completo de un AG se muestra en la figura 3.

Figura 3. Proceso que efecta un Algoritmo Gentico

Como puede apreciarse, el algoritmo est estructurado en tres fases principales que se ejecutan de manera circular: seleccin (), reproduccin (x ,

m) y el reemplazo(), las cuales se llevan a cabo de manera repetitiva. Cada una


de las iteraciones del algoritmo se denomina ciclo reproductivo bsico o generacin. Este proceso se realiza hasta que se alcanza un determinado criterio de terminacin. Durante la fase de seleccin se crea una poblacin temporal P, en la que aquellos individuos ms aptos (los correspondientes a las mejores soluciones contenidas en la poblacin) estarn representados un mayor nmero de veces que los pocos aptos (principio de seleccin natural). A los individuos contenidos en esta poblacin temporal se les aplican los llamados operadores reproductivos. El objetivo de esta fase es producir individuos con nuevas caractersticas, idealmente mejores (principio de adaptacin).

24 Algoritmos Genticos

Finalmente, durante la fase de reemplazo, se substituyen individuos de la poblacin inicial por los nuevos individuos creados. Este reemplazo afecta a los peores individuos y tiende a conservar a los mejores (supervivencia de los mejor

adaptados). Todo este proceso se sigue hasta alcanzar el objetivo deseado.

2.4.1 Elementos Fundamentales.


Un AG puede ser definido como una tupla AG (, , f, I, S, R, X, Kx, M, Km,), donde cada componente tiene el significado que a continuacin se indica:

y son los elementos del alfabeto empleado para construir cromosomas y la


longitud de los mismos. Dichos cromosomas forman el espacio de genotipos 4 . En su forma ms convencional, el alfabeto es binario (={0,1}).

f es la funcin de evaluacin que relaciona los cromosomas con el


comportamiento de las soluciones que representan.

I es el operador de inicializacin, responsable de generar los individuos que


formarn parte de la poblacin inicial. Usualmente estos individuos se generan en forma aleatoria.

S es el denominado operador de seleccin. Su misin es determinar cules de


los cromosomas presentes en la poblacin pasan a la fase reproductiva. Dicha seleccin est guiada por los valores de la evaluacin de estos cromosomas, de manera que aquellos que tengan una evaluacin mayor tendrn una mayor probabilidad de ser seleccionados.

El genotipo es la cadena cromosmica utilizada para almacenar la informacin contenida en un individuo.

25 Algoritmos Genticos

Un mecanismo utilizado para realizar esta seleccin es el que est en funcin de la proporcin de la contribucin de cada individuo a la aptitud total de la poblacin. Para esto se realiza una seleccin aleatoria en la que el individuo i-

simo cuya evaluacin es fi y tiene una probabilidad pi de ser seleccionado


calculada como

pi =

fi

f
i

para toda i =1,...., N R es el operador de reemplazo. Su misin es formar una nueva poblacin a partir de la ya existente y de los individuos creados durante la fase reproductiva. X es el operador de cruza y Kx sus parmetros. La misin de este operador es producir soluciones a partir de las ya existentes. Este operador es una funcin de la forma

X : G k1 K x G k 2

Dnde G es el espacio de cromosomas y Gk1, Gk2 son los cromosomas que se cruzaran entre s. M es el operador de mutacin y KM su parmetro. La misin de este operador es producir nuevas soluciones a partir de la modificacin de un cierto nmero de posiciones de una solucin ya existente. La mutacin se representa como M : G KM G En las versiones clsicas del operador, KM indica la proporcin de posiciones de la cadena que sufrirn modificacin. Esta modificacin es necesaria para introducir nuevo material gentico a la poblacin.

26 Algoritmos Genticos

es el criterio de terminacin que determina cundo se debe


ejecucin del algoritmo. Este puede ser:

concluir la

Finalizar la ejecucin tras realizar un nmero mximo de evaluaciones de


la funcin objetivo.

Finalizar la ejecucin cuando tras de un determinado nmero de


iteraciones no se ha obtenido ninguna mejora global de la solucin.

Finalizar la ejecucin cuando se obtiene una solucin cuya calidad se


estima suficiente.

2.5

Generacin.

Los mecanismos que ligan a un AG con el problema a resolver son: la

codificacin del problema en un cromosoma y la funcin de evaluacin 5 . Esta


ltima es esencial en procesos de optimizacin. La operacin bsica de un AG es muy simple: (a) Mantener una poblacin de soluciones para un problema, (b) Seleccionar las mejores soluciones y recombinarlas entre s, y (c) Usar a los progenitores para reemplazar aquellas soluciones menos convenientes. El proceso de seleccin y combinacin se lleva a cabo a travs de reproduccin sexual y mutacin. Generalmente esto nos conduce a soluciones mejores que las originales, y frecuentemente a soluciones mejores que las propuestas por otros mtodos. [Goldberg, 1999]

En general una funcin de evaluacin tiene como entrada un cromosoma y como salida un nmero o una lista de nmeros que representan el funcionamiento del cromosoma del problema a ser resuelto. [Goldberg, 1989]
5

27 Algoritmos Genticos

Los pasos que realiza un algoritmo gentico son: 1. Se genera un conjunto de soluciones vlidas al problema. Cada una de estas entidades representa una solucin distinta a un mismo problema. Estas entidades se pueden generar al azar. Tambin se pueden generar a partir de soluciones ya conocidas del problema, que se pretendan mejorar, o mediante posibles "pedazos de soluciones" (ms conocidos como bloques constructores). Es decir, con lo que creemos que pueden ser elementos componentes de la solucin final aunque no sepamos cmo combinarlos. 2. Se evalan las soluciones existentes, y se decide, en funcin de esta evaluacin, dos cosas. Por una parte, cules soluciones van a sobrevivir y cules no; y por otra, cules se van a reproducir y cules no. En el caso de reproducirse, se especifica la capacidad reproductora de la solucin, de forma que es posible decidir que unas soluciones se reproduzcan ms que otras. 3. Tal como se ha establecido en el paso anterior, se eliminan ciertas soluciones y se mantienen otras, y se efecta la reproduccin o recombinacin de genes (normalmente por parejas) de las entidades existentes. Por ejemplo, se realizan cruzas de patrones a partir de cierto punto elegido al azar, de forma que los nuevos patrones posean un segmento de cada uno de los progenitores. 4. Se efectan mutaciones (cambios al azar en los genes) de los nuevos patrones, segn una tasa determinada.

28 Algoritmos Genticos

5. Regresa al paso 2 hasta que se cumpla el criterio de parada, que puede ser por ejemplo, que el peso o propiedad de la mejor entidad supere cierto valor. [Gascn, 1999] Esto puede ejemplificarse mejor con el pseudocdigo fundamental de un AG: BEGIN /*Comienzo del algoritmo gentico */ Generacin de la poblacin inicial Cmputo de la aptitud de cada individuo WHILE NOT finalice DO BEGIN /*Produce una nueva generacin */ FOR (Tamao de la poblacin)/2 DO BEGIN /*Ciclo reproductivo */ Selecciona dos individuos de la poblacin anterior para realizar la cruza. /* Preferencia para los individuos de mayor aptitud */ Se recombinan los dos individuos para generar dos descendientes. Cmputo de la aptitud de los descendientes. Se insertan los descendientes en la nueva poblacin. END IF poblacin converge THEN Finalice := TRUE END END

29 Algoritmos Genticos

2.6

Cundo Aplicar Un Algoritmo Gentico.

La aplicacin ms comn de los AGs ha sido la solucin de problemas de optimizacin, en donde han mostrado ser muy eficientes y confiables. Sin embargo no todos los problemas pueden ser apropiados para esta tcnica, por lo que se deben tomar en cuenta las siguientes caractersticas antes de usar este mtodo de solucin: El espacio de bsqueda (posibles soluciones) del problema a resolver debe estar delimitado dentro de un cierto rango. Debe poder definirse una funcin de aptitud que indique que tan buena o mala es una respuesta dada. Las soluciones deben codificarse de una forma que resulte relativamente fcil de implementar en una computadora. No debe existir un algoritmo determinstico o heurstico eficiente y confiable para resolver el problema. El AG nicamente maximiza, pero la minimizacin puede realizarse utilizando el recproco de la funcin de maximizacin. [Goldberg, 1999]

30

CAPITULO III

DISEO DEL ALGORITMO GENTICO PARA LA ASIGNACIN DE HORARIOS.

3.1 Introduccin.

a elaboracin de horarios consiste en asignar ptimamente tiempos y lugares a los diferentes cursos que son impartidos en una Institucin Educativa, con el objetivo de satisfacer algunas restricciones

importantes que se presenten, como son el nmero limitado de aulas, de laboratorios, de salas de cmputo, de espacios entre un curso y otro, etc. La principal restriccin (central en toda asignacin de horarios), es que no existan choques, es decir que dos o ms cursos que esperan recibir los estudiantes o impartir los profesores no sean asignados simultneamente.

31 Diseo del Algoritmo Gentico para la Asignacin de Horarios

3.2

Planteamiento de la solucin a la asignacin de horarios.

El elemento bsico de cualquier asignacin de horarios es un conjunto de cursos o materias C={C1, C2, C3, C4,......., Cm}, donde cada elemento de C requiere que se le asigne un lugar y un tiempo. Las aulas con que cuenta la Universidad pueden ser vistas como un conjunto de casillas que estn disponibles las 7 horas al da (de las 08:00 a las 13:00 hrs y de las 16:00 a las 18:00 hrs) de Lunes a Viernes, esto da como resultado un total de 7n_aulas (donde n_aulas representa el nmero total de aulas) espacios disponibles para asignarles los cursos correspondientes. Suponiendo que cada curso tiene una leccin diaria por cada da de la semana, tendramos 1 7 n _ aulas espacios disponibles, en el caso particular de la

Universidad Tecnolgica de la Mixteca esto se debe a que la leccin del curso que se imparte el da Lunes a una determinada hora ser el mismo que en los dems das de la semana. De esta manera la calendarizacin de los m cursos es una funcin que mapea a cada curso con un espacio disponible.

Inicialmente se crea al azar cierto nmero de funciones. Cada una de estas funciones asigna al conjunto {C1, C2, C3,.., Cm} al codominio de espacios disponibles denominado {E0,, ..., E7n_aulas}. A estas funciones las llamaremos F1,..., Fk , donde k es un nmero entero positivo.

33 Diseo del Algoritmo Gentico para la Asignacin de Horarios

Esto puede verse mejor en la siguiente figura:

Figura 4. Correspondencia entre los cursos a impartir y los espacios disponibles, determinada por la funcin

Fi0 para algn io {1,..., k}.

Despus de que se han creado las funciones se determina la aptitud de cada funcin, es decir, qu tan buena es la calendarizacin que cada funcin representa. Esto se hace de la siguiente forma: para cada funcin debemos de determinar cuantos choques les causa la calendarizacin a los estudiantes. Puesto que sabemos cules son los cursos que cada estudiante debe recibir, entonces tomamos los cursos que debe llevar cada estudiante y (digamos que estamos buscando la aptitud de la funcin F1) determinamos si ese estudiante tiene algn conflicto de horario en relacin con la calendarizacion especificada por F1. Por cada choque le restamos cierta cantidad a la aptitud de F1. El cmputo de la aptitud de una funcin adems incorpora restricciones como: que los cursos del rea de Matemticas y Fsica deben asignarse en las primeras horas, que dos o ms cursos asignados a un estudiante no sean calendarizados a la misma hora, etc.

33 Diseo del Algoritmo Gentico para la Asignacin de Horarios

As, que

cada vez de que se encuentra que algn estudiante tiene

asignadas materias de Matemticas o Fsica en su horario en las primeras horas o que tiene muy pocos huecos entre cursos, entonces se da un bono a la funcin, por lo tanto la funcin que tenga la mayor aptitud ser la que represente la mejor calendarizacin. Cuando se ha calculado la aptitud de todas las funciones que se crearon al azar, entonces tenemos la primera poblacin. (Los elementos de esta poblacin, o entidades, son las funciones, y "estarn mas adaptadas al ambiente" cuanto ms alta sea su aptitud). De esta poblacin se hace el mating pool 6 y posteriormente se realiza la reproduccin sexual, esto se lleva a cabo tomando pares de funciones del

mating pool y recombinndolas. Esto con el objetivo de crear dos nuevas funciones
que se agregarn "en la prxima generacin" de la poblacin. Cuando ya se han creado suficientes funciones para la nueva generacin, se les calcula sus aptitudes y se desecha la generacin anterior. La nueva generacin se convierte en la generacin actual la cul se usa para crear un mating pool y la historia se repite. El proceso termina hasta que por medio de reproduccin sexual se obtiene alguna funcin con una aptitud suficientemente alta para satisfacer nuestras necesidades.

3.3 Implementacin del Algoritmo Gentico.


Se decidi utilizar un Algoritmo Gentico para solucionar los problemas de asignacin de horarios en la UTM, debido a que este mtodo de optimizacin conjuga rapidez y eficiencia en su trabajo produciendo resultados aceptables, por eso es que esta tcnica ha sido muy utilizada en problemas similares.
6

Se refiere a la seleccin de las funciones que sern los padres para la primer generacin. [Holland,1992]

34 Diseo del Algoritmo Gentico para la Asignacin de Horarios

Actualmente, esta tcnica de bsqueda ha alcanzado un impresionante xito debido a que su aplicacin en problemas de optimizacin no requiere de mucho conocimiento sobre el problema 7 .

3.3.1 Entorno de desarrollo.


Con los sistemas operativos actuales de ambiente visual, un programa debe tener la capacidad de interactuar grficamente con la pantalla, el teclado, el ratn y la impresora, es por eso que el Sistema para la asignacin de horarios, fue desarrollado en Visual Basic 6.0 ya que en la actualidad es uno de los lenguajes ms accesibles a los usuarios por su entorno visual. Otra ventaja de Visual Basic es que sus aplicaciones corren sobre plataforma Windows, por lo que ofrece un alto grado de interaccin con el usuario ya que utiliza elementos grficos que forman los objetos que el usuario ve en su ventana de aplicacin. Otro punto importante a tomar en cuenta en la eleccin del entorno es que Visual Basic permite que los programas con l desarrollados sean de fcil mantenimiento.

Necesitamos conocer el problema para definir la funcin de evaluacin, pero despus, durante la bsqueda, slo nos concentramos en los cromosomas.

35 Diseo del Algoritmo Gentico para la Asignacin de Horarios

3.2.2 Interfaz del Sistema.


El Sistema para la Asignacin de Horarios fue construdo utilizando el lenguaje Visual Basic 6.0. El men principal del sistema para la asignacin de horarios consta de tres opciones: entrar al sistema, informacin sobre el mismo y salir a Windows. A continuacin se muestra esta pantalla:

Figura 5. Interfaz del sistema para la asignacin de horarios en la UTM.

36 Diseo del Algoritmo Gentico para la Asignacin de Horarios

Al hacer doble click sobre el icono de Entrar al Sistema aparece la siguiente pantalla donde se da opcin al usuario de introducir el nmero de aulas a utilizar, el perodo que se va a abrir (ya que en el caso particular de la UTM, en el perodo de Octubre-Febrero se abren los semestres nones y en el perodo de Marzo-Julio los semestres pares), as como el nmero de generaciones a producir.

Figura 6.

Ventana para introducir datos referentes al nmero de aulas, perodo

correspondiente y nmero de generaciones.

37 Diseo del Algoritmo Gentico para la Asignacin de Horarios

A continuacin se muestra la pantalla en dnde se capturan los nmeros de grupos por semestre segn la carrera, esto con el fin de escribir las materias correspondientes en el archivo para su posterior lectura y asignacin. (Slo se muestra para una carrera, pero esta captura se hace para las siete carreras que se imparten en la UTM).

Figura 7. Captura del nmero de grupos por cada carrera.

Despus de capturar los grupos de cada carrera y de la posterior escritura de las respectivas materias el nmero de veces igual al nmero de grupos, se genera aleatoriamente cierto nmero de funciones a las cuales se les asignan los cursos a impartir, esto tambin de manera aleatoria. Ya que las materias son asignadas aleatoriamente a las funciones, se realiza su evaluacin, tomando en cuenta algunas restricciones como que las materias del rea de Matemticas y Fsica deben impartirse en las primeras horas, y la ms importante: que dos o ms cursos que va a cursar algn alumno no se encuentren asignados a la misma hora.

38 Diseo del Algoritmo Gentico para la Asignacin de Horarios

Despus de hacer esta evaluacin, las funciones cuya aptitud o comportamiento sea mejor son seleccionadas usando el criterio de la rueda de la ruleta (descrito en el captulo 2). Las nuevas funciones generadas mediante la cruza pasan a formar la nueva poblacin y la poblacin anterior se desecha. Todo este procedimiento se realiza el nmero de veces que indique el usuario al capturar el nmero de generaciones o hasta que se encuentre una asignacin cuya aptitud satisfaga nuestras condiciones. Despus de realizar este procedimiento se tendr una calendarizacin que satisface nuestros requerimientos. A continuacin se muestra una pantalla con el resultado de la asignacin de cursos en aulas para un nmero de 5 generaciones:

Figura 8. Asignacin resultante de cursos en aulas.

39 Diseo del Algoritmo Gentico para la Asignacin de Horarios

Cabe mencionar que para la asignacin de cursos en los Laboratorios de Electrnica, se tuvo que implementar una funcin determinstica 8 debido a que, en la informacin proporcionada por el Departamento de Servicios Escolares de la UTM, son slo dos materias (de sptimo semestre) las que se imparten en dichos laboratorios, por lo que la realizacin de un AG para asignar solo dos materias representara un desperdicio de recursos. El resultado de esta funcin puede apreciarse en la siguiente pantalla.

Figura 8. Asignacin resultante de cursos en laboratorios de electrnica.

Una funcin determinstica indica en que lugar deben ser asignadas las materias, mediante el uso de condicionales.

40

CONCLUSIONES

a elaboracin de horarios es un problema complejo, que an no se ha podido resolver en los departamentos de control escolar de las Universidades. La asignacin de los cursos por lo general es hecha a

mano, lo cul puede tardar desde das hasta semanas en hacer la reparticin de los cursos, reparticin que en muchos casos no es la mejor. Existen otros mtodos para resolver problemas de asignacin de espacios, por ejemplo el recocido simulado, la bsqueda tab, etc., algunos de los cules pueden ser rpidos en trminos de encontrar buenas soluciones, sin embargo un AG se aproxima ms a la asignacin que es realizada manualmente, no obstante, cuando esta asignacin es hecha a mano se puede tratar de balancear diferentes condiciones u objetivos, algunas de estas condiciones no pueden ser expresadas fcilmente en la funcin de evaluacin. A pesar de esta desventaja un AG produce ms de un resultado para una sola ejecucin del mismo (sin incrementar el nmero de generaciones) a diferencia de los mtodos arriba mencionados que producen un nico resultado.

41 Conclusiones

Por todo lo arriba mencionado es que muchos investigadores continan la investigacin de los Algoritmos Genticos aplicados a esta rea ya que estos son rpidos, eficientes y producen resultados aceptables en problemas de administracin de espacios. Al inicio de este trabajo se plante el objetivo de crear una herramienta que fuera til en la asignacin de horarios en la Universidad Tecnolgica de la Mixteca, utilizando para ello los Algoritmos Genticos. Con la construccin del Sistema para la Asignacin de Horarios, se considera que este objetivo fue alcanzado satisfactoriamente, aunque se presento un problema de sobreespecificacin en el caso de las salas de cmputo ya que las materias a impartir rebasan en mucho el nmero de espacios disponibles y esto es solucionado utilizando condiciones que no pudieron ser representadas en la funcin de evaluacin, por lo que se decidi incluir estas materias en la asignacin de cursos en aulas, dejando al criterio de la persona que realiza la asignacin de horarios manualmente, la adaptacin de los resultados de este sistema a sus necesidades. Este trabajo de Tesis pretende ser una alternativa eficaz para realizar esta asignacin, utilizando apropiadamente los Algoritmos Genticos con punto de cruza. Cabe mencionar que en este trabajo se usaron parmetros reales, propios de una asignacin (nmero de aulas, nmero de grupos de cada semestre por carrera, etc.), lo que hace que la asignacin de cursos propuesta en este trabajo sea una mejor aproximacin a una calendarizacin de cursos ptima que la que hasta ahora es hecha a mano en la Universidad Tecnolgica de la Mixteca. Aunque posteriormente puede ser modificado agregando lmites que reduzcan an ms el espacio de bsqueda de las posibles soluciones.

42 Conclusiones

Tambin se debe mencionar que para el caso de la asignacin de cursos en los dos Laboratorios de Electrnica con que cuenta la UTM, se implemento una funcin determinstica que evit el desperdicio de recursos que hubiera causado la elaboracin de un AG para asignar slo dos materias a un espacio de bsqueda de 14 casillas disponibles. El Algoritmo Gentico implementado en este trabajo de Tesis, reduce eficazmente el tiempo que toma elaborar una correcta asignacin de horarios, ya que una asignacin hecha manualmente puede tomar desde das hasta semanas, lo cul no es conveniente, sin embargo el AG propuesto solo tarda uno minutos en elaborar una asignacin de cursos mejor que la que es realizada actualmente en la Universidad Tecnolgica de la Mixteca. Otra de las ventajas de utilizar el AG para la asignacin de horarios, es que no se limita a un determinado nmero de aulas si no que proporciona una opcin abierta para que dicho algoritmo se adapte al crecimiento de la infraestructura de dicha institucin. La nica condicin para que el AG trabaje de manera eficiente es que exista una concordancia entre el nmero de aulas y el nmero de grupos que deben recibir los cursos correspondientes.

43

REFERENCIAS

Beasley, David; Bull, David R. & Martin, Ralph R. [1993], An Overview of Genetic Algorithms: Part 1, Fundamentals, University Computing, Pp. 58-69 Coello, Coello Carlos A. [Enero 1995], Introduccin a los Algoritmos Genticos, Soluciones Avanzadas, Tecnologas de Informacin y Estrategias de Negocios, Ao 3, Nmero 17, Pp. 5-11. Coello, Coello Carlos A. [Mayo 1999], Representacin en los Algoritmos Genticos (Parte 1), Soluciones Avanzadas, Tecnologas de Informacin y Estrategias de Negocios, Ao 7, Nmero 69, Pp. 50-56. Gascn de la Herrn, Manuel. [1999], Los largos ritmos frenticos de la Computacin Evolutiva, GAIA, http://www.geocities.com/SiliconValley/Vista/7491/alggen_c.htm#quees Gascn de la Herrn, Manuel. [1999a], Algoritmos Genticos, GAIA, http://www.geocities.com/SiliconValley/Vista/7491/ag_c.htm Goldberg, David E. [1989], Genetic Algorithms in Search Optimization and Machine Learning, Reading Massachusetts, Addison-Wesley Publishing Company.

Goldberg, David E. [Noviembre 1999], Genetic Algorithms, Illinois Genetic Algorithms Laboratory, http://gal4.ge.uiuc.edu/

44

Bsqueda Tab: Un Procedimiento Heurstico para Solucionar Problemas de Optimizacin Combinatoria, Divisin CBI UAM Azcapotzalco e Iztapalapa,
http://www-azc.uam.mx/enlinea2/1-3.htm

Gutirrez Miguel Angel; De los Cobos Sergio & Prez Blanca. [1999],

Holland, John H. [1975], Adaptation in Natural and Artificial Systems. An

Introductory Analysis with Applications to Biology, Control and Artificial Intelligence, MIT Press, Cambridge, Massachusetts, Second Edition.
Holland, John. [Julio 1992], Genetic Algorithms, Scientific American, Volumen 267, Nmero 1, Pp. 66-72. Kearfott, Baker R. [Junio 1998], Departamento de Matemticas University of Southwestern Louisiana, http://interval.louisiana.edu/GLOBSOL/Dianapproximate-optimizer/node2.html LBS Capital Management, Inc. [1999], Genetic Algorithms, http://www.lbs.com/about_lb/technolo/ga.html Luenberger, David. [1989], Programacin lineal y no lineal, Addison-Wesley Publishing, Pp. 3-6. Morales, Eduardo. [Mayo 1999], Bsqueda, optimizacin y aprendizaje, Instituto Tecnolgico de Estudios Superiores de Monterrey, http://w3.mor.itesm.mx/~emorales/Cursos/Busqueda/principal.html Rao, Singiresu S. [1996], Engineering Optimization, Theory and Practice, John Wiley & Sons, Inc., Third Edition, Pp. 343,348.

45

APNDICE A

MANUAL PARA EL USUARIO DEL SISTEMA PARA LA


ASIGNACIN DE HORARIOS.

Componentes del Algoritmo Gentico para la asignacin de horarios.


Las partes que conforman un AG, principalmente son: Creacin de la poblacin de cromosomas. Evaluacin de la aptitud de cada cromosoma. Seleccin de los mejores elementos de la poblacin. Cruza de los mejores cromosomas.

46 Manual del usuario del Algoritmo Gentico para la asignacin de horarios

Requerimientos mnimos de operacin.

Procesador Pentium III. Windows 98 o superiores. 120 MB en RAM. Disco duro 4 GB. Para el funcionamiento del sistema deben estar presentes los siguientes archivos en las ubicaciones especificadas: C:\Algoritmo_Genetico\Algoritmo_Genetico.exe C:\Algoritmo_Genetico\Forma1.frm C:\Algoritmo_Genetico\Forma2.frm C:\Algoritmo_Genetico\Forma3.frm C:\Algoritmo_Genetico\Forma4.frm C:\Algoritmo_Genetico\Forma5.frm C:\Algoritmo_Genetico\Forma6.frm C:\Algoritmo_Genetico\Forma7.frm C:\Algoritmo_Genetico\Modulo1.bas C:\Archivos de Programa\Microsoft Visual Studio\Vb98\Evaluacion.bas C:\Archivos de Programa\Microsoft Visual Studio\Vb98\Modulo_archivo.bas C:\Archivos de Programa\Microsoft Visual Studio\Vb98\Reproduccion.bas Todos estos archivos se encuentran contenidos en el disco flexible que acompaa a este documento.

47 Manual del usuario del Algoritmo Gentico para la asignacin de horarios

Software del Algoritmo Gentico para la asignacin de horarios.


El programa principal es C:\Algoritmo_Genetico\Algoritmo_Genetico.exe, el cual puede ser ejecutado desde la lnea de comandos o desde su icono en el escritorio de Windows. Despus de que el programa ha sido cargado, aparece la interfaz de sistema que se muestra en la figura 5 (pgina 35). Esta ventana contiene tres opciones: entrar al sistema donde al hacer un doble click muestra la ventana de la figura 6 (pgina 36), acerca de que proporciona una ventana dnde se muestra informacin referente a la fecha de elaboracin del AG as como su propsito y por ltimo la opcin de salir a Windows, para abandonar el sistema. Al aparecer la siguiente pantalla (vase la figura al final de la pgina) se debe capturar el nmero de aulas a utilizar (por lo menos debe ser un aula), el perodo correspondiente (Octubre-Febrero Marzo-Julio) y el nmero de generaciones con las que trabajar el AG (mnimo deber ser una generacin para que el AG pueda trabajar).

48 Manual del usuario del Algoritmo Gentico para la asignacin de horarios

Despus aparece la pantalla de la figura 7 (pgina 37), que permite introducir el nmero de grupos por semestre ya previamente especificados para cada carrera que se imparte en la Universidad. Estos datos capturados permiten que las materias a cursar sean escritas - el nmero de veces igual al nmero de grupos introducidos - en el archivo C:\materias.txt esto para el caso del semestre Octubre-Febrero, y para el semestre Marzo-Julio las materias son escritas en el archivo C:\materias1.txt. Los datos introducidos para el nmero de grupos por carrera debern ser nicamente enteros positivos. La informacin contenida en estos archivos permite que se lleve a cabo la asignacin de cursos en los cromosomas, parte esencial para que trabaje correctamente el AG. As mismo los resultados del Algoritmo Gentico variarn de acuerdo al nmero de generaciones introducido. Para salir del sistema solo se deber elegir la opcin de Archivo y posteriormente la opcin Salir. La opcin Archivo tambin cuenta con la opcin de Imprimir. Por ltimo es importante explicar las abreviaturas, de los nombres de las materias, que se utilizaron para la realizacin del Algoritmo Gentico, mismas que aparecen en la asignacin de horarios resultante. A continuacin se proporciona la lista de dichas abreviaturas, dnde la ltima letra representa la carrera a la que corresponde y el ltimo nmero indica el grupo al que se asign dicha materia, por ejemplo: ProgOObII3 nos indica que Programacin Orientada a Objetos II se debe impartir para el grupo 3 de sptimo semestre de computacin, aqu no se especifica para que carrera deber impartirse la materia ya que esta es propia de computacin, a diferencia de SistDigiC o SistDigiE dnde se especifica para que carrera impartir dicha materia ya que la toman tanto computacin como electrnica.

49 Manual del usuario del Algoritmo Gentico para la asignacin de horarios

Lista de las Materias de Ingeniera en Computacin: "MecanicaC" = Mecnica Clsica "Calculo C" = Clculo "PensFiloC" = Historia del Pensamiento Filosfico "ProgEstrC" = Programacin Estructurada "IntIngCom" = Introduccin a la Ingeniera en Computacin "ElectrosC" = Electrosttica "AlgLineaC" = Anlisis Vectorial y lgebra Lineal "TeorGenSC" = Teora General de Sistemas "EstDatosC" = Estructura de Datos "SistCompC" = Construccin de Sistemas de Computacin "ElectDinC"= Electrodinmica "EcuacDifC" = Ecuaciones Diferenciales "TeoMatCom" = Teora Matemtica de la Computacin "CircuitEC" = Circuitos Elctricos "FisOndulC" = Fsica Ondulatoria "MetodNumC" = Mtodos Numricos "ProgSistC" = Programacin de Sistemas "ProbyEstC" = Probabilidad y Estadstica "TeorEconC" = Teora Econmica "SistOperC" = Sistemas Operativos "TeorComuC" = Teora de Comunicaciones "DisCircuC" = Diseo de Circuitos Electrnicos "CircuitoC" = Circuitos Lgicos "AdministC" = Administracin "CompiladC" = Compiladores "ProgOObjI" = Programacin Orientada a Objetos I "SistComuC" = Sistemas de Comunicaciones

50 Manual del usuario del Algoritmo Gentico para la asignacin de horarios

"ContabilC" = Contabilidad "IngSoftwC" = Ingeniera de Software "BasDatosI" = Bases de Datos I "ProgOObII" = Programacin Orientada a Objetos II "SistDigiC" = Sistemas Digitales "EstAdmvsC" = Anlisis y Diseo de Estructuras Administrativas "TeoAlgort" = Teora de Algoritmos "BsDatosII" = Bases de Datos II "MicroComC" = Arquitectura de Microcomputadoras "IntArtifiC" = Inteligencia Artificial "DisProgAd" = Diseo de Programas Administrativos "ArqCompuC" = Arquitectura de Computadoras "MercadotC" = Mercadotecnia "DiProgFin" = Diseo de Programas Financieros "SExpertoI" = Sistemas Expertos I "OCTInforma" = Organizacin de Centros de Teleproceso e Informtica "ProgTecno" = Diseo de Programas Tecnolgicos "InvOperaC" = Investigacin de Operaciones "DireccioC" = Direccin "SExpertII" = Sistemas Expertos II Lista de las Materias de Ingeniera en Electrnica: "MecanicaE" = Mecnica Clsica "Calculo E" = Clculo "PensFiloE" = Historia del Pensamiento Filosfico "ProgEstrE" = Programacin Estructurada "IntIngEle" = Introduccin a la Ingeniera en Electrnica "ElectrosE" = Electrosttica

51 Manual del usuario del Algoritmo Gentico para la asignacin de horarios

"AlgLineaE" = Anlisis Vectorial y lgebra Lineal "TeorGenSE" = Teora General de Sistemas "EstDatosE" = Estructura de Datos "EquipElec" = Construccin de Equipo Electrnico "ElectDinE"= Electrodinmica "EcuacDifE" = Ecuaciones Diferenciales "MetyTrans" = Metrologa y Transductores "CircuitEE" = Circuitos Elctricos "FisOndulE" = Fsica Ondulatoria "MetodNumE" = Mtodos Numricos "ProgSistE" = Programacin de Sistemas "ProbyEstE" = Probabilidad y Estadstica "TeorEconE" = Teora Econmica "SistOperE" = Sistemas Operativos "TeorComuE" = Teora de Comunicaciones "DisCircuE" = Diseo de Circuitos Electrnicos "CircuitoE" = Circuitos Lgicos "AdministE" = Administracin "CompiladE" = Compiladores "CPotencia" = Diseo de Circuitos Electrnicos de Potencia "SistComuE" = Sistemas de Comunicaciones "ContabilE" = Contabilidad "SistDigiE" = Sistemas Digitales "IngSoftwE" = Ingeniera de Software "Modulacion" = Modulacin y Control "TeoControl" = Teora del Control "EstAdmvsE" = Anlisis y Diseo de Estructuras Administrativas "PDSeales" = Procesamiento Digital de Seales "Microonda" = Sistemas de Comunicaciones va Microondas

52 Manual del usuario del Algoritmo Gentico para la asignacin de horarios

"MicroComE" = Arquitectura de Microcomputadoras "ControlDg" = Control Digital "CSatelite " = Sistemas de Comunicaciones va Satlite "MercadotE" = Mercadotecnia "SCFOptica" = Sistemas de Comunicaciones va Fibra ptica "ArqCompuE" = Arquitectura de Computadoras "IntArtifE" = Inteligencia Artificial "Robotica " = Robtica "InvOperaE" = Investigacin de Operaciones "DireccioE" = Direccin "RedesComp" = Redes de Computadoras "SExpertos" = Sistemas Expertos

Lista de las Materias de Ingeniera en Diseo: "MecanicaD" = Mecnica Clsica "Calculo D" = Clculo "PensFiloD" = Historia del Pensamiento Filosfico "ProgEstrD" = Programacin Estructurada "IntIngDis" = Introduccin a la Ingeniera en Diseo "ElectrosD" = Electrosttica "AlgLineaD" = Anlisis Vectorial y lgebra Lineal "TeorGenSD" = Teora General de Sistemas "EstDatosD" = Estructura de Datos "DibTecniI" = Dibujo Tcnico I "ElectDinD"= Electrodinmica "EcuacDifD" = Ecuaciones Diferenciales "MetDiseo" = Mtodos de Diseo

53 Manual del usuario del Algoritmo Gentico para la asignacin de horarios

"GeDescrip" = Geometra Descriptiva "EstaticaD" = Esttica "FisOndulD" = Fsica Ondulatoria "MetodNumD" = Mtodos Numricos "RMaterial" = Resistencia de Materiales "GeCuerpos" = Geometra de los Cuerpos "ProbyEstD" = Probabilidad y Estadstica "TeorEconD" = Teora Econmica "Ergonomia" = Ergonoma "TecRepres" = Tcnica de Representacin "MatyProcI" = Materiales y Procesos I "Composici" = Composicin "AdministD" = Administracin "EstudForm" = Estudio de la Forma "Modelos" = Modelos "ProyEspacial" = Proyecto Espacial "ProcesoII" = Materiales y Procesos II "ContabilD" = Contabilidad "TecnIlust" = Tcnicas de Ilustracin "MatyProce" = Materiales y Procesos "DisInteri" = Diseo Interior "DisEditor" = Diseo Editorial "EstAdmvsD" = Anlisis y Diseo de Estructuras Administrativas "MediosAud" = Medios Audiovisuales "Plasticos" = Materiales y Procesos. Plsticos "Estetica" = Esttica "AplicGraf" = Aplicaciones Grficas por Computadora "EcoUrbana" = Ecologa Urbana "InvyProto" = Investigacin y Prototipos

54 Manual del usuario del Algoritmo Gentico para la asignacin de horarios

"MercadotD" = Mercadotecnia "DesDeProd" = Desarrollo de Producto "ProyCompt" = Proyecto por Computadora "Vidrios " = Materiales y Procesos. Vidrios "DesProducto" = Desarrollo de Producto "Comercial" = Produccin y Comercializacin "DireccioD" = Direccin "DiseoUyA" = Diseo Urbano y Ambiental "TProdyDis" = Tcnicas Avanzadas de Produccin y Diseo

Lista de las Materias de Ingeniera en Alimentos: "MecanicaA" = Mecnica Clsica "Calculo A" = Clculo "PensFiloA" = Historia del Pensamiento Filosfico "ProgEstrA" = Programacin Estructurada "QuimiGral" = Qumica General "AlgLineaA" = Anlisis Vectorial y lgebra Lineal "IntIngAli" = Introduccin a la Ingeniera en Alimentos "EstDatosA" = Estructura de Datos "TeoGenSA" = Teora General de Sistemas "OrganicaI"= Qumica Orgnica I "EcuacDifA" = Ecuaciones Diferenciales "BalanceME" = Balance de Materia y Energa "QuimOrgII" = Qumica Orgnica II "BioQuimiI" = Bioqumica I "MicroGral" = Microbiologa General "MetodNumA" = Mtodos Numricos

55 Manual del usuario del Algoritmo Gentico para la asignacin de horarios

"FisicoQuI" = Fisicoqumica I "QuimAlimt" = Qumica de Alimentos "BioQuimiII" = Bioqumica II "MicroAlim" = Microbiologa de Alimentos "ProbyEstA" = Probabilidad y Estadstica "TeorEconA" = Teora Econmica "FisicoQII" = Fisicoqumica II "FenTransI" = Fenmenos de Transporte I "QuimAnali" = Qumica Analtica "Nutricion" = Nutricin "AdministA" = Administracin "AnalisExp" = Diseo y Anlisis de Experimentos "FQAliment" = Fisicoqumica de Alimentos "FenTranII" = Fenmenos de Transporte II "TecFrutas" = Tecnologa de Frutas y Hortalizas "AnalisisI" = Anlisis Instrumental "ContabilA" = Contabilidad "IngAlimeI" = Ingeniera en Alimentos I "TCereales" = Tecnologa de Cereales "TPCarnico" = Tecnologa de Productos Crnicos "DibIngAli" = Dibujo de Ingeniera en Alimentos "AnalisisA" = Anlisis de Alimentos "EstAdmvsA" = Anlisis y Diseo de Estructuras Administrativas "IngAlimII" = Ingeniera en Alimentos II "TPLacteos" = Tecnologa de Productos Lcteos "IngBioQuim" = Ingeniera Bioqumica "DesProduc" = Desarrollo de nuevos Productos "Sensorial" = Evaluacin Sensorial "MercadotA" = Mercadotecnia

56 Manual del usuario del Algoritmo Gentico para la asignacin de horarios

"IngAliIII" = Ingeniera en Alimentos III "FEvalProy" = Formulacin y Evaluacin de Proyectos "EmpaqueyE " = Empaque y Embalaje "ContDeCal" = Control de Calidad "DireccioA" = Direccin "InvOperaA" = Investigacin de Operaciones "TecBebida" = Tecnologa de Bebidas "PlantasAl" = Desarrollo y Diseo de Plantas Alimentarias "SemiTesis" = Seminario de Tesis

Lista de las Materias de Licenciatura en Matemticas: "CalculoMI" = Clculo I "PensFiloM" = Historia del Pensamiento Filosfico "AlgSuperi" = lgebra Superior "GeoAnalit" = Geometra Analtica "AlgLineaI" = lgebra Lineal II "AnalisisI" = Anlisis Vectorial I "CalculoII" = Clculo II "TeoGralSM" = Teora General de Sistemas "ProgEstrM"= Programacin Estructurada "AlgLineII" = lgebra Lineal II "AnalisiII" = Anlisis Vectorial II "EcuaDifMI" = Ecuaciones Diferenciales I "EstDatosM" = Estructura de Datos "AMatematI" = Anlisis Matemtico "ComplejaI" = Variable Compleja I "AlgModerI" = lgebra Moderna I

57 Manual del usuario del Algoritmo Gentico para la asignacin de horarios

"EcuDifMII" = Ecuaciones Diferenciales II "AMatemaII" = Anlisis Matemtico II "ComplejII" = Variable Compleja II "AlgModeII" = lgebra Moderna II "MFClasica" = Modelos de la Fsica Clsica "AnalisiNI" = Anlisis Numrico "ProbabilI" = Probabilidad I "AnalisNII" = Anlisis Numrico II "MDiscreta" = Matemticas Discretas "MetOptimi" = Modelos y Mtodos de Optimizacin I "MFModerna" = Modelos de la Fsica Moderna "ProbabiII" = Probabilidad II "MOptimiII" = Modelos y Mtodos de Optimizacin II "ProgLogic" = Programacin Lgica "CalcVaria" = Clculo de Variaciones y Teora de Control "Algoritmo" = Anlisis de Algoritmos "EstadistI" = Estadstica I "IntArtifi" = Inteligencia Artificial "TopologiI" = Topologa I "Geneticos" = Algoritmos Genticos "EstadisII" = Estadstica II "TopologII" = Topologa II "SeTesisMI" = Seminario de Tesis I "SExpertoM" = Sistemas Expertos "RedesNeur" = Redes Neuronales "STesisMII" = Seminario de Tesis II "EconomaM" = Economa Matemtica

58 Manual del usuario del Algoritmo Gentico para la asignacin de horarios

Lista de las Materias de Licenciatura en Ciencias Empresariales: "CalculoCE" = Clculo "PensFilCE" = Historia del Pensamiento Filosfico "IntrAdmon" = Introduccin a la Administracin "IntrConta" = Introduccin a la Contabilidad "ProgEstCE" = Programacin Estructurada "AlgLineCE" = lgebra Lineal "Psicologi" = Psicologa Industrial "TeoGralCE" = Teora General de Sistemas "BsDatosCE"= Bases de Datos "ContabilI" = Contabilidad I "ProbabiCE" = Probabilidad y Estadstica "AdmonPers" = Administracin de Personal "ProgConta" = Programas de Contabilidad "ContabiII" = Contabilidad II "InDerecho" = Introduccin a Derecho "AdSueldos" = Administracin de Sueldos "ProgAdmvo" = Programas Administrativos "ContCosto" = Contabilidad de Costos "Mercadote" = Fundamentos de Mercadotecnia "MercantiI" = Derecho Mercantil I "RecursosM" = Recursos Materiales "ProgFinan" = Programas Financieros "FinanzaEI" = Finanzas Empresariales I "MicroEcon" = Microeconoma "MercantII" = Derecho Mercantil II "Auditoria" = Introduccin a la Auditora "FinanzasP" = Finanzas Pblicas

59 Manual del usuario del Algoritmo Gentico para la asignacin de horarios

"FinanzEII" = Finanzas Empresariales II "MacroEcon" = Macroeconoma "AuditoriA" = Auditora Administrativa "MercadosI" = Administracin de Mercados I "DerFiscal" = Derecho Fiscal "SistFinan" = Sistemas Financieros "EconomaI" = Economa Internacional "InvOperCE" = Investigacin de Operaciones "MercadoII" = Administracin de Mercados II "Presupues" = Presupuestos "EPublicit" = Estrategia Publicitaria y Promocional "EconomiaM" = Economa de Mxico "MetInvest" = Metodologa de la Investigacin "MercadosF" = Modelacin Matemtica de Mercados Financieros "AdministF" = Administracin Financiera "SEmpresaI" = Seminario de Simulacin Empresarial I "EProyecto" = Evaluacin de Proyectos "DesOrgani" = Desarrollo Organizacional "AnalisisD" = Anlisis de Decisiones "DecisionF" = Toma de Decisiones Financieras "SEmpresII" = Seminario de Simulacin Empresarial II "PEstrateg" = Planeacin Estratgica Lista de las Materias de Ingeniera Industrial: "MecanicaI" = Mecnica Clsica "Calculo I" = Clculo "PensFiloI" = Historia del Pensamiento Filosfico "ProgEstrI" = Programacin Estructurada

60 Manual del usuario del Algoritmo Gentico para la asignacin de horarios

"IntIngInd" = Introduccin a la Ingeniera Industrial "DibTecniI" = Dibujo Tcnico Industrial "ElectMagn" = Electromagnetismo "EstDatosI" = Estructura de Datos "TeoGenSI" = Teora General de Sistemas "AlgLinInd"= Anlisis Vectorial y lgebra Lineal "DibIndCom" = Dibujo Industrial Asistido por Computadora "AdmonGral" = Administracin General "EcuacDifI" = Ecuaciones Diferenciales "QuimicaGr" = Qumica General "SistInfor" = Sistemas de Informacin "HerraComp" = Herramientas de Computacin para Ingenieros "MetodNumI" = Mtodos Numricos "AdmHumano" = Administracin del Factor Humano "TermoDinI" = Termodinmica "MercadotI" = Mercadotecnia "DerLabora" = Derecho Laboral y Propiedad Industrial "ProbyEstI" = Probabilidad y Estadstica "TeorEconI" = Teora Econmica "ContaGral" = Contabilidad General "CiencMate" = Ciencia de los Materiales "EstaticaI" = Esttica "ContCostI" = Contabilidad de Costos "Productivi" = Estudio del Trabajo y Productividad "ResistMat" = Resistencia de Materiales "MecFluido" = Mecnica de Fluidos "Electroni" = Electrnica "AdmonRecs" = Administracin de Recursos Materiales "ErgonomiI" = Ergonoma

61 Manual del usuario del Algoritmo Gentico para la asignacin de horarios

"SistyCont" = Sistemas y Control de la Calidad "EquipoInd" = Maquinaria y Equipo Industrial "InstyMetr" = Metrologa e Instrumentacin "SegIndust" = Medio Ambiente y Seguridad Industrial "PresupueI" = Presupuestos "IngEconom" = Ingeniera Econmica "InvOperaI" = Investigacin de Operaciones I "ManufactI" = Procesos de Manufactura "EnvyEmbaI" = Envases y Embalajes "ImpoyExpo" = Procesos de Importacin y Exportacin "Proyectos" = Formulacin y Evaluacin Econmica de Proyectos "Planeacio" = Planeacin y Control de la Produccin "InvOperII" = Investigacin de Operaciones II "SistManuf" = Sistemas Integrados de Manufactura "PlantaInd" = Diseo y Construccin de Plantas Industriales "TemasSelI " = Temas Selectos de Ingeniera Industrial I "DiryTomaD" = Direccin y Toma de Decisiones "MInvestig" = Metodologa de la Investigacin "SimIndust" = Anlisis y Simulacin Industrial "AutomaInd" = Control y Automatizacin Industrial "IngPlanta" = Ingeniera de Planta "TemasSeII" = Temas Selectos de Ingeniera Industrial II

62

APNDICE B

CDIGO DOCUMENTADO DE LOS PROCEDIMIENTOS Y


FUNCIONES MS IMPORTANTES DEL SISTEMA.

Programa para la asignacin de horarios.


Mediante este programa fue implementado el AG que realiza la asignacin de cursos en la Universidad, este programa fue codificado en Visual Basic 6.0 y el cdigo de las funciones ms importantes se muestra a continuacin. /* Procedimiento que escribe las materias a asignar en los archivos */ Sub matcomp1() If valorC1 <> 0 Then For NmeroRegistro = 1 To valorC1

63 Cdigo documentado del Sistema para la asignacin de horarios

MiRegistro.Materia1 = "MecanicaC" & NmeroRegistro ' Crea una cadena MiRegistro.Materia2 = "Calculo C" & NmeroRegistro ' Crea una cadena MiRegistro.Materia3 = "PensFiloC" & NmeroRegistro ' Crea una cadena MiRegistro.Materia4 = "IntIngCom" & NmeroRegistro ' Crea una cadena Put #1, NmeroRegistro, MiRegistro ' Escribe el registro en el archivo Next NmeroRegistro End If End Sub Este procedimiento se repite para los diez semestres correspondientes a cada carrera (ya que conocemos las materias en las que se matricularn los estudiantes). Despus de que las materias son escritas en el archivo correspondiente, se realiza su lectura, el cdigo de esta funcin se describe a continuacin: /*Procedimiento que realiza la lectura del archivo que contiene las materias a asignar*/ Public Sub lectura() NmeroRegistro1 = NmeroRegistro 1 'se ubica al final del archivo For NmeroRegistro = 1 To NmeroRegistro1 ' se posiciona al inicio

del archivo
Call num_azar(val) ' rutina que busca una posicin al azar en

las funciones
Get #1, NmeroRegistro, MiRegistro ' Lee la materia del

archivo
valmat1 = MiRegistro.Materia1 Call asignacionmateria1 'Asigna la materia a la funcin en la

posicin indicada
Call num_azar(val)

64 Cdigo documentado del Sistema para la asignacin de horarios

Get #1, NmeroRegistro, MiRegistro valmat2 = MiRegistro.Materia2 Call asignacionmateria2 Call num_azar(val) Get #1, NmeroRegistro, MiRegistro valmat3 = MiRegistro.Materia3 Call asignacionmateria3 Call num_azar(val) Get #1, NmeroRegistro, MiRegistro valmat4 = MiRegistro.Materia4 Call asignacionmateria4 Call num_azar(val) Get #1, NmeroRegistro, MiRegistro valmat5 = MiRegistro.Materia5 Call asignacionmateria5 Call num_azar(val) Get #1, NmeroRegistro, MiRegistro valmat6 = MiRegistro.Materia6 Call asignacionmateria6 Next NmeroRegistro End Sub

65 Cdigo documentado del Sistema para la asignacin de horarios

Posteriormente se realiza la evaluacin de las funciones, el cdigo de esta subrutina se muestra a continuacin: /*Evala el contenido de cada elemento de la poblacin*/ Public Sub evaluacion_poblacion() 'Analiza el contenido del cromosoma_n Call analisis_contenido(cursos_n, calif_cursosn) 'Analiza que no estn

asignadas dos o ms materias para un mismo grupo a la misma hora


Call mat_mate1(cursos_n) 'Procedimiento que asigna bonos a los

cromosomas que tengan asignadas materias de matemticas de primer semestre en las dos primeras horas de clases
Call mat_mate3(cursos_n) 'Procedimiento que asigna bonos a los

cromosomas que tengan asignadas materias de matemticas de tercer semestre en las dos primeras horas de clases
Call mat_mate5(cursos_n) 'Procedimiento que asigna bonos a los

cromosomas que tengan asignadas materias de matemticas de quinto semestre en las dos primeras horas de clases
calif_cursosn = calificacion 'Se asigna la calificacin obtenida despus

de evaluar el cromosoma
End Sub

66 Cdigo documentado del Sistema para la asignacin de horarios

/*Procedimiento que evala que las materias asignadas en los cromosomas no estn repetidas ni que para el mismo grupo estn asignadas dos o ms materias a la misma hora*/ Public Sub analisis_contenido(num_curso, calif_curso As Integer) calificacion = 0 bandera = 1

'Realiza una copia del contenido del cromosoma


For numindice = 1 To val temporal(numindice) = num_curso(numindice) Next numindice

'Revisa que materia esta asignada hora por hora en cada aula
For i = 1 To 7 For j = 8 To val If bandera = 1 Then j=8 bandera = bandera + 1 ElseIf (bandera = 3) Then j=j+1 bandera = bandera + 1 ElseIf (bandera = 5) Then j=j+2 bandera = bandera + 1 ElseIf (bandera = 7) Then j=j+3 bandera = bandera + 1 ElseIf (bandera = 9) Then j=j+4 bandera = bandera + 1

67 Cdigo documentado del Sistema para la asignacin de horarios

ElseIf (bandera = 11) Then j=j+5 bandera = bandera + 1 ElseIf (bandera = 13) Then j=j+6 bandera = bandera + 1 End If a = calif_primersem(calif_curso) 'Analiza las materias del primer

semestre
c = calif_tercersem(a) 'Analiza las materias del tercer semestre e = calif_quintosem(c) 'Analiza las materias del quinto semestre g = calif_septimosem(e) 'Analiza las materias del sptimo semestre q = calif_novenosem(g) 'Analiza las materias del noveno semestre calificacion = q j=j+6 Next j bandera = bandera + 1 Next i

/* analiza que no se repitan las materias, si esto ocurre se le resta cierta cantidad a la aptitud del cromosoma*/
For i = 1 To (val - 1) If (temporal(i) <> "" And temporal(i + 1) <> "") Then If (temporal(i) = temporal(i + 1)) Then calificacion = calificacion - 5 End If End If Next i End Sub

68 Cdigo documentado del Sistema para la asignacin de horarios

/*Funcin que revisa materia por materia de primer semestre asignada a cada aula hora por hora*/ Public Function calif_primersem(calif_arreglo As Integer) a8 = 50 'Asigna una calificacin base a cada cromosoma a evaluar

'Llamada al procedimiento que evala que no se produzcan 'choques entre las materias de Ingeniera en Computacin del primer semestre
a1 = evaluacion_computacion1(a8)

'Llamada al procedimiento que evala que no se produzcan 'choques entre las materias de Ingeniera en Electrnica del primer semestre
a2 = evaluacion_electronica1(a1)

'Llamada al procedimiento que evala que no se produzcan 'choques entre las materias de Ingeniera en Diseo del primer semestre
a3 = evaluacion_diseo1(a2)

'Llamada al procedimiento que evala que no se produzcan 'choques entre las materias de Ingeniera en Alimentos del primer semestre
a4 = evaluacion_alimentos1(a3)

'Llamada al procedimiento que evala que no se produzcan 'choques entre las materias de Licenciatura en Matemticas del primer semestre
a5 = evaluacion_matematicas1(a4)

69 Cdigo documentado del Sistema para la asignacin de horarios

'Llamada al procedimiento que evala que no se produzcan 'choques entre las materias de Licenciatura en Ciencias Empresariales del 'primer semestre
a6 = evaluacion_ciencias1(a5)

'Llamada al procedimiento que evala que no se produzcan 'choques entre las materias de Ingeniera Industrial del 'primer semestre
a7 = evaluacion_industrial1(a6) calif_primersem = a7 End Function Esta funcin se repite para los diez semestres de cada carrera. Despus de hacer esta evaluacin, las funciones cuya aptitud o comportamiento sea mejor son seleccionadas usando el criterio de la rueda de la ruleta (descrito en el captulo 2). La seleccin fue implementada de la siguiente manera: /*Procedimiento que realiza la reproduccin de los cromosomas seleccionados*/ Public Sub seleccin() w=0 z=0 y=0 Do While (w < numpob-1) 'ciclo que recorre todos los elementos de la

poblacin
v = selec()

' llamada a la funcin que determina los cromosomas que se

reproducirn

70 Cdigo documentado del Sistema para la asignacin de horarios

v1 = selec() Call copia_padre1 'procedimiento que realiza una copia de los cromosomas

seleccionados como padres de la nueva generacin


Call copia_padre2 Call cruza(progenitor1, progenitor2) 'procedimiento que realiza la cruza

entre dos cromosomas


Call nueva_poblacion 'procedimiento que elimina la poblacin anterior y

guarda la nueva
w=w+2 Loop End Sub En donde select es la funcin que selecciona las funciones segn su aptitud: /*Funcin que realiza la seleccin de los mejores cromosomas segn el valor de su aptitud, siguiendo el criterio de la rueda de la ruleta*/ Public Function selec() Call calificaciones 'procedimiento que realiza la suma de las evaluaciones de

los cromosomas
suma = 0 i=0 aleatorio = Int((evaluacin * Rnd) + 1) 'genera un nmero al azar

dependiendo de la longitud del cromosoma


Do i=i+1

71 Cdigo documentado del Sistema para la asignacin de horarios

suma = suma + evaluaciones(i) Loop Until suma >= aleatorio Or i = 40 'ciclo que se efecta hasta que la

suma de las calificaciones sea igual o mayor al punto escogido al azar


selec = i 'devuelve el cromosoma cuya aptitud permiti que la suma de las

calificaciones sea igual o mayor al punto escogido al azar


End Function Las cadenas seleccionadas son utilizadas por el operador de cruza, que se implement de la siguiente forma, siguiendo el criterio del punto de cruza (descrito en el captulo 2): /*Procedimiento que realiza la cruza de parejas de cromosomas con mejor aptitud*/ Public Sub cruza(padre1, padre2) Randomize punto = Int((val * Rnd) + 1) 'determina al azar el punto de cruza If punto < val Then For i = 1 To punto 'mientras el punto escogido sea menor que la longitud

del cromosoma se hace una copia de los padres en los hijos desde la posicin inicial hasta el punto de cruza
hijo1(i) = padre1(i) hijo2(i) = padre2(i) Next i For i = punto + 1 To val ' se hace una copia de los padres en los hijos

desde el punto de cruza hasta la ultima posicin en el cromosoma

72 Cdigo documentado del Sistema para la asignacin de horarios

hijo1(i) = padre2(i) hijo2(i) = padre1(i) Next i End If End Sub

ANEXO

EJEMPLO DE UNA ASIGNACIN DE CURSOS.

Asignacin de cursos para el semestre Octubre-Febrero.


Estas asignaciones fueron realizadas para un total de 39 aulas y con 20 generaciones.

En esta asignacin puede observarse que no existe ningn choque para los alumnos, ya que las materias no se repiten, ni estn asignadas dos materias del mismo grupo a la misma hora.

Asignacin de cursos para el semestre Marzo-Julio.

En esta asignacin puede observarse que no existe ningn choque para los alumnos, ya que las materias no se repiten, ni estn asignadas dos materias del mismo grupo a la misma hora.

Вам также может понравиться