Академический Документы
Профессиональный Документы
Культура Документы
Ingeniero en Computacin
Presenta
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
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
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
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
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]
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
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
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
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
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].
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
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.
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
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.
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.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
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
Como puede apreciarse, el algoritmo est estructurado en tres fases principales que se ejecutan de manera circular: seleccin (), reproduccin (x ,
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
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-
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
concluir la
2.5
Generacin.
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
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
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.
3.2
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.
Figura 4. Correspondencia entre los cursos a impartir y los espacios disponibles, determinada por la funcin
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.
As, que
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.
Se refiere a la seleccin de las funciones que sern los padres para la primer generacin. [Holland,1992]
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 .
Necesitamos conocer el problema para definir la funcin de evaluacin, pero despus, durante la bsqueda, slo nos concentramos en los cromosomas.
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.
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).
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.
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:
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.
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],
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
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.
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.
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
"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
"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
"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
"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
"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
"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
"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
"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
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
"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
"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
"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
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)
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
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
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
/*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
'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
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
/*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)
'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()
reproducirn
v1 = selec() Call copia_padre1 'procedimiento que realiza una copia de los cromosomas
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
suma = suma + evaluaciones(i) Loop Until suma >= aleatorio Or i = 40 'ciclo que se efecta hasta que la
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
ANEXO
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.
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.