"LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICI
ESTATICA DE CARGA EN UN SISTEMA MULTIPROCESADOR" ' C BI /e' \ e. co wt P OT f i c 0 0 +/" LOS ALGORITMOS GENETICOS COMO SOLUCION PARA EL UNIVERSIDAD AUTONOMA METROPOLITANA EN UN SISTEMA MULTIPROCESADOR CONTENIDO Pagina Prefacio. ............................................................................... .3 Introduccion ........................................................................... .4 ., Parte 1. Descripcin del Algoritmo Gentico Principal. Descripcin del algoritmo gentico principal. ............................ 6 Parte 2. Descripcin de la implementacin. Datos del Algoritmo Gentico .............................................. 13 Descripcin de la ejecucin del programa.. ............................... 17 Parte 3. Descripcin de las variaciones al Algoritmo Gentico Principal. VARIACION: Pasar el mejor siempre.. ................................................... .19 Seleccion aleatoria ......................................................... .20 Seleccion natural.. .......................................................... .21 Ejecucion en paralelo.. ...................................................... 22 . I . I . I Parte 4. Manual del Usuario. Manual del usuario.. ....................................................... .23 Parte5. Conclusiones. Conclusiones.. ........................................................................... ..36 Tabla de soluciones obtenidas.. ............................................ 38 Resultados obtenidos.. ...................................................... . 3 8 LUIS JESUS BONNETAYALA 2 ASESOR: Dra. GRACIELA ROMAN ALONSO PROYECTO DE INVESTIGACION 2 (REPORTE FIhbU) ESTATICA DE CARGA EN UN SISTEMA MLJLTIFROCESADOR LOS A L ~ ~ O S GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICI~N Apndice A. Listado de los Algoritmos Genticos.. .......................................... .40 BIBLIOG ................................................................................. 48 LUIS JESUS BONNETAYALA 3 ASESOR: Dra. GRACIELA ROUAN ALONSO PROYECTO DE INVESTIGACION 2 (REWRTE FINAL) ESTATICA DE CARGA EN UN SISTEMA mTI PROCESADOR LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICI~N Todo trabajo de investigacin requiere de un cierto esfuerzo y dedicacin. Este esfuerzo no servira de mucho si no se difundieran los resultados obtenidos. En este trabajo se presentan esos resultados; obtenidos despus de haber implementado distintos algoritmos genticos para solucionar el problema de reparticin esttica de carga en un sistema multiprocesador . Se incluye tambin el listado fuente en la parte esencial del manejo de la reparticin y la manipulacin de los cromosomas, por parte de los algoritmos genticos para obtener siempre la mejor manera de repartir un determinado nmero de procesos en un sistema multiprocesador. Es necesario mencionar que este trabajo est basado en el trabajo de investigacin realizado con anterioridad, por lo que el presente trabajo viene a ser el medio de comunicar los resultados finales de la implementacin en una computadora, de los algoritmos genticos descritos en el trabajo anterior (proyecto de investigacin 1). Por un principio se describir el algoritmo principal empleado para dar solucin a cualquier funcionamiento y el modo en que se implement. Despus se presentar alguna variante de este algoritmo principal y los resultados obtenidos con cualquiera de las variantes, as como del algoritmo principal. reparticin, as como su Se incluye un manual completo para poder utilizar el programa de computadora titulado: LOS ALGORITMOS GENETICOS COMO SOLUCIN AL PROBLEMA DE REPARTICION ESTATICA DE CARGA EN UN SISTEMA MULTIPROCESADOR as como funcionamiento y sugerencias de mejoras futuras en cuanto a la interfaz grfica. una descripcin de su Se incluye en un anexo el cdigo fuente de el programa. Por ltimo se presentan las debidas conclusiones y bibliografa. LUIS JESUS BOMVET AYALA 4 ASESOR: Dra. GRACIELA ROMAN ALONSO Los algoritmos genticos estn basados en la nocin de la propagacin de nuevas soluciones a partir de soluciones padres, empleando mecanismos modelados de aquellos que se aplican en gentica. La mejor descendencia de las soluciones padres se retiene para una nueva generacin, por lo que al proceder en forma de evolucin se fomenta la supervivencia de los ms aptos. Como la calidad de los ms aptos (mejor descendencia) eventualmente construye el ms alto nivel compatible con el medio ambiente ( el problema es gobernado por restricciones ), la mejor sobre todas las descendencias se registra y es el candidato propuesto por el mtodo para una solucin optimal. Un algoritmo gentico bsico tiene tres operadores: reproduccin, cruzamiento y mutacin. La reproduccin es un apareamiento aleatorio de individuos (soluciones muestra) de una poblacin para crear una o ms descendencias. El cruzamiento define el resultado como un cambio de gene (plan reproductivo). Deben modificarse y particularizarse a diferentes tipos de problemas combinatorios, ahora bien, para que tenga sentido se debe permitir ciertas relaciones de restricciones para proporcionar una oportunidad al prognito de realizar un mejoramiento sobre sus padres. Finalmente, una mutacin es simplemente el introducir un elemento aleatorio, muchas veces usado para enmendar el resultado de un gene cambiado cuando el resultado no se encuentra exitoso bajo las restricciones apropiadas. A este respecto, la mutacin est ms fuertemente sesgada para ayudar en la aplicacin de los algoritmos genticos que en la gentica biolgica. La mutacin diversifica el espacio de bsqueda y protege de la prdida de material gentico que puede darse en la reproduccin y el cruzamiento. LIS JESUS BONNET AYALA 5 ASESOR: Dra. GRACIELA ROMAN ALONSO Un programa paralelo puede ser modelado por un grafo, en este caso los llamaremos G, = ( V, , L, ) donde los vrtices (V,) representan procesos y los pesos de los vrtices representan conocidos o estimados costos de computacin para esos procesos. Las ligas (L,) representan la comunicacin requerida entre procesos y los pesos de las ligas el costo estimado de la comunicacin entre ellos. Se asume que el proceso de creacin del gafo es esttico; no dinmico. Por otra parte, si el proceso de creacin del grafo es dinmico, una estrategia de distribucin dinmica deber ser usada. Una arquitectura paralela tambin puede ser modelada por un gafo no dirigido, esto quiere decir, que la ligas no tienen direccin, este grafo lo llamaremos como en la ocasin anterior un gafo de tareas Gt = ( Vt , Lt ), donde los vrtices (Vt ) como en el caso anterior representan procesos o tareas y las lneas representan ligas (L,) de comunicacin entre los procesos. Se asume que la representacin es esttica; la configuracin fsica de la red no debe ser cambiada dinmicamente durante el tiempo de ejecucin. La siguiente notacin es usada: M : El nmero de procesos o tareas a ser distribuidos, M = I V, I N : El nmero de procesadores de la arquitectura objetivo, N = I Vt I ei : El costo de computacin del proceso pi cij : El costo de comunicacin entre los procesos pi y pj. LUZSJESUS BONNETAYALA 6 ASESOR: Dra. GRACIELA ROMAN ALONSO dkl :La distancia entre los procesadores tk y ti. La distancia esta definida como el mnimo nmero de ligas formando un camino entre los procesado res. Este problema puede ser definido por una funcin II : Vp -+Vt, que asigna cada proceso a un procesador. Una fiincin de costo F : II -+93, la cual asocia un valor real a cada distribucin, que servir para comparar las diferentes posibles soluciones. Dos criterios de distribucin que son contradictorios han sido considerados: - Minimizar la suma del total de los costos de comunicacin entre procesadores. Este costo puede ser medido por el producto del costo de comunicacin entre todos los pares de procesos y el costo de trasmitir los mensajes entre los procesadores donde los procesos son asignados. - Minimizar el desequilibrio de la carga en el sistema paralelo. La medida cuantitativa usada para tratar con este criterio es la varianza de las cargas de los diferentes procesadores. M 1 ei j = 1 N L = @=k La funcin costo F escogida es la suma de las dos funciones C y V : F = C + w - V donde w es el peso de la contribucin de el costo de comunicacin LUIS JESUS BONNETAYALA 7 ASESOR: Dra. GRACIELA ROUAN ALONSO relativo al balance de la carga computacional en el sistema. Escoger un valor satisfactorio para w depende del conocimiento a cerca de las caractersticas de la arquitectura paralela. Valores muy pequeos de w sugeriran una solucin de un solo procesador, y valores muy grandes de w reducira el problema a una programacin en un sistema multiprocesadores sin costos de comunicacin. En un experimento realizado en una arquitectura paralela (una red T800 de computadores) se determin que el valor estimado experimentalmente para w es 2, ( w = 2). Los algoritmos genticos componen una muy interesante familia de los algoritmos de optimizacin. Sus principios bsicos son realmente simples: Dado un espacio de bsqueda de este espacio puede ser representado por un vector M de esos N smbolos. Dada una funcin de capacidad F que va de a cualquier punto de C. de tamao NM y N smbolos: cualquier punto a % la cual asocia un valor real Dado un conjunto inicial de vectores, llamado la poblacin inicial. Algunos operadores genticos son usados para generar nuevos puntos de C. Proponer algunos individuos (cromosomas) para la fase llamada reproduccin. El principio fundamental de los algoritmos genticos es El ms apto es el ms probable para reproducirse. Dado que el tamao de la poblacin es constante, se tiene inevitablemente una competicin por la supervivencia de los individuos en la prxima generacin. Se tiene entonces una situacin Darwiniana: supervivencia de los ms aptos . Una fase de reemplazamiento es en este LUIS JESUS BONNETAYALA 8 ASESOR: Dra. GRACIELA ROWNALONSO momento ejecutada; la cual consiste en reemplazar los peores individuos de la poblacin por los mejores individuos producidos. Los procesos genticos son iterados en la nueva poblacin hasta que se alcanza un nmero dado de generaciones. El algoritmo gentico es: Generar una poblacin de individuos (cromosomas) aleatoriamente. Evaluacin - asignar un valor de capacidad a cada individuo. WHTLE nmero - - de generaciones 5 max - nmero-de-generaciones DO Seleccin probables a morir, - hacer una lista con un nmero par de individuos con los individuos probados ms fiecuentemente. Reproduccin - Aplicar los operadores genticos a las parejas seleccionadas. Reemplazamiento - Formar una nueva poblacin al reemplazar los peores individuos por los mejores. Los operadores genticos ms comnmente utilizados durante la reproduccin son cruzamiento y reproduccin. Cruzamiento: Dados dos vectores, cortarlos en el mismo punto (el punto es aleatoreo) e intercambiar las dos porciones. (ver figura a). El Cruzamiento es sinnimo de sexo. La mutacin es simplemente cambiar un bit (ver figura b). En los sistemas biolgicos, la mutacin es vital para la supervivencia de las especies cuando los medio - ambientes estn cambiando constantemente. Es necesario definir dos parmetros: pc y pm que representan respectivamente las probabilidades o aplicacin de los operadores de cruzamiento y mutacin. Otros operadores LUIS JESUS BONNET AYALA 9 ASESOR: Dra. GRACIELA ROMAN ALONSO genticos pueden ser encontrados en distintas literaturas, por ejemplo, el operador de inversin y muchas variaciones del operador de cruzamiento diseados para problemas de dominio especficos. Hiios: I 'adrei: I Punto aleatoreo de cruzamiento INDIVIDUO Mutaciln aleatorea de bits [a] Cruzamiento [b] Mutacin OPERADOR ES GENE TIC OS Los siguientes formalismos son usados para usar los algoritmos genticos en el problema de la reparticin de carga: permitirnos suponer que tenemos M procesos de comunicacin a distribuir en una arquitectura paralela de N procesadores. Cada uno de esos procesadores es etiquetado por un smbolo ( por ejemplo un entero entre O y N-1). Una distribucin dada es representada por un vector M de esos smbolos; (donde el smbolo p en la posicin q significa que el proceso q a sido colocado en el procesador p). En el presente trabajo se hicieron algunas variaciones al algoritmo gentico descrito anteriormente, en la cul esta basado este programa. Las variaciones realizadas se describirn ms adelante a detalle con la intencin de tener varios puntos para comparar en cuanto al funcionamiento de este algoritmo gentico, y al cual llamar en lo sucesivo algoritmo gentico principal. LUIS JESUS BONNET AYALA 10 ASESOR: Dra. GRACIELA ROMANALONSO PROYECTO DE WVESTIGACION 2 (REPORTE FINAL) LOS ALGORITlvOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIN ESTATICA DE CARGA EN UN SISTEMA MULTIPROCESADOR Es importante sealar que este proyecto llamado: LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICION ESTATICA DE CARGA EN UN SISTEMA MULTIPROCESADOR, se implement mediante un programa para ser ejecutado en una sola mquina, con un solo procesador, existiendo la posibilidad de implementar en futuras investigaciones el mismo programa pero en un sistema que cuente con varios procesadores, es decir un sistema multiprocesador . El programa sirve como una herramienta para conocer el mejor modo de repartir un nmero dado de procesos en un sistema con varios procesadores, con la importante caracterstica de ya conocer tanto los costos de comunicacin de los procesos entre s, as como las distancias entre procesadores y los costos de ejecucin de cada proceso, esto es precisamente lo que le da el carcter de esttico a la reparticin a realizar, al mantener estos datos (costos de comunicacin, distancia entre procesadores, costo de ejecucin), fijos durante el calculo de la mejor solucin. Aunque este programa he implementado y probado en una computadora con procesador Pentium que corre a 100 Mhz. y que cuenta con 16 MB. de memoria RAM , se puede ejecutar de manera sencilla en computadoras con menores caractersticas que estas, teniendo la nica limitante de que el programa correr un poco ms lento segn las caractersticas de la mquina, lo que podra hacernos pensar que el programa a entrado a un estado de incongruencia, o bien lo que a menudo sealamos LUIS JESUS BONNETAYALA 11 ASESOR: Dra. GRACIELA ROMANALONSO PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIdN ESTATICA DE CARGA EN UN SISTEMA MUI.TIPROCESADOR como que se encuentra trabado, todo esto mientras se realizan los cientos de miles de clculos necesarios para encontrar la mejor solucin, sin embargo, aunque lo haga despus de los nueve minutos calculados como el tiempo mximo de respuesta en la mquina descrita anteriormente, el programa proporcionar una respuesta. __ LUIS JESUS BONNET AYALA 12 ASESOR: Dra. GACIELA ROMNALONSO PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIN ESTATICA DE CARGA EN UN SISTEh4A MULTIPROCESADOR Llamo al~oritmo Pentico principal , al algoritmo que se analiz anteriormente en el presente trabajo y con el cual se hizo la implementacin en la computadora. Los dems algoritmos son variaciones de este algoritmo gentico principal y dichas variaciones sern descritas con todo detalle en su momento. DATOS DEL ALGORITMO GENETICO: El algoritmo gentico principal acta buscando la mejor solucin de distribuciones en distintos procesadores de un nmero de procesos dado. Para esto, en un principio se piden los siguientes datos, proporcionados de alguna de las dos maneras, de manera aleatoria o bien por el usuario. - Nmero de procesadores: de la malla de procesadores conectados en esta topologa. N = A x B. donde A y B denotan el tamao - Nmero de procesos a repartir entre el total de los procesadores: M - Nmero de generaciones (cada una de estas generaciones, proporciona al mejor cromosoma dentro de esa generacin). Es necesario aclarar en este punto que un cromosoma es el nombre que se le da a un arreglo de nmeros que nos describe una determinada solucin de reparticin, es decir en cuales procesadores fueron repartidos cada uno de los procesos. Por ejemplo el LUIS JESUS BONNETAYALA 13 ASESOR: Dra. GRACIELA ROUAN ALONSO PROYECTO DE INVESTIGACION 2 (REPORTE FI NAL) ESTATICA DE CARGA EN UN SISTEMA MULTIPROCESADOR LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICI~N siguiente arreglo describe al cromosoma cuyos procesos son los nmeros pequeos y los nmeros grandes encuentra localizado ese proceso. corresponden al procesador donde se procesos procesadore S - El costo de computacin de cada proceso: ei - El costo de comunicacin de cada proceso con los dems procesos : cij =costo de comunicacin entre el proceso i y el proceso j. Si el nmero de procesos a repartir es menor de 10 se podr ver su comunicacin, y se deber llenar una tabla parecida a la siguiente. - Las distancias entre cada uno de los procesadores, es decir la distancia entre el procesador k y el procesador 1 dH . La distancia entre un procesador k y un procesador 1, se encuentra definida como: LUIS JESUS BONNETAYALA 14 ASESOR: Dra. GRACIELA ROMAN ALONSO PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) ESTATICA DE CARGA EN UN SISTEMA MULTIPROCESADOR -LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICI~N El mnimo nmero de ligas que formen un camino entre el procesador k y el procesador 1. Este calculo de las distancias dij entre los procesadores lo realiza de manera automtica el programa. Como se supone que los procesadores se encuentran conectados en forma de malla, slo es necesario proporcionar el tamao de la malla, es decir: No de procesadores = A x B . Si el nmero de procesadores en la malla A x B es menor que 25 se podr ver como se comunican los procesadores entre s. Con estos datos se utilizar la siguiente funcin para calcular la calidad de cada cromosoma en una generacin. Esta funcin fue descrita en pginas anteriores. F = C +(w*V) donde w=2 y: i= 1 I n@=k I Es importante sealar que la funcin es una funcin de costo por lo que se deber minimizar dicha funcin. Dicho esto en otras palabras, el cromosoma con mayor calidad, para nuestro inters ser aquel que tenga menor costo o tiempo de ejecucin. En la frmula dada para obtener el valor de C, aparece: d nim . lo que se debe interpretar como: La distancia entre el procesador donde fue emplazado el proceso i y el procesador donde fue emplazado el proceso j. LUIS JESUS BONNET AYALA 15 ASESOR: Dra. GRACIELA ROMAN ALONSO PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) ESTATICA DE CARGA ENUN SISTEMA MULTIPROCESADOR LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICI~N Esta distancia es calculada automticamente por el programa. Cuando los datos son proporcionados por el usuario, se tienen algunas limitaciones en cuanto a las cantidades de procesos a repartir, y la cantidad de los procesadores donde se repartirn estos procesos, debido a que si se escoge un nmero muy grande de procesos a repartir, el proceso de captura de informacin se vuelve muy engorroso y tardado, se sugiere para trabajos posteriores la captura automtica por parte del programa de archivos que contengan la informacin y que se pueden generar de una forma mucho menos tediosa. Por esto es que se ha limitado el nmero de procesos a repartirse a un mximo de 10, (de 2 a lo), si es que se desea introducir la informacin uno mismo, si no es as el programa proporcionara esta informacin de manera aleatoria y no se contar con una limitante de ningn tipo. La cota inferior de 2 es porque no tendra sentido hacer todo el calculo de buscar la mejor solucin para un solo proceso y un slo procesador. En general sin importar el modo de proporcionar la informacin, (por el usuario, o bien de manera aleatoria por el sistema), se tienen las siguientes limitaciones : Nmero mnimo y mximo de procesos a repartir (tamao del cromosoma): mnimo: 2 procesos mximo: 100 procesos Nmero mnimo y mximo de procesadores donde se repartirn los procesos: mnimo: 2 procesadores mximo: 100 procesadores este nmero es el tamao de la malla de procesadores, por ejemplo A=10 y B=10 nos proporciona una malla de 10 por 10 procesadores dando un total de procesadores de 100 como nmero mximo. Nmero mnimo y mximo de generaciones: mnimo: 5 generaciones mximo: 1000 generaciones LUIS JESUS BONNETAYALA 16 ASESOR: Dra. GRACIELA ROMAN ALONSO Probabilidad de Mutacin: mnimo: 0.00 YO mximo: 0.09% Probabilidad de Cruzamiento: mnimo: 0.0% mximo: O. 1 YO Tanto para los costos de comunicacin entre procesos, as como para los costos de ejecucin los valores debern ser enteros y sern calculados con anterioridad, con algn otro criterio, lo que le da el carcter de esttico a este algoritmo, al mantenerlos fijos durante todo el proceso. DESCRIPCIN DE LA EJECUCIN DEL PROGRAMA Despus de haber proporcionado los datos, el programa, ejecutar el algoritmo gentico, llevando a cabo los operadores genticos de cruzamiento y mutacin entre los cromosomas, los cuales sern seleccionados de manera aleatoria. Al final de cada generacin se proporcionar al mejor elemento de la poblacin que se haya encontrado en dicha generacin, el mejor elemento ser aquel que tenga el menor tiempo de ejecucin. Bsicamente el programa del algoritmo gentico principal consiste en: Un proceso de captura de informacin. Un proceso de ejecucin de los algoritmos genticos Un proceso de presentacin de resultados. El punto de inters para nosotros es el proceso de los algoritmos genticos, el cual proporcionndole los datos anteriormente descritos el algoritmo inicia una etapa en la que proporciona 20 cromosomas de manera LUIS JESUS BONNET AYALA 17 ASESOR: Dra. GRACIELA ROMNALONSO PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIN ESTATICA DE CARGA EN UN SISTEMA MULTPROCESADOR aleatoria, en cada generacin. Estos cromosomas representan cada uno, una manera distinta de repartir los procesos entre todos los procesadores. Seguido de esta etapa viene el calculo de calidades (costos o tiempos de ejecucin), en cada uno de estos 20 cromosomas, para despus hacer cruzamiento y mutacin de todos los cromosomas en la generacin presente, de acuerdo a las probabilidades de mutacin y cruzamiento proporcionadas anteriormente por el usuario o bien de manera aleatoria. Por ltimo se identifica al mejor individuo de la poblacin que es el cromosoma con mejor calidad es decir el que tiene menor costo o menor tiempo de ejecucin. Despus se proporcionan las 5 mejores soluciones (individuos) encontradas en el total de las generaciones, as como el nmero de la generacin donde se encontr y el valor de su tiempo de ejecucin. LUIS JESUS BONNET AYALA 18 ASESOR: Dra. GRACIELA ROMAN ALONSO PROYECTO DE NVESTIGACION 2 (REPORTE FINAL) ESTATICA DE CARGA EN UN SISTEMA MULTIPROCESADOR Gs~os ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICI~N Las variaciones al programa del algoritmo gentico principal se hicieron con el propsito de obtener soluciones distintas a las obtenidas con este algoritmo gentico y compararlas para obtener un parmetro con el cual decidir cul solucin es mejor. VARIACION: PASAR EL MEJOR SIEMPRE Una de las variaciones importantes fue la de COPIAR el mejor cromosoma encontrado en la presente generacin (el cual cuenta con el menor tiempo de ejecucin, es decir con el menor costo), a la siguiente generacin en cada una de las generaciones, as como el tamao de la poblacin en cada generacin es constante (20 cromosomas), se tiene que las generaciones subsecuentes se van quedando slo con los mejores cromosomas los cuales participarn en una competencia por sobrevivir y pasar a la siguiente generacin (la denominada seleccin natural). Probablemente se alcanza ms rpidamente el mejor cromosoma en el total de generaciones dado. La ventaja de esta solucin es que requiere de menos tiempo en converger a la mejor solucin, la desventaja es que requiere muchos ms recursos en memoria pues siempre se debe mantener una copia de los mejores cromosomas, adems el algoritmo se vuelve mucho ms complejo pues la LUIS JESUS BONNETAYALA 19 ASESOR: Dra. GRACIELA ROUANALONSO PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) ESTATiCA DE CARGA EN UN SISTEMA MLTLTIPROCESADOR LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICI~N etapa donde se decide cules cromosomas son los que pasarn a la siguiente generacin es bastante complicada. As mismo el criterio de paro ahora ser: cuando se haya alcanzado un nmero de generaciones proporcionado de ante mano, sin encontrar una mejor solucin a la actual, el algoritmo deber parar y emitir sus resultados, es posible que se converja muy rpidamente a la solucin pero tambin puede ser que el algoritmo nunca termine, es decir que nunca converja a una solucin. Al final se puede alcanzar la misma solucin que con el algoritmo gentico principal , quizs en menos tiempo. VARIACION: SELECCIN ALEATORIA Esta variacin consiste en seleccionar de manera aleatoria los cromosomas a participar en la mutacin y en el cruzamiento. Dicha variacin no ofrece muchas ventajas y no es muy diferente al algoritmo gentico principal puesto que este ltimo maneja la mutacin y el cruzamiento de acuerdo a su probabilidad respectiva, adems de seleccionar las 10 parejas de cromosomas a cruzarse y sufiir mutacin de la siguiente manera: Cromosoma 19 con el cromosoma O; Cromosoma 18 con el cromosoma 1 ; Cromosoma 17 con el cromosoma 2; etc. Puesto que la poblacin se mantiene constante (20 individuos), se tienen 10 parejas a cruzarse escogidas de la manera anterior. Puesto que los cromosomas son creados de manera aleatoria en cada generacin no importa LUIS JESUS BONNET AYALA 20 ASESOR: Dra. GRACIELA ROMAN ALONSO PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIN ESTATICA DE CARGA EN UN SISTEMA MULTIPROCESADOR el que cromosoma se cruza con cual, y esto es lo que provoca que no exista mucha diferencia entre los dos algoritmos. De este modo la variacin de seleccin aleatoria, provoca exactamente los mismo resultados en lo que se refiere en la velocidad de convergencia a la mejor solucin, as como en recursos que el algoritmo gentico principal. La mejora a esta variacin se explicar en las siguientes lneas. VARIACION: cc SELECCI ~N NATURAL Esta variacin muestra claramente el espritu de llamar a estos algoritmos genticos de acuerdo al nombre dado a aquellos fenmenos que tienen que ver con la seleccin natural, es decir, La supervivencia de los ms aptos. Por que se menciona lo anterior? , por el echo de que esta variacin escoger a los mejores cromosomas dentro de la poblacin para sufrir los procesos de cruzamiento y mutacin. En un principio sera natural (para los seres humanos), esperar que de el cruzamiento de los dos mejores padres surgieran un par de hijos que heredasen las mejores caractersticas de sus padres, es decir sus genes, as mismo seria natural esperar que este par de nuevos individuos llamados hijos superasen en calidad a sus progenitores. Esto no necesariamente es verdad en cuanto a los algoritmos genticos, ya que de los dos mejores padres pude surgir cualquier clase de descendencia inclusive de menor calidad que los progenitores. Aunque el algoritmo no aumenta mucho en cuanto a su dificultad de implementacin, no ofrece ninguna ventaja con respecto al algoritmo gentico principal, proporcionando los mismos resultados que este. LUIS JESUS BONNET AYALA 21 ASESOR: Dra. GRACIELA R O MN ALONSO PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) ESTATiCA DE CARGA EN UN SISTEMA MULTIPROCESADOR LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICI~N VARIACION: EJECUCION EN PARALELO Como ya se menciono con anterioridad, una variacin importante, al algoritmo gentico principal es la de implementarlo de manera que se ejecute simultneamente en distintos procesadores, lo que reducira el tiempo de respuesta drsticamente y muy probablemente los recursos necesarios para ejecutar los algoritmos genticos (en especial para el problema de reparticin), sean mucho menores al repartir las cargas de trabajo entre varios procesadores. Sin embargo esto podra implicar un aumento en cuanto a la complejidad del diseo de los algoritmos genticos, al tener que solucionar los problemas inherentes a la ejecucin en paralelo. As como se han descrito estas variaciones, es posible encontrar muchas ms, las cuales podrn ser tema de estudios ms avanzados en el campo de los algoritmos genticos en cuanto a su aplicacin a problemas especficos, lo cual no es la intencin de este documento. LUIS JESUS BONNET AYALA 22 ASESOR: Dra. GRACIELA ROUAN ALONSO Aunque el programa LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICION ESTATICA DE CARGA EN UN SISTEMA MULTIPROCESADOR, ya trae mucha ayuda en lnea y va guiando al usuario con mensajes enviados al monitor, durante el transcurso de todo el proceso de captura de datos y del calculo de las soluciones, se incluye el manual del usuario para no permitir que sucedan confusiones en cuanto al manejo del programa. Primero explicaremos el procedimiento para llamar a ejecutarse el programa. Supondremos que el archivo ejecutable, es decir el archivo con extensin: .EXE se encuentra grabado en un disco de 3 1\2 pulgadas, y que este disco est en la unidad A:\ (unidad lectora o floppy). Aunque es posible ejecutar el programa desde la unidad A:\, se sugiere copiar el archivo ejecutable (de preferencia todos los archivos en el disco flexible) a la unidad c, dentro de un subdirectorio creado previamente, para obtener una mayor velocidad. Por ejemplo el subdirectorio podra llamarse: AG (Algoritmos Genticos) Esto lo podemos hacer tecleando lo siguiente: 1.- c:s ($ significa presionar la tecla enter) 2.-mkAGJ 3.- cd A GJ LUIS JESUS BONNET AYALA 23 ASESOR: Dra. GRACIELA ROMAN ALONSO PROYECTO DE INVESTIGACION 2 (REPORTE FI NAL) LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIN ESTATICA DE CARGA ENUN SISTEMA MULTIPROCESADOR 4.- copy a:\*.* J Una vez copiados todos los archivos a la unidad C, lo mandamos ejecutar tecleando la siguiente instruccin: 5.- AGENETICJ El programa comienza mandando un mensaje en el que se advierte que se debe tener instalado el mouse, pues nicamente funciona cuando el mouse se encuentra instalado. Se dan dos opciones: presionar la tecla ESC para terminar o bien la tecla ENTER J para continuar. Si se presion la tecla ENTER, se muestra la pantalla de presentacin que en realidad nicamente es un adorno para la interfaz grfica del programa. En seguida se presenta una pantalla como esta: LUIS JESUS BONNET AYALA 24 ASESOR: Dra. GRACIELA ROUAN ALONSO Debemos elegir una de las 2 opciones que se piden: 1 .- Informacin proporcionada por el usuario o bien 2.- Informacin proporcionada por el sistema de manera aleatoria. Dicha eleccin se hace presionando el nmero 1 +J o bien el nmero 2 J segn nuestra eleccin. (Asegurarse de que el teclado numrico se encuentra activo). OPCION 1: Es importante sealar que si se elige la opcin nmero 1 el usuario proporcionar los datos con los cuales trabajar el algoritmo gentico, y a partir de los cuales se calcularn las soluciones, sin embargo tanto en esta opcin como en la opcin 2 (de modo aleatorio) se puede proporcionar la informacin si as se desea de modo aleatorio o bien dada por el usuario, por LUIS JESUS BONNET AYALA 25 ASESOR: Dra. GRACIELA ROMANALONSO PROYECTO DE WESTIGACION 2 (REPORTE FINAL) LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIN ESTATICA DE CARGA EN UN SISTEMA MULTIPROCESADOR ejemplo si en un determinado campo se desea obtener un nmero aleatorio se debe oprimir nicamente la tecla enter +I y el programa proporcionar el nmero de manera aleatoria. Si se desea proporcionar un nmero en un determinado campo se puede teclear dicho nmero el cual ser registrado nicamente hasta que se presione la tecla enter J , lo que nos permite borrar el nmero con la tecla backspace t cuantas veces sea necesario. La diferencia entre la opcin 1 y la 2 consiste bsicamente en los lmites permitidos de procesos para el modo 1 los cuales deben ser menores de 10, para el nmero total de procesos, por lo tanto el usuario debe contar con los siguientes datos a la mano: Tamao de la malla de procesadores, N x M , donde N y M debern ser menores a 1 O para tener como lmite una malla de 1 O0 procesadores. (Si se eligen menos de 10 procesos) Costo de computacin para cada proceso. Costo de comunicacin entre cada proceso. El tamao de la malla de procesadores dado en la multiplicacin de dos variables, ejemplo: Si la malla de procesadores es de 20 esto puede ser: N=4 y M=5 NxM=20 Como ejemplo se presenta la siguiente pantalla: LUIS JESUS BONNETAYALA 26 ASESOR: Dra. GRACIELA ROMANALONSO Como podemos apreciar en la figura anterior se nos pide que proporcionemos: El tamao de la malla El nmero de procesos El nmero de generaciones La probabilidad de mutacin La probabilidad de cruzamiento Y el llenar una tabla con 2 campos como columnas. La primer columna corresponde a los procesos y la llena el programa con un nmero que corresponde a la secuencia desde O hasta el nmero total de procesos menos uno, que se haya elegido. LUIS JESUS BONNETAYALA 27 ASESOR: Dra. GRACIELA ROUANALONSO PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIbN ESTATICA DE CARGA EN UN SISTEMA MULTIPROCESADOR PROCESOS COSTO COMPUTACION O 9 10 4 I 5 I 9 Como se puede entender fcilmente el proceso 3 tiene un costo de computacin de 9 , el proceso O un costo de computacin de 10 y as sucesivamente para todos los procesos. PROPIEDADES DE LAS TABLAS: Cabe sealar que mientras se permanezca en una casilla a llenar de la tabla, se pueden hacer modificaciones oprimiendo la tecla t (backspace) el valor se fijar cuando se presione la tecla J (enter) y se pasar a la siguiente casilla, sin poder hacer correcciones a las casillas anteriores. Si el valor proporcionado en una casilla no es permitido (fuera de los rangos), parecer que no se hizo nada y la casilla permanecer en blanco, con opcin de poder llenarla nuevamente. Una casilla en la cual no se teclee ningn valor y se presione el la tecla J proporcionar un valor de O, (no LUIS JESUS BONNET AYALA 28 ASESOR: Dra. GRACIELA ROAUN ALONSO PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIN ESTATICA DE CARGA EN UN SISTEMA MLTLTIPROCESADOR proporciona un nmero aleatorio como en los campos de informacin que no son capturados en una tabla). Esto aplica para todas las tablas a llenar. A continuacin se presenta la siguiente pantalla: Aqu se nos pide llenar una tabla de costos de comunicacin entre cada uno de los procesos. Como podemos ver la tabla ya se encuentra llena en su diagonal principal con ceros, esto se debe a que el costo de comunicacin entre un mismo proceso es igual a cero. La primer columna de la tabla se encuentra llena con cada uno de los procesos, y la primer fila tambin contiene a cada uno de los procesos. Para ahorrar tiempo nicamente se llenan los valores de los costos de comunicacin entre procesos i, j ya que son iguales a los de j, i LUIS JESUS BONNET AYALA 29 ASESOR: Dra. GRACIELA R O MN ALONSO TIGACION 2 (REPORTE FINAL) ENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIN Por ejemplo para los valores elegidos para los procesos en el ejemplo anterior. (6 procesos) la tabla parcialmente llena podra lucir as: 5 4 5 3 O Lo que significara que el proceso O con el proceso 5 tiene un costo de comunicacin de 4, que es el mismo costo para el proceso 5 con el proceso O, y as para cada uno de los procesos. Cabe sealar que este proceso de captura de la informacin de los costos de comunicacin entre procesos se vuelve engorroso, tedioso y aburrido en cuanto ms aumenta el nmero de procesos a repartir, por ejemplo si se hubiese elegido un nmero de procesos de 20 o ms esto se convierte en un proceso aburrido adems que el manejo del grfico de la tabla a llenar no cabra en la pantalla, lo que puede hacer que el usuario se confunda, por todo esto se sugiere que para un trabajo posterior sobre este programa se implemente la opcin de poder leer los datos de las tablas de un archivo llenado anteriormente por otro programa o bien por el mismo, con la intensin de automatizar y agilizar este proceso. La distancia entre el procesador i y el procesador j se define como: el menor nmero de ligas entre el procesador i y el procesador j, que forman un LUIS JESUS BONNETAYALA 30 ASESOR: Dra. GRACIELA ROUANALONSO PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) LOS ALGORlTMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIN ESTATICA DE CARGA EN UN SISTEMA MULTPROCESADOR camino entre estos dos procesadores. Esta distancia es calculada automticamente por el programa. Esto se estar realizando cuando aparece la siguiente pantalla: Si se eligi un nmero de procesos menor de 10 se puede observar la comunicacin entre los procesos como ejemplo se muestra la siguiente figura: LUIS JESUS BONNET AYALA 31 ASESOR: Dra. GRACIELA ROMAN ALONSO En la siguiente figura podemos apreciar que se encuentran conectados 20 procesadores en una topologa de malla. Si el tamao elegido de la malla es menor de 25 procesadores, ser posible ver esta inter - coneccin como en la presentacin de la siguiente pantalla: LUIS JESUS BONNET AYALA 32 ASESOR: Dra. GRACIELA ROMANALONSO Se presenta a continuacin la siguiente pantalla: Aqu se nos proporcionan los valores con los cuales se ejecutar el Algoritmo Gentico, se nos avisa que el proceso podra durar hasta 9 minutos dependiendo principalmente de los valores de el nmero de procesos y el nmero de generaciones elegido. Como en el proceso de captura de la informacin por parte del usuario se encuentra restringido a un nmero pequeo de procesos (hasta 10). Esta advertencia slo aplica cuando se tiene un nmero grande de procesos y generaciones. Se pide elegir una de 2 opciones: 1 .-Ejecutar Algoritmo Gentico 2.- Cancelar LUIS JESUS BONNETAYALA 33 ASESOR: Dra. GRACIELA ROMAN ALONSO LEMA DE REPARTICIN Al presionar el nmero 1 .J se comenzar a calcular las mejores formas de repartir los procesos en los procesadores, utilizando los Algoritmos Genticos. Se pide esperar un momento y en unos instantes aparecer la siguiente pantalla: Aqu se presentan los tiempos de ejecucin para cada una de las 5 mejores soluciones encontradas. Las cuales se buscaron en el nmero de generaciones que se eligi anteriormente. El nmero de generacin en que se encontr cada solucin y la mejor solucin de todas Se pide presionar la tecla enter +J No hay que preocuparse por copiar estos valores ya que se podr regresar nuevamente a esta pantalla. LUIS JESUS BONNETAYALA 34 ASESOR: Dra. GRACIELA ROU4N ALONSO PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIN ESTATICA DE CARGA EN UN SISTEMA MULTIPROCESADOR Si el tamao de la malla es menor de 25 se podr ver la siguiente pantalla: Esta pantalla corresponde a la mejor solucin encontrada, aqu podemos ver los procesos que se repartieron en cada uno de los procesadores, as como el costo de esa reparticin y la generacin en que se encontr. En la parte de abajo se encuentran 8 botones y 1 icono; cada uno de los primeros cinco botones de izquierda a derecha corresponde a cada una de las mejores 5 soluciones encontradas, el sexto botn a la mejor solucin y el sptimo botn a la pantalla anterior. El icono de la derecha terminar la ejecucin del programa (Se trat de simular una puerta de salida). Con estos botones se puede brincar en cualquier orden entre cada una de las soluciones encontradas y la pantalla anterior en donde no se muestra el LUIS JESUS BONNET AYALA 35 ASESOR: Dra. GRACIELA ROMANALONSO PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE FSPARTICIN modo en el que fueron repartidos los procesos en cada uno de los procesadores. Como se podr ver, ya aparece el puntero del mouse y por medio de este, se debe hacer click con el botn izquierdo del mouse sobre el botn deseado de esta pantalla. Cabe sealar que en cada una de las 5 pantallas correspondientes a cada una de las 5 soluciones (incluyendo la mejor solucin), la pantalla es diferente con respecto a las dems en cuanto a la reparticin de los procesos en cada uno de los procesadores. Por ltimo si se presiona el botn nuevo proceso se permite regresar al principio del programa. Que es la etapa en la cual el usuario elige el modo en el cual se proporcionar la informacin a los algoritmos genticos De manera aleatoria o bien proporcionada por el usuario, con la intensin de hacer nuevos clculos. OPCION 2: Si se opt por elegir la opcin nmero 2 el programa se ejecutar automticamente, es decir, el sistema proporcionar de manera aleatoria todos los datos correspondientes a las distancias de entre los procesadores y en general a la informacin de las tablas de costos de comunicacin entre procesos y l os costos de ejecucin de cada proceso, nicamente el usuario deber proporcionar las probabilidades de mutacin, cruzamiento, tamao de la malla , nmero de procesadores y nmero de generaciones si as lo desea, pudiendo optar en cada cazo por obtener un valor aleatorio proporcionado por la computadora. LUIS J ESUS BONNETAYALA 36 ASESOR: Dra. GRACIELA R O W ALONSO PROYECTO DE J NWSTIGACION 2 (REPORTE FINAL) LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIN En trminos generales podemos considerar que los Algoritmos Genticos son tcnicas de bsqueda aleatoria que imitan a los procesos observados en la evolucin natural. Combinan la supervivencia de los ms aptos (o mejores) entre estructuras de soluciones con un estructurado cambio de informacin an aleatorizado. Los Algoritmos Genticos difieren de las tcnicas de optimizacin tradicionales en muchos aspectos. Ellos trabajan con una codificacin de las variables ms que con las variables en s mismas, y utilizan las reglas de transicin probabilstica para moverse de una poblacin de soluciones a otra. La ms interesante e importante caracterstica de los Algoritmos Genticos es que ellos utilizan tan solo evaluaciones de la funcin objetivo. Esto es, los Algoritmos Genticos no utilizan ninguna informacin sobre diferenciabilidad, convexidad o alguna otra caracterstica auxiliar. Esto hace que los Algoritmos Genticos sean fciles de utilizar y de implantar en gran variedad de problemas de optimizacin. La aplicacin de los algoritmos genticos a problemas de investigacin de operaciones se ha limitado debido a los dominios factibles complejos. Dado un problema de optimizacin, frecuentemente el paso ms dificil en la aplicacin del Algoritmo Gentico es el codificar las soluciones tal que el apareamiento de soluciones factibles de por resultado soluciones factibles. Lo que nos lleva a que las tcnicas para la codificacin de soluciones varan dado el tipo de problema, en la mayora de los casos involucra cierta cantidad de arte. Por lo general para problemas enteros 0-1, las soluciones se representan tpicamente por medio de una cadena de bits de longitud igual al LUIS JESUS BOhWET AYALA 37 ASESOR: Dra. GRACIELA ROUANALONSO PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIN nmero de variables en el problema, digamos n, donde cada posicin de la cadena puede tomar el valor O 1, (en terminologa gentica) cada posicin es un gene y el valor en esa posicin es un allele. Esto resulta en un espacio de bsqueda de cardinalidad 2. Los algoritmos genticos son buenos candidatos de eficientes estrategias heursticas. Tambin los algoritmos genticos son tcnicas de bsqueda estocsticos, presentados por Holland hace aproximadamente 25 aos, desde entonces han evolucionado favorablemente al grado de que da a da se agregan ms y ms investigadores a este tipo de algoritmos, los cuales se inspiran en el sistema natural de la evolucin. El diseo acelerado y cada vez mejor de las computadoras, ha hecho de los algoritmos genticos un tema muy popular en los ltimos aos en lo que se refiere a las aplicaciones para la multiprogramacin de dichas mquinas. Recientemente se han aplicado muchas optimizaciones de tipo combinatorio a problemas en varios campos, tales como, por ejemplo, el problema del agente viajero, la optimizacin de conexiones y conectividad de redes neuronales, y clasificacin de sistemas. Los algoritmos genticos ms comunes, con grandes poblaciones toman un gran tiempo de ejecucin. Sin embargo en este trabajo se propone un algoritmo que provee una solucin rpida y eficiente al problema de distribucin esttica de carga; dicha solucin simula un sistema multiprocesadores con varias tareas asignadas (llamadas procesos) , tal solucin es implementada en un slo procesador. La idea principal para el desarrollo del presente trabajo fue tomada de T.MUNTEAN y E-G. TALBI investigadores de Laboratorie de Gnie Informatique / IMAG; University of LUIS JESUS BONNET A YALA ASESOR: Dra. GRACIELA ROMAN ALONSO 38 PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) "LOS ALGORiTMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICION ESTATICA DE CARGA EN UN SISTEMA MULTIPROCESADOR Grenoble BP 53X F-38041 Grenoble, France su trabajo titulado : e-mail: traian @ irnag.fr en A PARALLEL GENETIC ALGORITHM FOR PROCESS- PROCESSORS MAPPING. Una caracterstica importante de los algoritmos genticos es que pueden ser usados para gran variedad de problemas de optimizacin combinatorios, puesto que no hacen suposiciones a cerca del espacio que estn buscando. Actualmente se estn utilizando para resolver problemas de optimizacin en el campo de control de robots y redes neuronales. Al ejecutar el programa con diferentes valores se obtuvieron los siguientes resultados: - No. - :esos 50 70 20 80 50 50 90 60 10 99 2 Nmero de Generacione 500 500 500 700 500 1000 50 50 1 O00 1 O00 10 U GENERA De l a soluci. 237 364 49 173 205 280 50 47 589 208 3 Los ejemplos probados fueron: Un gran nmero de generaciones (aprox. lOOO), con un gran nmero de procesos a repartir (aprox. 100). LUIS JESUS BONNETAYALA 39 ASESOR: Dra. GRACIELA ROMN ALONSO PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) LOS ALGORITMOS GENETEOS COMO SOLUCION AL PROBLEMA DE REPARTICIN ESTATICA DE CARGA EN UN SISTEMA MULTIPROCESADOR Un gran nmero de generaciones con un nmero pequeo de procesos a repartir. Estos ejemplos fueron probados con distintos valores de probabilidades de mutacin y cruzamiento. De la tabla es importante hacer notar que cuando se tiene un gran nmero de generaciones, un gran nmero de procesos a repartir y una alta probabilidad tanto de mutacin como de cruzamiento, el tiempo de ejecucin se eleva considerablemente de cuando no se tienen estas caractersticas. Sin embargo cuando se tiene un nmero grande de generaciones, se puede tener la confianza de que la solucin obtenida se acerca mucho a la ptima, puesto que el espacio de bsqueda es mayor. Lo anterior se nota claramente en la columna llamada: Numero de Generacin de la solucin. Este nmero por lo general se encuentra arriba de la generacin nmero 100. El programa se prob cuando existe comunicacin nicamente entre algunos de los procesos (por ejemplo: nicamente dos de ellos se comunican). Se obtuvo como resultado que los procesos que tenan un costo de comunicacin muy grande, nunca se repartan en el mismo procesador, mientras que l os que tenan un costo de comunicacin muy pequeo o nulo eran repartidos en el mismo procesador en las distintas soluciones presentadas. LUIS JESUS BONNETAYALA 40 ASESOR: Dra. GRACIELA ROMAN ALONSO PROYECTO DE INVESTIGACION 2 (REPORTE FI NAL) LOS ALCKXITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIN ESTATICA DE CARGA EN UN SISTEMA h4LJLTiPROCESADOR El programa fue escrito en el lenguaje C, las pruebas que se le hicieron al algoritmo gentico fueron realizadas en una mquina con procesador PENTIUM de 100 MHz. Y con 16 MB de memoria RAM. Estos datos se proporcionan para poder hacer despus comparativas entre los tiempos de ejecucin y respuesta de los algoritmos genticos para el problema de reparticin esttica de procesos en un sistema multiprocesador. A continuacin se presenta el listado completo referente a la manipulacin de los datos por parte de los algoritmos genticos. Cabe hacer nfasis en que dicho listado puede presentar mejoras, y variaciones, para su ejecucin ms eficiente, o bien con la intencin de ahorrar recursos como la memoria. Puesto que la intencin principal, es el estudio de este tipo de algoritmos en especial la aplicacin para el problema de reparticin esttica de carga, no se ha invertido mucho esfuerzo en la interfaz grfica ni en detalles de programacin. LUIS JESUS BONNETAYALA 41 ASESOR: Dra. GRACIELA ROMAN ALONSO PROYECTO DE INVESTIGACION 2 (REPORTE FI NAL) LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIN ESTATICA DE CARGA EN UN SISTEMA MLTPROCESADOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . // regresa el costo de comunicacin entre el proceso i y el j int CosCom(int procesoi, int procesoj, int procesos) { int valo&; */ */ DESDE AQUI COMIENZA EL MANEJO DE LOS ALGORITMOS GENETICOS ** */ if (procesoi<=procesos && procesoj<=procesos) { 1 valor=TCC [procesoi] [procesoj] ; return valor; 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . *I // regresa la distancia entre el procesador i el procesador j int Distancia(int procesadori, int procesadorj, int procesadores) { int valor=O; if (procesadori<=procesadores && procesadorj<=procesadores) { 1 valor=TDistancias[procesadori] [procesadorj] ; return valor; 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . float calcuiaLk(int procesador,int procesos,int cromosoma[]) */ { int indice2=0; float acwn=O.O; while(indice2<procesos) //indice2 recorre todo el cromosoma para buscar el procesador procesador { if( cromosoma[indice2]-procesador) indice2++; acum=acum+TGeneral[indice2][0]; //este es el costo de computacion LUIS JESUS BONNETAYALA 42 ASESOR: Dra. GRACIELA ROiUXV ALONSO PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIN ESTATICA DE CARGA EN UN SISTEMA MULTPROCESADOR 1 return acum; I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . float Calidad(int cromosoma[],int procesos, int procesadores) * { float resultado=O.O; float LbO.0; float valorcc=0.0; float valordis=O .O; float acumuladorC=O . O; float acumuladorV=O.O; int indice=O; int indice2=1; //indice e indice2 corren sobre el cromosoma de tamaao procesos y //que tiene el procesador donde fue emplazado el proceso while (indice<procesos) { while( indice2<procesos) { valorcc=CosCom( indice,indice2,procesos); valordis=Distancia(cromosoma[indice] ,cromosoma[indice2] ,procesos); acumuladorC=acumuladorC+(valorcc*valordis); indice2++; I indice++; indice2=indice+1 ; I //**********hasta aqui acumdadorC tiene el valor de C** * ** *** * * * * * ** * **/ //* * * * * * * * * * * * * * * * * * * * C ~ C ~ O DE EL VALOR DE L* * * * * * * * * * * * * * * * 41 * * indice=O; valorcc=O.O; //para reutilizarlo como acumulador while(indice<procesos) { valorcc-~alorcc+TGeneral[indice] [O]; indice++; I vaiorcc=valorcc/procesadores; valorcc=valorcc*valorcc ; //este es el costo de computacion //* 41 * * * * * * *AHOM C ~ C ~ ~ EL VALOR DE LK* * * * * * * * * * * * * * * * * * * * * * * * * * * * * indice=0; valordis=0.0; //para reutilizarlo como acumulador { Lk=calculaLk( indice,procesos,cromosoma); Lk=Lk*Lk; resultado=Lk-valorcc; //para utilizarlo mientras se utiliza ms adelante while(indice<procesadores) LUIS JESUS BONNET A YALA ASESOR: Dra. GRACIELA ROMAN ALONSO 43 PROYECTO DE INVESTIGACION 2 (REPORTE FiNAL) LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIN ESTATICA DE CARGA EN UN SISTEMA MLTiPROCESADOR acumuladorV=acumuladorV+resultado ; indice++; resultado=O.O; Lk4.0; 1 acumuladorV=acumuladorV/procesadores; //ya se tiene el valor de V resultado=acumuladorC+( 2 *acumuladorV); //* * ** ********* ** * se calcula el valor final* * * ******* * ** * * ** * ** * * ** ** ******* * * 41 return resultado; 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * void CalculaCalidades(int cromosomas[20][NUMAXPRO], float calidades[20],int procesos, int procesadores) { int individuo=O; while( individuo<20) { 1 calidades[individuo]=Calidad(cromosomas [individuo] ,procesos,procesadores); individuo++; 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . void LlenaCromosomasA(int cromosomas[20][NUMAXPRO], int procesos, int * procesadores) { int cromosoma=O; int proceso=0; while( cromosoma<20) { while(proceso<procesos) { 1 cromosomas[cromosoma] [pr~ce~~]=random(pr~cesadores); proceso++; cromosomas[cromosoma] [proceso]=\O; proceso4; cromosomatt-; 1 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . void Capturalcrom(int cromosomas[20][NUMAXPRO], int procesos) { int proceso=O; * while(proceso<procesos) LUIS JESUS BONNET AYALA 44 ASESOR: Dra. GRACIELA ROMNALONSO PROBLEMA DE REPARTICIN { //esto es el procesador cromosomas[O] [proceso]=TGeneral[proceso] [ 1 ] ; proceso++; 1 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . int FhdBest(float calidades[20]) int lug-0; int cromosoma=1 ; float menorvalor; menorvalor=calidades[O] ; while( cromosoma<20) { if (calidades[cromosoma]~menorvalor) { menorvalor=calidades[cromosoma] ; lugar=cromosoma; 1 cromosoma++; 1 return lugar; 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . //guardar informacion void GuardaMejor(int c r omos oma~P R O] , float calidad, int procesos, int * generacion) { int lug&; int cromomayor=1 ; float mayorvalor; //primero encontrar el lugar donde esta el mayor valor de los 5 mayorvalor=losmej ores[lugar] .Calidad; while( cromomayor<5) { if (mayorvalor<losmej ores[cromomayor] .Calidad) { mayorvalor=losmejores[cromomayor] .Calidad; lugamxomomay or; 1 cromomayort+; 1 if(calidad~losmejores[lugar] .Calidad) { cromomayod; //para reutilizarlo while (cromomayoKprocesos) //se copia todo el cromosoma //lugar es donde se encuentra el mayor valor de los 5 { losmej ores[lugar] .Cromosoma[cromomayor]=cromosoma[cromomayor] ; LUIS JESUS BONNETAYALA 45 ASESOR: Dra. GRACIELA ROMAN ALONSO PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) "LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIdN ESTATICA DE CARGA EN UN SISTEMA MULTPROCESADOR cromomayor++; 1 losmejores[lugar].Cromosoma[cromomayor]='\0'; / / checar limite cromomenor losmejores[lugar] .Calidad=calidad; losmej ores [lugar]. Generacion=generacion; 1 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . void cnizamiento(int padre1 [NUMAXPRO], int padre2[NUMAXPRO],int procesos,int procesadores) / / aqui adentro checa calidades de los hijos y decide si se sustituyen los padres por los hijos * { float calpadrel=O.O; float calpadre2=0.0; float calhijol=O.O; float caihijo2=0.0; int hijo 1 [NUMAXPRO] ; int hijo2[NuMAxPRO]; int indice=O; int puncniza=o; calpadre I=Calidad(padre 1 ,procesos,procesadores); calpadre2=Calidad(padre2,procesos,procesadores); / / llena los 2 hijos con los valores de los padres while( indice<procesos) { hijol [indice]=padrel [indice]; hij o2[indice]=padre2 [indice]; indiceti-; 1 hijol [indice]='\ O'; hijo2 [indice]='\ O'; / / ahora se hace el cruzamiento indice=O ; puncruza=random(procesos); / / se intercala todo lo de la derecha if(puncruza<procesos- 1) { indice=puncniza+1 ; while( indice<procesos) { hijo 1 [indice]=padre2[indice]; hijo2[indice]=padre 1 [indice]; indice++; 1 calhijo l%alidad(hijo 1 ,procesos,procesadores); calhij o2=Calidad(hijo2,procesos,procesadores); L urs JESUS BONNET AYALA ASESOR: Dra. GRACIELA ROUAN ALONSO 46 PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) LOS ALGORiTMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIbN 1 //se checan las calidades y si son mejores se sustituye a los padres indice=O ; if(calhijol<calpadrel) { while (indice<procesos) { padre1 [indice]=hijol [indice]; indice++; 1 1 indice=O ; if(calhijo2<calpadre2) { while (indice<procesos) { padre2 [indice]=hij o2 [indice]; indice++; 1 1 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . void mutacion(int cromosomal [NuMAxPRO],int cr omosoma2~PRO] , i nt * procesos,int procesadores) { int punmutacion=O; int procesador 1=0; int procesador2=0; punmutacion=random(procesos); procesador 1 =random(procesadores); procesador2=random(procesadores); cromosomal [punmutacion]=procesador 1 ; cromosoma2 Cpunmutacion]=procesador2 ; 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * void HacerCruzamiento(int cromosomas[20] [NUMAXPRO], float pc, float pm,int { int indice=O; int indice2=19; float pcl=O.O; float pm 1 =O. O; procesadores,int procesos) while(indice-40) //checar bien esto pc l=random( 1 OO) +1 ; pml=random( 100)+1; { pc l=pc 11100; LUIS JESUS BONNETAYALA 47 ASESOR: Dra. GRACIELA ROUANALONSO PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) ESTATICA DE CARGA EN UN SISTEMA MLJLTIPROCESADOR LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICI~N pml=pm1/ 1000; / / checar bien este valor if(pcl<=pc) / / habra cruzamiento { 1 { mutacion(cromosomas[indice], cromosomas[indice2],procesos,procesadores); 1 indice++; indice2--; 1 cruzamiento(cromosomas[indice] ,cromosomas[indice2] ,procesos,procesadores); if(pm 1 <=pm) 1 * void LimpiaMejores(v0id) { int indice=O; int procesos=O; while(indice<5) { losmejores[indice].Calidad=l00000.0; losmejores[indice] .Generacion=O; while(procesos<NUMAXPRO) { losmejores[indice] .Cromosoma[procesos]=\ O; procesos++; 1 procesos=O; indice++; 1 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * / / Este procedimiento se correr un total de numero de generaciones. void BuscaElMejor(float pc, float pm, int generacion, int procesos, int procesadoresjnt OPC) { int cromosomas[20] [NLTMAXPRO]; float calidades[ 201 ; int thebest=O; LlenaCromosomasA( cromosomas,procesos,procesadores) ; if(generacion=l && opc=l) if(generacion= 1) Captura 1 crom(cromosomas,procesos); { Calculacalidades( cromosomas,calidades,procesos,procesadores); HacerCnizamiento(cromosomas,pc ,pm,procesadores,procesos); Calculacalidades( cromosomas,calidades,procesos,procesadores); thebest=FindBest( calidades); LUIS JESUS BOhWETAYALA 48 ASESOR: Dra. GRACIELA R O W ALONSO PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIN ESTATICA DE CARGA EN UN SISTEMA MULTIPROCESADOR GuardaMejor(cromosomas[thebest],calidades[thebest],procesos,generacion); 1 else { HacerCnizamiento(cromosomas,pc,pm,procesadores,procesos); CalculaCalidades( cromosomas,calidades,procesos,procesadores); thebest=FindBest(calidades); GuardaMejor(cromosomas[thebest] ,calidades[thebest],procesos,generacion); 1 1 * LUIS JESUS BONNETAYALA 49 ASESOR: Dra. GRACIELA R O W ALONSO PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) ESTATICA DE CARGA ENUN SISTEMA MULTIIROCESADOR LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTI CI ~N High Performance Computing Ii M.Durand and F. El Dabaghi (Editors) Elseiver Science Publishers B.V. (North-Holland), 199 1 Genetic Programming On the programming of computers by neans of Natural Selectin Jhon R. Koza Genetic Algorithms In search, optimization and machine learning. David E. Goldberg MA: Addison-Wesley, 1989 Genetic Algorithms +Data Structures =Evolution Programs Zbigniew Michalewicz MA: Springer-Verlag Parallel Problem Solving fiom Nature - PPSN HI Implementatingns of standard Genetic Algorithm on MIMD machines R.Hauser, R.Rwer Pag 504 - 513 Ao 1994 A parallel genetic algorithm; Proc. of the Second Int. Conf. On Genethic algorithms, MIT, Cambridge, pp. 155-161, jul. 1987 C.B.Pettey,M.R. Leuze, J.J. N.Desni, Generating random task graphs with known optimal schedule for multiprocessing scheduling, Masters Project Rep., NJIT, Newark, NJ, 1993. LUIS JESUS BONNET AYALA 50 ASESOR: Dra. GRACIELA R O MN ALONSO PROYECTO DE INVESTIGACION 2 WPORTE FiNAL) LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIN ESTATICA DE CARGA EN UN SISTEMA MULTIPROCESADOR C.V. Ramamoorthy et al., Optimal scheduling strategies in a multiprocessor system, IEEE Trans. Comput., vol. C-21, pp. 137-146, Feb. 1972. H. Kasahara and S. Narita, Practical multiprocessing scheduling algorithms for efficient parallel procesing, EEE Trans. Comput., vol. C-33, no. 11, pp. 1023-1029, Nov. 1984. J. Holland, Adaptatin in Natural and Artificial System, Ann Arbor, MI: University of Michigan Press, 1975. L. Davis J ob shop scheduling with genetic algorithms . Proc. 1 Int. Conf. Genetic Algorithms and Their Applications, J uly 24-26, 1985, Carnegie-Mellon University, Pittsburgh, PA, pp 136-140. LUIS JESUS BONNETAYALA 51 ASESOR: Dra. GRACIELA ROMAN ALONSO