(reporte final) algoritmos problema de …148.206.53.84/tesiuami/uam5040.pdf · parte 4. manual del...
TRANSCRIPT
PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) "LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICI ESTATICA DE CARGA EN UN SISTEMA MULTIPROCESADOR"
' C B I /e'
\ e. co wt POT fi 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. Descripción del Algoritmo Genético Principal.
Descripción del algoritmo genético principal. ............................ 6
Parte 2. Descripción de la implementación.
Datos del Algoritmo Genético .............................................. 13 Descripción de la ejecución del programa.. ............................... 17
Parte 3. Descripción de las variaciones al Algoritmo Genético 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 MLJLTIF’ROCESADOR” “LOS A L ~ ~ O S GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICI~N
Apéndice A. Listado de los Algoritmos Genéticos.. .......................................... .40
BIBLIOG ................................................................................. 48
LUIS JESUS BONNETAYALA 3 ASESOR: Dra. GRACIELA ROUAN ALONSO
PROYECTO DE INVESTIGACION 2 (REWRTE FINAL)
ESTATICA DE CARGA EN UN SISTEMA mTIPROCESADOR “LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICI~N
Todo trabajo de investigación requiere de un cierto esfuerzo y dedicación. Este esfuerzo no serviría de mucho si no se difundieran los resultados obtenidos. En este trabajo se presentan esos resultados; obtenidos después de haber implementado distintos algoritmos genéticos para solucionar el problema de repartición estática de carga en un sistema multiprocesador .
Se incluye también el listado fuente en la parte esencial del manejo de la repartición y la manipulación de los cromosomas, por parte de los algoritmos genéticos para obtener siempre la mejor manera de repartir un determinado número de procesos en un sistema multiprocesador.
Es necesario mencionar que este trabajo está basado en el trabajo de investigación realizado con anterioridad, por lo que el presente trabajo viene a ser el medio de comunicar los resultados finales de la implementación en una computadora, de los algoritmos
genéticos descritos en el trabajo anterior (proyecto de investigación 1).
Por un principio se describirá el algoritmo principal empleado para dar solución a cualquier
funcionamiento y el modo en que se implementó. Después se presentará alguna variante de este algoritmo principal y los resultados obtenidos con cualquiera de las variantes, así como del algoritmo principal.
repartición, así como su
Se incluye un manual completo para poder utilizar el programa de computadora titulado: “LOS ALGORITMOS GENETICOS COMO SOLUCIÓN AL PROBLEMA DE REPARTICION ESTATICA DE CARGA EN UN SISTEMA MULTIPROCESADOR” así como
funcionamiento y sugerencias de mejoras futuras en cuanto a la interfaz gráfica.
una descripción de su
Se incluye en un anexo el código fuente de el programa.
Por último se presentan las debidas conclusiones y bibliografía.
LUIS JESUS BOMVET AYALA 4 ASESOR: Dra. GRACIELA ROMAN ALONSO
Los algoritmos genéticos están basados en la noción de la propagación
de nuevas soluciones a partir de soluciones padres, empleando mecanismos
modelados de aquellos que se aplican en genética. La mejor descendencia de
las soluciones padres se retiene para una nueva generación, por lo que al
proceder en forma de evolución se fomenta la supervivencia de los más aptos.
Como la calidad de los más aptos (mejor descendencia) eventualmente
construye el más 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 método para una solución optimal.
Un algoritmo genético básico tiene tres operadores: reproducción,
cruzamiento y mutación. La reproducción es un apareamiento aleatorio de
individuos (soluciones muestra) de una población para crear una o más
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
progénito de realizar un mejoramiento sobre sus padres. Finalmente, una
mutación 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
mutación está más fuertemente sesgada para ayudar en la aplicación de los
algoritmos genéticos que en la genética biológica. La mutación diversifica el
espacio de búsqueda y protege de la pérdida de material genético que puede
darse en la reproducción y el cruzamiento.
LÜIS 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 vértices (V,) representan procesos y
los pesos de los vértices representan conocidos o estimados costos de
computación para esos procesos. Las ligas (L,) representan la comunicación
requerida entre procesos y los pesos de las ligas el costo estimado de la
comunicación entre ellos. Se asume que el proceso de creación del gafo es
estático; no dinámico. Por otra parte, si el proceso de creación del grafo es
dinámico, una estrategia de distribución dinámica deberá ser usada.
Una arquitectura paralela también puede ser modelada por un gafo no
dirigido, esto quiere decir, que la ligas no tienen dirección, este grafo lo
llamaremos como en la ocasión anterior un gafo de tareas Gt = ( Vt , Lt ), donde los vértices (Vt) como en el caso anterior representan procesos o tareas
y las líneas representan ligas (L,) de comunicación entre los procesos. Se
asume que la representación es estática; la configuración física de la red no
debe ser cambiada dinámicamente durante el tiempo de ejecución. La
siguiente notación es usada:
M : El número de procesos o tareas a ser distribuidos, M = I V, I N : El número de procesadores de la arquitectura objetivo, N = I Vt I ei : El costo de computación del proceso pi
cij : El costo de comunicación 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 mínimo número de ligas formando un camino entre los
procesado res.
Este problema puede ser definido por una función II : Vp -+ Vt, que
asigna cada proceso a un procesador. Una fiinción de costo F : II -+ 93, la
cual asocia un valor real a cada distribución, que servirá para comparar las
diferentes posibles soluciones.
Dos criterios de distribución que son contradictorios han sido
considerados:
- Minimizar la suma del total de los costos de comunicación entre
procesadores. Este costo puede ser medido por el producto del costo de
comunicación 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 función costo F escogida es la suma de las dos funciones C y V : F =
C + w - V donde w es el peso de la contribución de el costo de comunicación
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 características de
la arquitectura paralela. Valores muy pequeños de w sugerirían una solución
de un solo procesador, y valores muy grandes de w reduciría el problema a
una programación en un sistema multiprocesadores sin costos de
comunicación. 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 genéticos componen una muy interesante familia de los
algoritmos de optimización. Sus principios básicos son realmente simples:
Dado un espacio de búsqueda
de este espacio puede ser representado por un vector M de esos N símbolos.
Dada una función de capacidad F que va de
a cualquier punto de C.
de tamaño NM y N símbolos: cualquier punto
a % la cual asocia un valor real
Dado un conjunto inicial de vectores, llamado la población inicial.
Algunos operadores genéticos son usados para generar nuevos puntos
de C. Proponer algunos individuos (cromosomas) para la fase llamada
“reproducción”.
El principio fundamental de los algoritmos genéticos es “El más apto es
el más probable para reproducirse”.
Dado que el tamaño de la población es constante, se tiene
inevitablemente una competición por la supervivencia de los individuos en la
próxima generación. Se tiene entonces una situación Darwiniana:
“supervivencia de los más aptos” . Una fase de “reemplazamiento” es en este
LUIS JESUS BONNETAYALA 8 ASESOR: Dra. GRACIELA R O W N A L O N S O
momento ejecutada; la cual consiste en reemplazar los “peores” individuos de
la población por los mejores individuos producidos.
Los procesos genéticos son iterados en la nueva población hasta que se
alcanza un número dado de generaciones.
El algoritmo genético es:
Generar una población de individuos (cromosomas) aleatoriamente.
Evaluación - asignar un valor de capacidad a cada individuo.
WHTLE número - - de generaciones 5 max - número-de-generaciones DO
Selección
probables a morir,
- hacer una lista con un número par de individuos
con los individuos probados más fiecuentemente.
Reproducción - Aplicar los operadores genéticos a las parejas
seleccionadas.
Reemplazamiento - Formar una nueva población al reemplazar los
peores individuos por los mejores.
Los operadores genéticos más comúnmente utilizados durante la
reproducción son cruzamiento y reproducción.
Cruzamiento: Dados dos vectores, cortarlos en el mismo punto (el punto es
aleatoreo) e intercambiar las dos porciones. (ver figura a). El Cruzamiento es
sinónimo de sexo.
La mutación es simplemente cambiar un bit (ver figura b). En los sistemas
biológicos, la mutación es vital para la supervivencia de las especies cuando
los medio - ambientes están cambiando constantemente. Es necesario definir
dos parámetros: pc y pm que representan respectivamente las probabilidades o
aplicación de los operadores de cruzamiento y mutación. Otros operadores
LUIS JESUS BONNET AYALA 9 ASESOR: Dra. GRACIELA ROMAN ALONSO
genéticos pueden ser encontrados en distintas literaturas, por ejemplo, el
operador de inversión y muchas variaciones del operador de cruzamiento
diseñados para problemas de dominio específicos.
Hiios: I 'adrei:
I Punto aleatoreo de cruzamiento
INDIVIDUO
Mutaciáln aleatorea de bits
[a] Cruzamiento [b] Mutación
OPERADOR ES GENE TIC OS
Los siguientes formalismos son usados para usar los algoritmos
genéticos en el problema de la repartición de carga: permitirnos suponer que
tenemos M procesos de comunicación a distribuir en una arquitectura paralela
de N procesadores. Cada uno de esos procesadores es etiquetado por un
símbolo ( por ejemplo un entero entre O y N-1). Una distribución dada es
representada por un vector M de esos símbolos; (donde el símbolo p en la
posición q significa que el proceso q a sido colocado en el procesador p).
En el presente trabajo se hicieron algunas variaciones al algoritmo
genético descrito anteriormente, en la cuál esta basado este programa.
Las variaciones realizadas se describirán más adelante a detalle con la
intención de tener varios puntos para comparar en cuanto al funcionamiento
de este algoritmo genético, y al cual llamaré en lo sucesivo algoritmo
genético principal.
LUIS JESUS BONNET AYALA 10 ASESOR: Dra. GRACIELA ROMANALONSO
PROYECTO DE WVESTIGACION 2 (REPORTE FINAL) “LOS ALGORITlvíOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIÓN ESTATICA DE CARGA EN UN SISTEMA MULTIPROCESADOR
Es importante señalar 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 máquina, 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 número dado de procesos en un sistema con varios
procesadores, con la importante característica de ya conocer tanto los costos
de comunicación de los procesos entre sí, así como las distancias entre
procesadores y los costos de ejecución de cada proceso, esto es precisamente
lo que le da el carácter de estático a la repartición a realizar, al mantener estos
datos (costos de comunicación, distancia entre procesadores, costo de
ejecución), fijos durante el calculo de la mejor solución.
Aunque este programa h e 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 características que estas, teniendo la única
limitante de que el programa correrá un poco más lento según las
características de la máquina, lo que podría hacernos pensar que el programa
a entrado a un estado de incongruencia, o bien lo que a menudo señalamos
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 cálculos necesarios para encontrar la mejor solución, sin embargo,
aunque lo haga después de los nueve minutos calculados como el tiempo
máximo de respuesta en la máquina descrita anteriormente, el programa
proporcionará una respuesta.
__ LUIS JESUS BONNET AYALA 12 ASESOR: Dra. GñACIELA ROMNALONSO
PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) “LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIÓN ESTATICA DE CARGA EN UN SISTEh4A MULTIPROCESADOR
Llamo “al~oritmo Penético principal” , al algoritmo que se analizó
anteriormente en el presente trabajo y con el cual se hizo la implementación
en la computadora. Los demás algoritmos son variaciones de este algoritmo
genético principal y dichas variaciones serán descritas con todo detalle en su
momento.
DATOS DEL ALGORITMO GENETICO:
El algoritmo genético principal actúa buscando la mejor solución de
distribuciones en distintos procesadores de un número 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.
- Número de procesadores:
de la malla de procesadores conectados en esta topología.
N = A x B. donde A y B denotan el tamaño
- Número de procesos a repartir entre el total de los procesadores: M
- Número de generaciones (cada una de estas generaciones, proporciona al
mejor cromosoma dentro de esa generación). Es necesario aclarar en este
punto que un cromosoma es el nombre que se le da a un arreglo de números
que nos describe una determinada solución de repartición, 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 FINAL)
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 números
pequeños y los números grandes
encuentra localizado ese proceso.
corresponden al procesador donde se
procesos
procesadore
S
- El costo de computación de cada proceso: ei
- El costo de comunicación de cada proceso con los demás procesos :
cij =costo de comunicación entre el proceso i y el proceso j. Si el número
de procesos a repartir es menor de 10 se podrá ver su comunicación, 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 mínimo número 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 automática el programa. Como se supone que los procesadores se
encuentran conectados en forma de malla, sólo es necesario proporcionar el
tamaño de la malla, es decir: No de procesadores = A x B . Si el número 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 función para calcular “la
calidad” de cada cromosoma en una generación. Esta función fue descrita en
páginas anteriores.
F = C + (w*V) donde w=2 y:
i= 1
I n@=k I Es importante señalar que la función es una función de costo por lo que
se deberá minimizar dicha función. Dicho esto en otras palabras, el
cromosoma con mayor “calidad”, para nuestro interés será aquel que tenga
menor costo o tiempo de ejecución.
En la fórmula 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 EN UN SISTEMA MULTIPROCESADOR “LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICI~N
Esta distancia es calculada automáticamente 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 repartirán estos procesos, debido a que si se
escoge un número muy grande de procesos a repartir, el proceso de captura de
información se vuelve muy engorroso y tardado, se sugiere para trabajos
posteriores la captura automática por parte del programa de archivos que
contengan la información y que se pueden generar de una forma mucho
menos tediosa. Por esto es que se ha limitado el número de procesos a
repartirse a un máximo de 10, (de 2 a lo), si es que se desea introducir la
información uno mismo, si no es así el programa proporcionara esta
información de manera aleatoria y no se contará con una limitante de ningún
tipo. La cota inferior de 2 es porque no tendría sentido hacer todo el calculo
de buscar la mejor solución para un solo proceso y un sólo procesador.
En general sin importar el modo de proporcionar la información, (por el
usuario, o bien de manera aleatoria por el sistema), se tienen las siguientes
limitaciones :
Número mínimo y máximo de procesos a repartir (tamaño del cromosoma):
mínimo: 2 procesos máximo: 100 procesos
Número mínimo y máximo de procesadores donde se repartirán los procesos:
mínimo: 2 procesadores máximo: 100 procesadores
este número es el tamaño 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 número máximo.
Número mínimo y máximo de generaciones:
mínimo: 5 generaciones máxim’o: 1000 generaciones
LUIS JESUS BONNETAYALA 16 ASESOR: Dra. GRACIELA ROMAN ALONSO
Probabilidad de Mutación:
mínimo: 0.00 YO máximo: 0.09%
Probabilidad de Cruzamiento:
mínimo: 0.0% máximo: O. 1 YO
Tanto para los costos de comunicación entre procesos, así como para
los costos de ejecución los valores deberán ser enteros y serán calculados con
anterioridad, con algún otro criterio, lo que le da el carácter de estático a este
algoritmo, al mantenerlos fijos durante todo el proceso.
DESCRIPCIÓN DE LA EJECUCIÓN DEL PROGRAMA
Después de haber proporcionado los datos, el programa, ejecutará el
algoritmo genético, llevando a cabo los operadores genéticos de cruzamiento
y mutación entre los cromosomas, los cuales serán seleccionados de manera
aleatoria. Al final de cada generación se proporcionará al mejor elemento de
la población que se haya encontrado en dicha generación, el mejor elemento
será aquel que tenga el menor tiempo de ejecución.
Básicamente el programa del algoritmo genético principal consiste en:
Un proceso de captura de información.
Un proceso de ejecución de los algoritmos genéticos
Un proceso de presentación de resultados.
El punto de interés para nosotros es el proceso de los algoritmos
genéticos, el cual proporcionándole 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 REPARTICIÓN ESTATICA DE CARGA EN UN SISTEMA MULTPROCESADOR
aleatoria, en cada generación. 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
ejecución), en cada uno de estos 20 cromosomas, para después hacer
cruzamiento y mutación de todos los cromosomas en la generación presente,
de acuerdo a las probabilidades de mutación y cruzamiento proporcionadas
anteriormente por el usuario o bien de manera aleatoria.
Por último se identifica al mejor individuo de la población que es el
cromosoma con mejor “calidad” es decir el que tiene menor costo o menor
tiempo de ejecución.
Después se proporcionan las 5 mejores soluciones (individuos)
encontradas en el total de las generaciones, así como el número de la
generación donde se encontró y el valor de su tiempo de ejecución.
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 genético principal se
hicieron con el propósito de obtener soluciones distintas a las obtenidas con
este algoritmo genético y compararlas para obtener un parámetro con el cual
decidir cuál solución es mejor.
VARIACION: “PASAR EL MEJOR SIEMPRE”
Una de las variaciones importantes fue la de COPIAR el mejor
cromosoma encontrado en la presente generación (el cual cuenta con el menor
tiempo de ejecución, es decir con el menor costo), a la siguiente generación
en cada una de las generaciones, así como el tamaño de la población en cada
generación es constante (20 cromosomas), se tiene que las generaciones
subsecuentes se van quedando sólo con los mejores cromosomas los cuales
participarán en una competencia por sobrevivir y pasar a la siguiente
generación (la denominada selección natural). Probablemente se alcanza más
rápidamente el “mejor cromosoma” en el total de generaciones dado. La
ventaja de esta solución es que requiere de menos tiempo en converger a la
mejor solución, la desventaja es que requiere muchos más recursos en
memoria pues siempre se debe mantener una copia de los mejores
cromosomas, además el algoritmo se vuelve mucho más 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 cuáles cromosomas son los que pasarán a la siguiente
generación es bastante complicada. Así mismo el criterio de paro ahora
será: cuando se haya alcanzado un número de generaciones proporcionado de
ante mano, sin encontrar una mejor solución a la actual, el algoritmo deberá
parar y emitir sus resultados, es posible que se converja muy rápidamente a la
solución pero también puede ser que el algoritmo nunca termine, es decir que
nunca converja a una solución.
Al final se puede alcanzar la misma solución que con el algoritmo
genético principal , quizás en menos tiempo.
VARIACION: “SELECCIÓN ALEATORIA”
Esta variación consiste en seleccionar de manera aleatoria los
cromosomas a participar en la mutación y en el cruzamiento. Dicha variación
no ofrece muchas ventajas y no es muy diferente al algoritmo genético
principal puesto que este último maneja la mutación y el cruzamiento de
acuerdo a su probabilidad respectiva, además de seleccionar las 10 parejas de
cromosomas a cruzarse y sufiir mutación 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 población 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 generación 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 REPARTICIÓN 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 variación de selección aleatoria, provoca exactamente
los mismo resultados en lo que se refiere en la velocidad de convergencia a la
mejor solución, así como en recursos que el algoritmo genético principal.
La mejora a esta variación se explicará en las siguientes líneas.
VARIACION: c c SELECCI~N NATURAL”
Esta variación muestra claramente el espíritu de llamar a estos
algoritmos “genéticos” de acuerdo al nombre dado a aquellos fenómenos que
tienen que ver con la selección natural, es decir, “La supervivencia de los más
aptos”. ¿Por que se menciona lo anterior? , por el echo de que esta variación
escogerá a los mejores cromosomas dentro de la población para “sufrir” los
procesos de cruzamiento y mutación. En un principio sería natural (para los
seres humanos), esperar que de el cruzamiento de los dos mejores padres
surgieran un par de hijos que heredasen las mejores características 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 genéticos, 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
implementación, no ofrece ninguna ventaja con respecto al algoritmo genético
principal, proporcionando los mismos resultados que este.
LUIS JESUS BONNET AYALA 21 ASESOR: Dra. GRACIELA R O M N 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 variación importante, al
algoritmo genético principal es la de implementarlo de manera que se ejecute
simultáneamente en distintos procesadores, lo que reduciría el tiempo de
respuesta drásticamente y muy probablemente los recursos necesarios para
ejecutar los algoritmos genéticos (en especial para el problema de
repartición), sean mucho menores al repartir las cargas de trabajo entre varios
procesadores. Sin embargo esto podría implicar un aumento en cuanto a la
complejidad del diseño de los algoritmos genéticos, al tener que solucionar
los problemas inherentes a la ejecución en paralelo.
Así como se han descrito estas variaciones, es posible encontrar
muchas más, las cuales podrán ser tema de estudios más avanzados en el
campo de los algoritmos genéticos en cuanto a su aplicación a problemas
específicos, lo cual no es la intención 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 línea 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
extensión: .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 podría llamarse:
AG (Algoritmos Genéticos)
Esto lo podemos hacer tecleando lo siguiente:
1.- c:s ($ significa presionar la tecla enter)
2.-mkAGJ
3.- cd A G J
LUIS JESUS BONNET AYALA 23 ASESOR: Dra. GRACIELA ROMAN ALONSO
PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) “LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIÓN ESTATICA DE CARGA EN UN SISTEMA MULTIPROCESADOR
4.- copy a:\*.* J
Una vez copiados todos los archivos a la unidad C, lo mandamos
ejecutar tecleando la siguiente instrucción:
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 presentación
que en realidad únicamente es un adorno para la interfaz gráfica 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 .- Información proporcionada por el usuario o bien
2.- Información proporcionada por el sistema de manera aleatoria.
Dicha elección se hace presionando el número 1 +J o bien el número 2 J
según nuestra elección. (Asegurarse de que el teclado numérico se encuentra
activo).
OPCION 1:
Es importante señalar que si se elige la opción número 1 el usuario
proporcionará los datos con los cuales trabajará el algoritmo genético, y a
partir de los cuales se calcularán las soluciones, sin embargo tanto en esta
opción como en la opción 2 (de modo aleatorio) se puede proporcionar la
información 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 REPARTICIÓN ESTATICA DE CARGA EN UN SISTEMA MULTIPROCESADOR
ejemplo si en un determinado campo se desea obtener un número aleatorio se
debe oprimir únicamente la tecla enter +I y el programa proporcionará el
número de manera aleatoria. Si se desea proporcionar un número en un
determinado campo se puede teclear dicho número el cual será registrado
únicamente hasta que se presione la tecla enter J, lo que nos permite borrar el
número con la tecla backspace t cuantas veces sea necesario.
La diferencia entre la opción 1 y la 2 consiste básicamente en los
límites permitidos de procesos para el modo 1 los cuales deben ser menores
de 10, para el número total de procesos, por lo tanto el usuario debe contar
con los siguientes datos a la mano:
Tamaño de la malla de procesadores, N x M , donde N y M deberán ser
menores a 1 O para tener como límite una malla de 1 O0 procesadores.
(Si se eligen menos de 10 procesos)
Costo de computación para cada proceso.
Costo de comunicación entre cada proceso.
El tamaño de la malla de procesadores dado en la multiplicación 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 tamaño de la malla
El número de procesos
El número de generaciones
La probabilidad de mutación
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 número que
corresponde a la secuencia desde O hasta el número 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 fácilmente el proceso 3 tiene un costo de
computación de 9 , el proceso O un costo de computación de 10 y así
sucesivamente para todos los procesos.
PROPIEDADES DE LAS TABLAS:
Cabe señalar 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
opción de poder llenarla nuevamente. Una casilla en la cual no se teclee
ningún 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 REPARTICIÓN ESTATICA DE CARGA EN UN SISTEMA MLTLTIPROCESADOR
proporciona un número aleatorio como en los campos de información que no
son capturados en una tabla).
Esto aplica para todas las tablas a llenar.
A continuación se presenta la siguiente pantalla:
Aquí se nos pide llenar una tabla de costos de comunicación 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 comunicación 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 también contiene a cada
uno de los procesos. Para ahorrar tiempo Únicamente se llenan los valores de
los costos de comunicación entre procesos i, j ya que son iguales a los de j, i
LUIS JESUS BONNET AYALA 29 ASESOR: Dra. GRACIELA R O M N ALONSO
TIGACION 2 (REPORTE FINAL) ENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIÓN
Por ejemplo para los valores elegidos para los procesos en el ejemplo
anterior. (6 procesos) la tabla parcialmente llena podría lucir así:
5
4
5
3
O
Lo que significaría que el proceso O con el proceso 5 tiene un
costo de comunicación de 4, que es el mismo costo para el proceso 5 con el
proceso O, y así para cada uno de los procesos.
Cabe señalar que este proceso de captura de la información de los
costos de comunicación entre procesos se vuelve engorroso, tedioso y
aburrido en cuanto más aumenta el número de procesos a repartir, por
ejemplo si se hubiese elegido un número de procesos de 20 o más esto se
convierte en un proceso aburrido además que el manejo del gráfico de la tabla
a llenar no cabría 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 opción de poder leer los datos de las tablas de un
archivo llenado anteriormente por otro programa o bien por el mismo, con la
intensión de automatizar y agilizar este proceso.
La distancia entre el procesador i y el procesador j se define como: el
menor número 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 REPARTICIÓN ESTATICA DE CARGA EN UN SISTEMA MULTPROCESADOR
camino entre estos dos procesadores. Esta distancia es calculada
automáticamente por el programa. Esto se estará realizando cuando aparece la
siguiente pantalla:
Si se eligió un número de procesos menor de 10 se puede observar la
comunicación 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 topología de malla. Si el tamaño elegido de la malla
es menor de 25 procesadores, será posible ver esta inter - conección como en
la presentación de la siguiente pantalla:
LUIS JESUS BONNET AYALA 32 ASESOR: Dra. GRACIELA ROMANALONSO
Se presenta a continuación la siguiente pantalla:
Aquí se nos proporcionan los valores con los cuales se ejecutará el
Algoritmo Genético, se nos avisa que el proceso podría durar hasta 9 minutos
dependiendo principalmente de los valores de el número de procesos y el
número de generaciones elegido. Como en el proceso de captura de la
información por parte del usuario se encuentra restringido a un número
pequeño de procesos (hasta 10). Esta advertencia sólo aplica cuando se tiene
un número grande de procesos y generaciones.
Se pide elegir una de 2 opciones:
1 .-Ejecutar Algoritmo Genético
2.- Cancelar
LUIS JESUS BONNETAYALA 33 ASESOR: Dra. GRACIELA ROMAN ALONSO
LEMA DE REPARTICIÓN
Al presionar el número 1 .J se comenzará a calcular las mejores formas
de repartir los procesos en los procesadores, utilizando los Algoritmos
Genéticos. Se pide esperar un momento y en unos instantes aparecerá la
siguiente pantalla:
Aquí se presentan los tiempos de ejecución para cada una de las 5
mejores soluciones encontradas. Las cuales se buscaron en el número de
generaciones que se eligió anteriormente.
El número de generación en que se encontró cada solución y la mejor
solución 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 REPARTICIÓN ESTATICA DE CARGA EN UN SISTEMA MULTIPROCESADOR
Si el tamaño de la malla es menor de 25 se podrá ver la siguiente pantalla:
Esta pantalla corresponde a la mejor solución encontrada, aquí
podemos ver los procesos que se repartieron en cada uno de los procesadores,
así como el costo de esa repartición y la generación 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 botón a la mejor solución y el
séptimo botón a la pantalla anterior. El icono de la derecha terminará la
ejecución 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 FSPARTICIÓN
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 botón izquierdo del mouse sobre el
botón deseado de esta pantalla.
Cabe señalar que en cada una de las 5 pantallas correspondientes a cada
una de las 5 soluciones (incluyendo la mejor solución), la pantalla es diferente
con respecto a las demás en cuanto a la repartición de los procesos en cada
uno de los procesadores.
Por último si se presiona el botón 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 información a los algoritmos genéticos De manera
aleatoria o bien proporcionada por el usuario, con la intensión de hacer
nuevos cálculos.
OPCION 2:
Si se optó por elegir la opción número 2 el programa se ejecutará
automáticamente, es decir, el sistema proporcionará de manera aleatoria todos
los datos correspondientes a las distancias de entre los procesadores y en
general a la información de las tablas de costos de comunicación entre
procesos y los costos de ejecución de cada proceso, únicamente el usuario
deberá proporcionar las probabilidades de mutación, cruzamiento, tamaño de
la malla , número de procesadores y número de generaciones si así lo desea,
pudiendo optar en cada cazo por obtener un valor aleatorio proporcionado por
la computadora.
LUIS JESUS BONNETAYALA 36 ASESOR: Dra. GRACIELA R O W ALONSO
PROYECTO DE JNWSTIGACION 2 (REPORTE FINAL) “LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIÓN
En términos generales podemos considerar que los Algoritmos
Genéticos son técnicas de búsqueda aleatoria que imitan a los procesos
observados en la evolución natural. Combinan la supervivencia de los más
aptos (o mejores) entre estructuras de soluciones con un estructurado cambio
de información aún aleatorizado.
Los Algoritmos Genéticos difieren de las técnicas de optimización
tradicionales en muchos aspectos. Ellos trabajan con una codificación de las
variables más que con las variables en sí mismas, y utilizan las reglas de
transición probabilística para moverse de una población de soluciones a otra.
La más interesante e importante característica de los Algoritmos Genéticos es
que ellos utilizan tan solo evaluaciones de la función objetivo. Esto es, los
Algoritmos Genéticos no utilizan ninguna información sobre
diferenciabilidad, convexidad o alguna otra característica auxiliar. Esto hace
que los Algoritmos Genéticos sean fáciles de utilizar y de implantar en gran
variedad de problemas de optimización.
La aplicación de los algoritmos genéticos a problemas de investigación
de operaciones se ha limitado debido a los dominios factibles complejos.
Dado un problema de optimización, frecuentemente el paso más dificil en la
aplicación del Algoritmo Genético es el codificar las soluciones tal que el
apareamiento de soluciones factibles de por resultado soluciones factibles.
Lo que nos lleva a que las técnicas para la codificación de soluciones
varían dado el tipo de problema, en la mayoría de los casos involucra cierta
cantidad de arte. Por lo general para problemas enteros 0-1, las soluciones se
representan típicamente 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 REPARTICIÓN
número de variables en el problema, digamos n, donde cada posición de la
cadena puede tomar el valor O Ó 1, (en terminología genética) cada posición
es un gene y el valor en esa posición es un allele. Esto resulta en un espacio
de búsqueda de cardinalidad 2”.
Los algoritmos genéticos son buenos candidatos de eficientes
estrategias heurísticas. También los algoritmos genéticos son técnicas de
búsqueda estocásticos, presentados por Holland hace aproximadamente 25
años, desde entonces han evolucionado favorablemente al grado de que día a
día se agregan más y más investigadores a este tipo de algoritmos, los cuales
se inspiran en el sistema natural de la evolución. El diseño acelerado y cada
vez mejor de las computadoras, ha hecho de los algoritmos genéticos un tema
muy popular en los últimos años en lo que se refiere a las aplicaciones para la
multiprogramación de dichas máquinas. Recientemente se han aplicado
muchas optimizaciones de tipo combinatorio a problemas en varios campos,
tales como, por ejemplo, el problema del agente viajero, la optimización de
conexiones y conectividad de redes neuronales, y clasificación de sistemas.
Los algoritmos genéticos más comunes, con grandes poblaciones toman un
gran tiempo de ejecución. Sin embargo en este trabajo se propone un
algoritmo que provee una solución rápida y eficiente al problema de
distribución estática de carga; dicha solución simula un sistema
multiprocesadores con varias tareas asignadas (llamadas procesos) , tal
solución es implementada en un sólo procesador. La idea principal para el
desarrollo del presente trabajo fue tomada de T.MUNTEAN y E-G. TALBI
investigadores de Laboratorie de Génie 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 característica importante de los algoritmos genéticos es que
pueden ser usados para gran variedad de problemas de optimización
combinatorios, puesto que no hacen suposiciones a cerca del espacio que
están buscando. Actualmente se están utilizando para resolver problemas de
optimización 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
Número de
Generacione
500
500
500
700
500
1000
50
50
1 O00
1 O00
10
U GENERA
De la soluci.
237
364
49
173
205
280
50
47
589
208
3
Los ejemplos probados fueron:
Un gran número de generaciones (aprox. lOOO), con un gran número de
procesos a repartir (aprox. 100).
LUIS JESUS BONNETAYALA 39 ASESOR: Dra. GRACIELA R O M N ALONSO
PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) “LOS ALGORITMOS GENETEOS COMO SOLUCION AL PROBLEMA DE REPARTICIÓN ESTATICA DE CARGA EN UN SISTEMA MULTIPROCESADOR
Un gran número de generaciones con un número pequeño de procesos a
repartir.
Estos ejemplos fueron probados con distintos valores de probabilidades
de mutación y cruzamiento.
De la tabla es importante hacer notar que cuando se tiene un gran
número de generaciones, un gran número de procesos a repartir y una alta
probabilidad tanto de mutación como de cruzamiento, el tiempo de ejecución
se eleva considerablemente de cuando no se tienen estas características.
Sin embargo cuando se tiene un número grande de generaciones, se
puede tener la confianza de que la solución obtenida se acerca mucho a la
óptima, puesto que el espacio de búsqueda es mayor. Lo anterior se nota
claramente en la columna llamada: Numero de Generación de la solución.
Este número por lo general se encuentra arriba de la generación número 100.
El programa se probó cuando existe comunicación Únicamente entre
algunos de los procesos (por ejemplo: únicamente dos de ellos se
comunican).
Se obtuvo como resultado que los procesos que tenían un costo de
comunicación muy grande, nunca se repartían en el mismo procesador,
mientras que los que tenían un costo de comunicación muy pequeño 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 FINAL) “LOS ALCKXITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIÓN ESTATICA DE CARGA EN UN SISTEMA h4LJLTiPROCESADOR
El programa fue escrito en el lenguaje “C”, las pruebas que se le
hicieron al algoritmo genético fueron realizadas en una máquina con
procesador PENTIUM de 100 MHz. Y con 16 MB de memoria RAM. Estos
datos se proporcionan para poder hacer después comparativas entre los
tiempos de ejecución y respuesta de los algoritmos genéticos para el problema
de repartición estática de procesos en un sistema multiprocesador.
A continuación se presenta el listado completo referente a la
manipulación de los datos por parte de los algoritmos genéticos. Cabe hacer
énfasis en que dicho listado puede presentar mejoras, y variaciones, para su
ejecución más eficiente, o bien con la intención de ahorrar recursos como la
memoria. Puesto que la intención principal, es el estudio de este tipo de
algoritmos en especial la aplicación para el problema de repartición estática
de carga, no se ha invertido mucho esfuerzo en la interfaz gráfica ni en
detalles de programación.
LUIS JESUS BONNETAYALA 41 ASESOR: Dra. GRACIELA ROMAN ALONSO
PROYECTO DE INVESTIGACION 2 (REPORTE FINAL) “LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIÓN ESTATICA DE CARGA EN UN SISTEMA MüLTPROCESADOR
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
// regresa el costo de comunicación 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 REPARTICIÓN 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 más 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 REPARTICIÓN ESTATICA DE CARGA EN UN SISTEMA MüLTiPROCESADOR
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 R O M N A L O N S O
PROBLEMA DE REPARTICIÓN
{ //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 o m o s o m a ~ 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 c r o m o s o m a 2 ~ P R O ] , i n t *
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 111 00;
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 REPARTICIÓN 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 EN UN SISTEMA MULTII’ROCESADOR “LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICI~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 Selectión
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 Año 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”, Master’s Project Rep., NJIT, Newark, NJ, 1993.
LUIS JESUS BONNET AYALA 50 ASESOR: Dra. GRACIELA R O M N ALONSO
PROYECTO DE INVESTIGACION 2 WPORTE FiNAL) “LOS ALGORITMOS GENETICOS COMO SOLUCION AL PROBLEMA DE REPARTICIÓN 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, Adaptatión in Natural and Artificial System,
Ann Arbor, MI: University of Michigan Press, 1975.
L. Davis “Job shop scheduling with genetic algorithms” . Proc. 1‘ Int. Conf. Genetic
Algorithms and Their Applications, July 24-26, 1985, Carnegie-Mellon University,
Pittsburgh, PA, pp 136-140.
LUIS JESUS BONNETAYALA 51 ASESOR: Dra. GRACIELA ROMAN ALONSO