Implementación de algoritmos genéticos paralelos de grano burdo en redes locales de computadoras. Arturo Gómez Cortés y Raúl Leal Ascencio ITESO, Guadalajara Resumen El presente trabajo describe una arquitectura para la implementación de algoritmos genéticos de grano burdo en redes locales de computadoras, utilizando los recursos de cómputo disponibles en instituciones educativas. 1 Introducción Los algoritmos genéticos han demostrado ser una herramienta poderosa en la solución de una gran variedad de problemas de optimización. Uno de los principales inconvenientes de su utilización es el tiempo de cómputo requerido para obtener una solución satisfactoria. Se han propuesto esquemas que permiten la implementación de estos algoritmos en múltiples procesadores, con lo que se puede obtener una reducción substancial de este tiempo. La mayoría de las universidades cuentan con un gran número de computadoras interconectadas mediante una red local. El poder de cómputo es muy elevado y en general se encuentra subutilizado. Las aplicaciones que con mayor frecuencia se emplean (procesadores de texto, hojas de cálculo, herramientas de dibujo, etc.) no hacen uso intensivo del procesador. Generalmente requieren de la interacción del usuario, quedando el procesador inactivo entre acciones del mismo. Los porcentajes de utilización del procesador y de la red son, en general, bajos. El sistema que aquí se propone busca utilizar estos recursos para la implementación de algoritmos genéticos. Dicho sistema no debe interferir de manera significativa con las actividades que actualmente se realizan en estas computadoras. El sistema debe facilitar la implementación de algoritmos genéticos, ocultando al usuario todos los detalles de la distribución de tareas en múltiples procesadores. 2 Algoritmos genéticos paralelos Los algoritmos genéticos han demostrado ser una herramienta poderosa en la solución de problemas de optimización (Para una descripción de diferentes implementaciones de las operaciones de los algoritmos genéticos se recomienda al lector consultar [1]). Tienen la desventaja de requerir de mucho tiempo de procesador. La evaluación de la función de desempeño suele tomar en muchos casos un tiempo considerable. Esta se debe evaluar para cada nuevo cromosoma generado, y esto se debe hacer por varias generaciones.
Afortunadamente el algoritmo es intrínsecamente paralelo. La evaluación de esta función se puede realizar de manera concurrente para diferentes cromosomas, si se dispone de múltiples procesadores y de un canal de comunicación entre ellos. A las implementaciones de los algoritmos genéticos que buscan aprovechar la disponibilidad de múltiples procesadores se les llama algoritmos genéticos paralelos. Existen varias formas de distribuir la carga de cómputo en varios procesadores. Los algoritmos genéticos maestro-esclavo llevan a cabo la forma más simple de distribución: los cromosomas a evaluar se reparten entre el número de procesadores disponibles. Los resultados se reportan al procesador maestro que realiza todas las otras operaciones del algoritmo genético. Sólo la evaluación se distribuye entre los diferentes procesadores, las operaciones restantes se efectúan de manera centralizada. Esta implementación de algoritmos genéticos paralelos tiene la desventaja de hacer uso intensivo del canal de comunicación. El tiempo que toma transferir los cromosomas a los distintos procesadores puede ser comparable al tiempo de evaluación de los mismos. De hecho se ha demostrado que en su punto de operación óptimo, un algoritmo genético maestro-esclavo sólo utiliza los procesadores el 50% del tiempo [2]. Los algoritmos genéticos de grano burdo buscan disminuir el tiempo de convergencia del algoritmo sin hacer uso intensivo del canal de comunicación. En este tipo de algoritmos genéticos existen múltiples poblaciones, tantas como procesadores se emplean. Cada procesador implementa el algoritmo completo sobre una población ubicada en su espacio de memoria. Las poblaciones evolucionan de manera independiente, hasta que un evento preestablecido acontece, y los mejores cromosomas de cada población emigran hacia las poblaciones vecinas. Los cromosomas que emigran substituyen algunos de los cromosomas de las poblaciones receptoras. La finalidad de la emigración es introducir nueva información que evite que la población converja a un máximo (ó mínimo) local. El evento que produce la emigración puede ser: la convergencia de todas las poblaciones, un tiempo preestablecido, o un número definido de generaciones transcurridas. La vecindad entre poblaciones no necesariamente corresponde a la vecindad física de los procesadores, establecida por el tipo de canal de comunicación, sino a una vecindad lógica. La definición de dichas vecindades establece la topología del algoritmo genético paralelo. El tiempo de convergencia de una población depende, entre otros factores, del número de cromosomas que la conforman. A mayor número de cromosomas mayor tiempo de convergencia. Esto se debe a dos factores: el primero es que entre más numerosa sea la población más tiempo toma por generación el evaluar los cromosomas, y el segundo es que el número de generaciones requeridas para que el algoritmo converja es mayor entre mayor es el número de cromosomas de la población.
Este tipo de algoritmos genéticos reducen el tiempo de convergencia reduciendo el tamaño de las poblaciones. Una población pequeña tiene el problema de que puede converger hacia un máximo (o mínimo) local. La emigración elimina este problema. Un algoritmo genético de grano burdo con n poblaciones de tamaño m puede obtener un resultado de la misma calidad que un algoritmo genético sencillo de tamaño nm [2]. 4 Arquitectura del sistema El sistema aquí propuesto es una plataforma para la implementación de algoritmos genéticos de grano burdo en las instalaciones de instituciones educativas. Éste está compuesto por tres tipos diferentes de programas: el maestro, el esclavo y el monitor. El maestro sólo se ejecuta en una computadora, mientras que el esclavo y el monitor se pueden ejecutar en una o más computadoras. La figura 1 esquematiza la arquitectura de este sistema. Las líneas señalan las comunicaciones entre elementos del sistema. Sólo existe comunicación entre los esclavos y el maestro, y entre los monitores y el maestro. El esclavo tiene la función de aplicar el algoritmo genético a una población. En cada esclavo existe una población que evoluciona. El maestro es el responsable de implementar la topología del algoritmo genético. Cuando las poblaciones de los esclavos convergen, transfieren sus mejores individuos al maestro. Éste retransmite los cromosomas recibidos a los esclavos en función de la topología del algoritmo genético. El monitor es la interface al usuario. Desde ésta, el usuario del sistema puede configurar el algoritmo genético con el que desea resolver un problema. Monitor Maestro Monitor Figura 1
Tanto el maestro como los esclavos se encuentran en ejecución cuando las computadoras en las que fueron instalados se encuentran encendidas. Los esclavos intentan establecer una conexión con el maestro. Si éste no está activo en ese momento, intentan conectarse nuevamente unos segundos después. Una vez que se establece la conexión entre los esclavos y el maestro, todos permanecen a la espera de algún comando a ejecutar. El maestro recibe comandos de los monitores y envía comandos a los esclavos. Tanto el maestro como los esclavos deben ejecutarse como procesos ocultos de baja prioridad para permitir que los procesadores puedan ser utilizados simultáneamente por otras aplicaciones. Siendo de baja prioridad el proceso, los usuarios de las computadoras pueden hacer uso de sus aplicaciones sin percibir un aumento importante en el tiempo de respuesta. Cuando un usuario desea hacer uso del sistema inicia la aplicación monitor y con ésta define el tipo de codificación a usar, los tipos de las operaciones del algoritmo genético que se van a emplear y la función de evaluación a utilizar. La función de evaluación debe ser implementada por el usuario, ya que es particular de cada problema que se desee resolver. El monitor envía al maestro la definición que el usuario hizo del algoritmo genético. El maestro cuenta con librerías que implementan las diferentes definiciones de las operaciones de los algoritmos genéticos (selección, cruce, etc.) para diferentes tipos de codificación de los cromosomas. En base a la definición del usuario, el maestro construye un mensaje conteniendo la implementación de las operaciones del algoritmo genético, y lo envía a los esclavos. Los esclavos inicializan sus poblaciones y ejecutan el algoritmo genético empleando las operaciones que recibieron del maestro. Cada vez que sus poblaciones convergen, los esclavos reportan al maestro sus mejores cromosomas. El maestro implementa la topología del algoritmo y además registra el mejor cromosoma de entre todas las poblaciones y el valor de su índice de desempeño. Éste se reporta al monitor. El usuario puede observar el desarrollo de la solución del problema desde el monitor. No es necesario que el monitor esté activo durante todo el proceso de solución de un problema. El maestro y los esclavo pueden continuar su ejecución y posteriormente el usuario puede ejecutar un monitor para consultar los resultados. El usuario puede programar, empleando alguna herramienta de desarrollo, nuevas definiciones de operaciones de los algoritmos genéticos y darlas de alta en el maestro. Estas pueden ser posteriormente empleadas por los usuarios del sistema. 5 Comentarios finales Actualmente se está realizando una implementación de la arquitectura aquí descrita. Dicha implementación se va a poner a prueba en la universidad ITESO
en Guadalajara, Jalisco. Resultados de desempeño del sistema podrán ser reportados posteriormente. Referencias [1] GEN, MITSUO; CHENG, RUNWEI. Genetic Algorithms & Engineering Design, John Wiley & Sons, Inc., Estados Unidos, 1997. [2] CANTÚ-PAZ, ERIK, Designing Efficient and Accurate Parallel Genetic Algorithms, julio, 1999, ftp://ftp-illigal.ge.uiuc.edu/pub/papers/illigals/99017.ps.z
Datos de los autores: Nombre: Arturo Gómez Cortés Actividad: tesista de la Maestría en Electrónica Industrial de ITESO, Guadalajara, Jal. Correo electrónico: agomezcortes@usa.net Intereses: programación evolutiva, sistemas no lineales. Nombre: Raúl R Leal Ascencio Actividad: Profesor/Investigador de la Maestría en Electrónica Industrial de ITESO, Guadalajara, Jal. Correo electrónico: rleal@iteso.mx Intereses: aplicaciones indutriales de inteligencia de máquina. aplicaciones de las redes neuronales artificiales.