Colonia de Hormigas en un Ambiente Paralelo Asíncrono Benjamín Barán Universidad Nacional de Asunción Centro Nacional de Computación San Lorenzo, Paraguay [email protected] y Marta Almirón Universidad Nacional de Asunción Centro Nacional de Computación San Lorenzo, Paraguay [email protected] Abstract Ant Colony System (ACS) studies ant artificial systems that take inspiration from the collective behavior of real ants to solve combinatorial optimization problems. ACS is based on the structured behavior of ant colony, where very simple individuals communicate information to each other using a chemical substance denominated pheromone, establishing the shortest paths from their nest to a feeding sources and back. The method consists in a computational simulation of the indirect communication that uses agents called ants to establish the shortest path keeping the information learned in a matrix of pheromone. Considering the ants are basically independent agents working in parallel without synchronization, this paper proposes a parallel asynchronous implementation in a network of personal computers, presenting experimental results that prove the usefulness of parallelism and the viability of the proposed asynchronous implementation. Keywords: Parallel and Distributed Systems, Artificial Intelligence, Combinatorial Optimization. Resumen Ant Colony System (ACS) estudia los sistemas artificiales de hormigas inspirados en la conducta colectiva de hormigas reales, utilizados para resolver problemas de optimización combinatoria. ACS se basa en el comportamiento estructurado de una colonia de hormigas donde individuos muy simples de una colonia se comunican entre sí por medio de una sustancia química denominada feromona, estableciendo el camino más adecuado entre su nido y su fuente de alimentos. El método consiste en simular computacionalmente la comunicación indirecta que utilizan las hormigas para establecer el camino más corto, guardando la información aprendida en una matriz de feromonas. Considerando que las hormigas son agentes básicamente autónomos que trabajan en paralelo, este trabajo presenta una implementación paralela asíncrona del algoritmo ACS en una red de computadoras personales, presentando resultados experimentales que prueban la ventaja de usar paralelismo y la viabilidad de la implementación propuesta. Palabras claves: Sistemas Distribuidos y Paralelismo, Inteligencia Artificial, Optimización Combinatoria. 1 Introducción La observación de la naturaleza ha sido una de las principales fuentes de inspiración para la propuesta de nuevos paradigmas computacionales. Así nacieron diversas técnicas de Inteligencia Artificial como: los Algoritmos Genéticos (Genetic Algorithms), Templado Simulado (Simulated Annealing), Redes Neuronales (Neural Networks), y entre estas técnicas, el sistema basado en Colonias de Hormigas (Ant Colony System) [1]. Resulta realmente interesante analizar como las hormigas buscan su alimento y logran establecer el camino más corto para luego regresar a su nido. Para esto, al moverse una hormiga, deposita una sustancia química denominada feromona como una señal odorífera para que las demás puedan seguirla. Las feromonas son un sistema indirecto de comunicación química entre animales de una misma especie, que transmiten información acerca del estado fisiológico, reproductivo y social, así como la edad, el sexo y el parentesco del animal emisor, las cuales son recibidas en el sistema olfativo del animal receptor, quien interpreta esas señales, jugando un papel importante en la organización y la supervivencia de muchas especies [2]. Al iniciar la búsqueda de alimento, una hormiga aislada se mueve a ciegas, es decir, sin ninguna señal que pueda guiarla, pero las que le siguen deciden con buena probabilidad seguir el camino con mayor cantidad de feromonas. Considere la Figura 1 en donde se observa como las hormigas establecen el camino más corto. En la figura (a) las hormigas llegan a un punto donde tienen que decidir por uno de los caminos que se les presenta, lo que resuelven de manera aleatoria. En consecuencia, la mitad de las hormigas de dirigirán hacia un extremo y la otra mitad hacia el otro extremo, como ilustra la figura (b). Como las hormigas se mueven aproximadamente a una velocidad constante, las que eligieron el camino más corto alcanzarán el otro extremo más rápido que las que tomaron el camino más largo, quedando depositado mayor cantidad de feromona por unidad de longitud, como ilustra la figura (c). La mayor densidad de feromonas depositadas en el trayecto más corto hace que éste sea más deseable para las siguientes hormigas y por lo tanto la mayoría elige transitar por él. Considerando que la evaporación de la sustancia química hace que los caminos menos transitados sean cada vez menos deseables y la realimentación positiva en el camino con más feromonas, resulta claro que al cabo de un tiempo casi todas las hormigas transiten por el camino más corto. (a) (b) (c) (d) Figura 1: Comportamiento de las hormigas reales. Basándose en el comportamiento de las hormigas arriba descrito, Dorigo et al. [1] propusieron una técnica conocida como Ant system para el conocido paradigma del cajero viajante (TSP – Traveler 2 Salesman Problem) [3] que presentaba tres variantes que se diferencian simplemente en el momento y la manera de actualizar una matriz que representa las feromonas de los sistemas biológicos. Trabajos posteriores de Dorigo y Gambardella extendieron los alcances del paradigma AS. Por ejemplo, Ant-Q es un híbrido entre AS y Q-learning, un conocido algoritmo de aprendizaje con realimentación positiva [4, 5]. Ant Colony System (ACS) es una extensión de Ant-Q [6], en el que se presentaron mejoras sustanciales a su antecesor Ant System en tres aspectos principales: i) el procedimiento que realizan las hormigas para la elección de la siguiente ciudad a visitar, pues se ofrece un balance entre la exploración de nuevos caminos y la explotación del conocimiento acumulado acerca del problema; ii) actualización global, permitiendo modificar la matriz de feromonas solo con el mejor tour encontrado hasta el momento; iii) la regla de actualización local, que permite a todas las hormigas actualizar la matriz de feromonas al terminar su tour. En esta publicación [6] se presenta una implementación puramente secuencial, en la que se aplica además búsqueda local, utilizando el conocido método 3-opt [7] para el problema del cajero viajante, que intenta reducir la longitud encontrada intercambiando los arcos. En particular, este método realiza tres cortes en el tour siendo optimizado e intercambia las ciudades destino, evitando de este modo invertir el sentido de las ciudades visitadas. El paralelismo es inherente al funcionamiento del algoritmo, esto es, un conjunto de agentes cooperativos intercambian información de manera indirecta, pero independientes unos de otros. En consecuencia, se vienen proponiendo varias estrategias de paralelización. Así en [8] se publican detalles de una implementación paralela síncrona y otra parcialmente asíncrona que utilizan barrera de sincronización y se resumen a continuación: a) En la implementación paralela síncrona, un proceso inicial (master) levanta a un conjunto de procesos hijos, uno para cada hormiga. Después de distribuir la información inicial acerca del problema, cada proceso inicia la construcción del camino y calcula la longitud del tour encontrado. Después de terminar este procedimiento, los resultados son enviados al master, quien se encarga de actualizar el nivel de feromonas y calcular el mejor tour encontrado hasta ese momento. Se inicia una nueva iteración con el envío de la nueva matriz de feromonas. b) En la implementación parcialmente asíncrona, se propone reducir la frecuencia de la comunicación, para esto, cada hormiga realiza un cierto número de iteraciones del algoritmo secuencial, independientemente de las otras hormigas. Solo después de estas iteraciones locales, se realiza una sincronización global entre las hormigas. Entonces, el master actualiza el nivel de feromonas y se inicia el proceso de nuevo. Como una extensión de este trabajo, Tomas Stützle presenta otra estrategia de paralelización [9], proponiendo corridas independientes y paralelas de un mismo algoritmo (ACO o MMAS), evitando de éste modo el overhead de comunicación. El método funciona solo si el fundamento del algoritmo es aleatorio, como en el caso de Ant System. La mejor solución de k corridas es elegida al final. Por su parte, los autores del presente trabajo presentaron otra estrategia de paralelización, totalmente asíncrona [10], proponiendo que un procesador master levante a los demás procesos hijos. Cada procesador hijo realiza la computación del problema para un cierto número de hormigas, obteniendo resultados parciales que serán transmitidos a los otros procesadores siguiendo criterios de migración semejantes a los utilizados por los algoritmos genéticos paralelos, colaborando todos en la solución del problema global. Los resultados fueron obtenidos simulando procesos paralelos en una workstation DEC 3000 con procesador ALPHA, operando bajo el sistema operativo OSF/1 versión 2.0. Este trabajo fue completado en [2], presentando resultados experimentales en una red de 6 computadoras personales utilizando LINUX, en un contexto totalmente asíncrono como lo es la red de computadoras heterogéneas utilizadas en la oportunidad. 3 El intercambio de información entre varias colonias de hormigas ya fue presentado por Michels y Middendorf [11] para el problema de Shortest Common Supersequence Problem (SCSP). En un trabajo posterior de Middendorf et al. se presentaron resultados experimentales con cuatro diferentes estrategias para el intercambio de información para el problema TSP [12]. Por su parte, el presente trabajo propone paralelizar el algoritmo Ant Colony System (ACS) en un ambiente totalmente asíncrono, en una red de computadoras personales, realizando corridas experimentales con el problema simétrico del cajero viajante (TSP) para 100 ciudades [3]. De esta manera, se tiene que, dadas N ciudades y las distancias entre estas (idénticas en ambos sentidos), se desea encontrar el camino más corto que permita recorrer las N ciudades, regresando al punto de partida, sin pasar por una misma ciudad más de una vez. Para esto, simples agentes computacionales llamados hormigas trabajan en cada procesador de una red de computadoras, explorando el espacio de soluciones a la propia velocidad de cada procesador, comunicando en forma asíncrona a los demás procesadores los resultados más prometedores, consolidando la información recogida en matrices de feromonas propias de cada procesador, que servirán para guiar la búsqueda de mejores soluciones en cada uno de los procesadores de la red, sin necesidad de sincronizar los procesos, pues esto resultaría muy costoso en un ambiente asíncrono de computadoras heterogéneas. Con esto, cada procesador cuenta con su propia matriz de feromonas, posiblemente diferente a las matrices utilizadas en otros procesadores, que guiarán las búsquedas de buenas soluciones de forma diferenciada en cada uno de los procesadores que colaboran en la búsqueda de las soluciones globales, proporcionando una diversidad que podrá ser beneficiosa (como ocurre por ejemplo con los algoritmos genéticos) y que en general, no puede aprovecharse en las implementaciones puramente secuenciales. La siguiente sección presenta el algoritmo Ant Colony System en una versión secuencial simplificada, mientras la técnica de paralelización propuesta se explica en la sección 3. Los resultados experimentales quedan para la sección 4. Finalmente, se presentan las conclusiones en la sección 5. 2 Ant Colony System Esta novedosa técnica se inspira en el comportamiento de las hormigas, animales casi ciegos pero con la habilidad de optimizar el camino hasta llegar a la fuente de su alimento y regresar al nido. El algoritmo utiliza agentes muy simples (llamados hormigas) que deben establecer el camino más corto para visitar todas las ciudades del problema una sola vez y regresar a la ciudad origen, para lo cual utilizan la información acumulada en una matriz de feromonas [6]. Para el presente trabajo, se considera un conjunto de n ciudades que deben ser visitadas por las m hormigas del sistema. Para satisfacer la restricción de que una hormiga visite todas las ciudades una sola vez, se asocia a cada hormiga k una pequeña estructura de datos llamada lista tabú, tabuk, que guarda información relativa a las ciudades ya visitadas por dicha hormiga. Una vez que todas las ciudades hayan sido recorridas, el trayecto o tour es completado volviendo a la ciudad origen. La lista tabú se vacía y nuevamente la hormiga está libre para iniciar un nuevo tour, independientemente del estado en que se encuentren las demás hormigas del sistema, lo que sugiere un alto grado de paralelismo asíncrono. En este contexto, se define como tabuk(n) al elemento n-esimo de la lista tabú de la hormiga k y como J k (i ) al conjunto de ciudades que aun no visitó la hormiga k ubicada en la ciudad i . Dado el conjunto de n ciudades, denominamos dij a la longitud del camino entre las ciudades i, j; para el caso del Problema de Cajero Viajante Euclidiano, tratado en el presente trabajo. El punto de partida para la solución del problema simétrico del cajero viajante, es la matriz de distancias D = {dij , distancia entre la ciudad i y la ciudad j}, a partir de la cual se calcula la visibilidad η ij = 1 d ij . Por su parte, se denota como τ = {τ (i, j )} a la matriz de feromonas a ser utilizada para consolidar la información que va siendo recogida por las hormigas. En otras palabras, τ (i, j ) representa la cantidad de feromona que se va almacenando entre cada par de ciudades (i j). Esta es inicializada con un valor τ 0 definida como: 4 τ 0 = (n × Lnn ) −1 (1) donde Lnn es a la longitud de un tour típico, obtenido inicialmente por alguna otra heurística o por pruebas aleatorias y que puede tratarse simplemente de una mala aproximación a la longitud óptima del tour, pues el algoritmo final no es muy sensible a la elección de este parámetro inicial [6]. La intensidad de las feromonas del arco (i j), denotada τ (i, j ) , es actualizada localmente mientras las hormigas construyen su tour, esto es, al moverse de la ciudad i a la ciudad j, cada hormiga deposita una cantidad de feromonas en el arco correspondiente, calculada conforme: τ (i, j ) = (1 − ρ ) × τ (i, j ) + ρ × τ 0 (2) donde 0 < ρ < 1 es un parámetro que puede entenderse como de evaporación de las feromonas de τ (para nuestros experimentos ρ = 0.1 ). Además, se procede a una actualización global de τ según (3), la cual se realiza cuando todas las hormigas de una colonia terminaron su tour y se puede establecer la mejor solución del ciclo. τ (i, j ) = (1 − α ) × τ (i, j ) + α × ∆τ (i, j ) (3) donde α es el coeficiente de evaporación de las feromonas, que determina el grado de influencia de una buena solución en la actualización de la matriz de feromonas, mientras que la cantidad de feromona depositada en un arco (i j), está dada por: (Lgb )-1 ∆τ (i, j ) = 0 si (i,j) ∈ al mejor tour global (4) de otra manera donde L gb es la longitud del mejor tour global, hallado desde el mismo inicio de la corrida. Durante la ejecución del algoritmo Ant Colony System, una hormiga ubicada en la ciudad i debe elegir la próxima ciudad j a visitar, para lo cual elige de entre las ciudades no visitadas, con una probabilidad q0 la ciudad con mayor cantidad de feromonas en τ (explotación), o en forma aleatoria conforme se explica a continuación (exploración). Esto puede ser expresado como: { } arg maxu∈J (i ) [τ (i, u )]× [η (i, u )]β , K j= si q ≤ q0 (explotación) de otra manera (basado en exploración) R, (5) donde q es un número aleatorio uniformemente distribuido entre [0...1] obtenido al momento de la decisión, q 0 es un parámetro 0 < q 0 < 1 que representa una probabilidad (en nuestros experimentos se probaron varios valores para q 0 {0.1 0.5 0.7 0.9}) y R es una variable aleatoria seleccionada de acuerdo con la probabilidad dada por la ecuación (6). [τ (i, j )] × [η (i, j )]β β p k (i, j) = ∑ [τ (i, u )] × [η (i, u )] u∈J k (i ) 0 si j ∈ J k (i ) (6) de otra manera donde β es un parámetro que determina la importancia relativa de las feromonas respecto a la distancia (β > 0) . Por consiguiente, el algoritmo ACS secuencial puede expresarse como: 5 1. Fase de inicialización Inicializar contador de ciclos NC Para cada arco (i,j): valor inicial de τ ij (t ) = τ 0 Para cada hormiga Elegir ciudad origen 2. Repetir hasta llenar tabuk Si es la ultima posición de tabuk Para cada hormiga: Insertar ciudad origen en tabuk Sino Para cada hormiga: Elegir próxima ciudad a ser visitada según ecuaciones (5) y (6) Mover la hormiga a la próxima ciudad Insertar ciudad seleccionada en tabuk Para cada hormiga: Actualizar feromonas según ecuación (2) 3. Repetir para cada hormiga k Calcular la longitud Lk del ciclo Actualizar feromonas según ecuación (3) i 4. Si (Condición_fin = Verdadero) Imprimir camino más corto Lk Sino Ir a la Fase 2 Pseudocódigo 1: Algoritmo Ant Colony System secuencial. En resumen, ACS se inicia ubicando m hormigas en n ciudades de acuerdo a una regla de inicialización. Para nuestros experimentos se eligen las ciudades origen de manera aleatoria. Cada hormiga construye su propio tour, eligiendo la próxima ciudad a visitar aplicando las ecuaciones (5) y (6). Mientras construyen su tour, las hormigas actualizan feromonas al moverse de la ciudad i a la ciudad j según la ecuación (2). Cuando todas las hormigas volvieron a su ciudad origen, se calcula la mejor distancia hallada en el ciclo, y nuevamente se realiza una actualización de las feromonas, esta vez teniendo en cuenta, solo la mejor solución global Lgb según la ecuación (3). El proceso se repite iterativamente hasta que se cumpla algún criterio de parada. Por simplicidad, en este trabajo, el proceso termina si el contador de ciclos alcanza un número máximo de ciclos NCMAX (definido por el usuario), para nuestros experimentos igual a 10.000. Debido a la forma en que se calculan las probabilidades en (5) y (6), las hormigas son guiadas en la búsqueda de soluciones por información heurística, prefiriendo elegir los arcos con menor distancia y mayor cantidad de feromonas, lo que a su vez sirve para incrementar la cantidad de feromonas en los caminos que van resultando óptimos a medida que avanza la corrida del algoritmo. 3 Implementación paralela Ant Colony System es un algoritmo inspirado en la observación de la naturaleza, y en particular, en una colonia de hormigas en la que cada individuo aporta su trabajo individual para alcanzar el objetivo común, la supervivencia. La colonia entera trabaja como un equipo en perfecta coordinación aunque cada hormiga en realidad hace su trabajo en forma independiente, tomando sus propias decisiones sobre la base de su ambiente localizado (ej. feromona percibida). Cada individuo comunica indirectamente a las demás hormigas su experiencia a través de la sustancia química denomina feromonas, por lo que existe un paralelismo natural en el comportamiento de las hormigas. Análogamente, el presente trabajo propone la utilización de agentes computacionales asíncronos y paralelos, llamados hormigas. Cada uno de estos 6 agentes va construyendo su tour en el computador en el que se encuentra, con la única restricción de no viajar a una ciudad ya visitada con anterioridad y dejando en la matriz de feromonas un rastro por los caminos ya transitados, sin una comunicación directa con las demás hormigas. Como en general, el número de hormigas que conforman una colonia es bastante superior al número de computadoras personales disponibles, el presente trabajo propone que cada procesador realice la computación del problema para cierto número de hormigas, de la misma forma que se lleva a cabo en un contexto secuencial, obteniendo resultados parciales que al cabo de cierto número de ciclos serán trasmitidos a los otros procesadores (sin ninguna sincronización), con el fin de colaborar todos en la solución del problema global, eligiendo para esto como hormigas migrantes a aquellas que hayan obtenido las mejores soluciones en su procesador. Figura 2: Estrategia de paralelización. El asincronismo aquí propuesto elimina los tiempos muertos producidos por la espera en la sincronización de la comunicación debido al importante cuello de botella que representa la sincronización en las implementaciones paralelas del Pseudocódigo 1, en especial, debido a las necesidades de sincronización de la Fase 3. En consecuencia, el presente trabajo propone que las hormigas migren de un procesador a otro en forma asíncrona, respetando políticas migratorias similares a las utilizadas con los Algoritmos Genéticos Paralelos, políticas definidas por los siguientes parámetros [13]: • El intervalo de migración: que establece cada cuantos ciclos cierta cantidad de hormigas migrarán de un procesador a otro. Para nuestros experimentos es un parámetro fijado en 8 ciclos, aunque puede tomar otros valores, que no son presentados en este trabajo. • La tasa de migración: que indica cuantas hormigas han de comunicarse a los otros procesadores destino cuando se cumpla el intervalo de migración. En las experiencias aquí reportadas, solo migra la mejor solución. • El criterio de selección: que determina la política a seguir para la selección de las hormigas que han de migrar. Por ejemplo que sean elegidas al azar o las mejores, siendo este último el implementando en las experiencias que se reportan a continuación. Cuando cada proceso recibe a las hormigas migrantes, de otros procesadores, estas compiten con la colonia local de hormigas a fin de que solamente la mejor solución de todas actualice la matriz de feromonas. En consecuencia, esta propuesta realiza corridas independientes del algoritmo en cada procesador hijo, que utiliza su propia matriz de feromonas, lo que resulta en procesadores independientes (no sincronizados) con diferentes características de búsqueda, dado que en general las matrices de feromonas son diferentes en cada procesador, pero que trabajan en equipo al compartir buenas soluciones que llevan en general a la convergencia de las matrices de feromonas a una misma solución global de longitud L gb , dado que a la larga, todas ellas van actualizando τ utilizando el mismo tour de longitud L gb al aplicar la ecuación (3). 7 Para levantar y controlar todos los procesos hijos donde realmente se hace el trabajo de optimización, se propone un master que comunique los parámetros iniciales y el número de ciclos que deben realizar cada uno de los procesos hijos, y espera de estos la comunicación de que han atendido al criterio de finalización (ver Figura 2) para dar por terminada la corrida. 1. Inicio Levantar procesos Enviar parámetros a cada hijo Fin= Falso 2. Repetir mientras no sea Fin Recibir solución de los hijos Guardar mejor solución Si suficientes procesos terminaron Fin = Verdadero 3. Eliminar procesos hijos 1. Inicio Recibir parámetros Inicializar variables 2. Repetir mientras (Ciclo_actual < NCMAX ) Mover hormigas hasta completar tour Calcular distancia recorrida para cada hormiga Escoger hormigas a emigrar Enviar hormiga migrante a otros procesos Recibir hormigas migrantes de otros procesos Seleccionar la hormiga que actualizará feromonas Actualizar matriz de feromonas Guardar camino más corto Ciclo_actual = Ciclo_actual+1 3. Enviar mejor solución al master. Pseudocódigo 2: Proceso Master. Pseudocódigo 3: Proceso Hijo. El Pseudocódigo 2 presenta al Master de la versión paralela que se encarga de administrar la implementación, incluyendo el lanzamiento de los procesos Hijos, presentado en el Pseudocódigo 3. Como la plataforma utilizada es homogénea, el Master eliminaba los procesos hijos, solo cuando todos comunicaron que ya realizaron NCMAX ciclos. Sin embargo, en un contexto heterogéneo, se deberá definir que significa “suficiente” (ver paso 2 del Pseudocódigo 2); por ejemplo, parando la corrida cuando K de N procesos avisan al Master que ya realizaron los ciclos que le fueron asignados. 4 Resultados experimentales Los experimentos fueron realizados en una red local tipo Ethernet (10 Mbps) con cuatro computadoras personales homogéneas, con procesadores AMD-K6 de 350 MHz, 128 MB de memoria RAM, corriendo bajo el sistema operativo Linux Mandrake 7.0. Las implementaciones fueron codificadas en lenguaje C utilizando librerías de PVM (Parallel Virtual Machine). El problema tipo utilizado para probar las distintas variantes del ACS fue el KroA100, TSP para 100 ciudades, cuyos datos se pueden encontrar en [3]. Se realizaron corridas de NCMAX=10.000 ciclos cada una, tanto para las implementaciones secuenciales como para las implementaciones paralelas (con cuatro procesadores), en donde cada procesador corre un número de ciclos igual a NCMAX / (Nro. de procesadores). Para los resultados que siguen ρ = α = 0.1 por simplicidad. El número de ciclos por procesador puede variar en un ambiente heterogéneo, para balancear la carga de los procesadores, es decir, se puede utilizar un número de ciclos proporcional a la velocidad de procesamiento. De hecho, los autores ya han realizado experiencias con Ant System en redes heterogéneas con 12 computadoras personales no homogéneas, ubicadas en 2 redes locales interconectadas, logrando el balance de carga mediante el uso de un número de ciclos proporcional al desempeño de cada procesador [14]. A continuación, se presentan resultados experimentales para las siguientes versiones: • ACS1 que utiliza el conocido método de búsqueda local 3-opt [7], aplicado solo cuando se halla una solución mejor que la almacenada como óptima de la corrida, realizando tres cortes en el tour hallado e intercambiando las ciudades destino con el fin de encontrar mejores soluciones. 8 • ACS2 que también aplica búsqueda local 3-opt pero eligiendo los arcos a ser cortados de manera aleatoria, solo un número K de veces, de forma a invertir menos tiempo relativo en la búsqueda heurística. • ACS3 que implementa el algoritmo original de Dorigo et al. sin búsqueda local, de forma a verificar el grado de optimización que se logra cuando solo se utiliza la colonia de hormigas; • ACS3’ que modifica ligeramente el ACS3 implementando una reinicialización de la matriz de feromonas después de 100 ciclos sin que se haya hallado una nueva mejor solución, pero recordando la mejor solución global, con la esperanza de incrementar la exploración una vez que la matriz de feromonas produzca un mayor nivel de explotación por acercarse a la convergencia. • ACS4 que es aplicable básicamente a un contexto paralelo (por lo que no se lo implementó en forma secuencial), pues cada procesador hijo corre un algoritmo diferente [13], esto es, el procesador 1 utiliza el ACS1, el procesador 2 utiliza el ACS2, el procesador 3 utiliza el ACS3 y el procesador 4 utiliza el ACS3’. Versión q0 = 0.9 Tiempo Distancia Mejor Sol Tiempo Distancia ACS1 ACS2 ACS3 ACS3' ACS4 Promedio 2112.5 2274.2 2157.7 2163.8 ----2177.1 22273.9 22077.6 22159.8 21717.7 ----22057.3 21737 21791 21718 21467 ----21678.3 564.6 547.8 551.2 571.5 546.1 556.2 21895.10 21331 21947.60 21529 22106.90 21558 21848.30 21510 21874.80 21356 21934.5 21456.8 Secuencial Paralelo Mejor Sol Tabla 1: Promedios de Tiempos y Distancias en 10 corridas típicas. En la Tabla 1 se pueden observar los promedios en tiempo y distancia hallados para cada una de las diferentes versiones en 10 corridas, así como la mejor solución encontrada en el experimento, todas utilizando el parámetro q0 = 0.9. La última fila ilustra el promedio obtenido entre todas las versiones (4 para el caso secuencial y 5 para el paralelo) de forma a comparar cada uno de los parámetros de desempeño. Como pude notarse, las versiones paralelas logran en general mejores soluciones que las versiones secuenciales (ver promedios de distancias medias o de mejores soluciones), con una aceleración superior a 3.9, lo que resulta en una eficiencia del orden del 98 % en el uso de los procesadores. Versión ACS1 ACS2 ACS3 ACS3' ACS4 Promedio Secuencial Paralelo Tiempo Distancia Mejor Sol Tiempo Distancia Mejor Sol 2581.4 2620.2 2611.4 2676.1 ----2622.3 21636 21802.8 21749.9 21747.6 ----21734.1 21380 21556 21477 21451 ----21466.0 662.3 670.4 667.7 668.0 637.1 661.1 21692 21725 21650 21740 21617 21684.8 21417 21390 21383 21387 21331 21381.6 Tabla 2: Promedios de Tiempos y Distancias. Por su parte, la Tabla 2 muestra los promedios obtenidos para cada experimento tanto secuencial como paralelo utilizando como parámetro q0 = 0.1 permitiendo al algoritmo una mayor búsqueda exploratoria. Sólo en la versión ACS4 se permitió a cada algoritmo utilizar un valor diferente para el parámetro q0 . Así tenemos que, el procesador 1 corriendo ACS1 utilizó q0 = 0.1, el procesador 2 corriendo ACS2 con q0 = 0.5, el procesador 3 corriendo ACS3 con q0 = 0.7 y el procesador 4 con ACS3’ y q0 = 0.9. Nuevamente se nota que las versiones paralelas son en promedio mejores que las secuenciales, dado que obtienen soluciones al menos tan buenas, pero con aceleraciones promedio que en este caso llegan a casi 3.97, lo que resulta en una eficiencia promedio que supera los 99 %. 9 El excelente nivel de eficiencia que se ha obtenido (mayor a 99%) no es de extrañar, pues como ya fuera expuesto, el ACS es inherentemente paralelo y al implementarse en forma asíncrona se elimina los retardos de sincronización, único obstáculo práctico para lograr niveles excelentes de paralelismo al considerar que ningún procesador requiere de resultados de otros procesadores para realizar sus cálculos, lo que incluso nos permite postular que el sistema es además tolerante a fallas, dado que la caída de un proceso hijo no impide que se obtenga la solución deseada. Sin embargo, al considerar la escalabilidad del sistema propuesto a un importante número de procesadores, el costo de la comunicación de un resultado a todos los procesadores (broadcasting) puede llegar a ser prohibitivo por lo que se deberán definir políticas migratorias en base a lo presentado en la sección 3, lo que puede implicar una pérdida de eficiencia respecto a los excelentes resultados aquí reportados. Finalmente, cabe mencionar la aparente ventaja de poder utilizar versiones (y hasta algoritmos) diferentes en cada procesador, pues con ello el conjunto resulta en principio al menos tan bueno como el mejor de los algoritmos secuenciales siendo combinados, aunque en nuestros experimentos, los datos no resultaron lo suficientemente concluyentes como para afirmar que en efecto esta mejora es considerable en la práctica. 5 Conclusión El presente trabajo propone una implementación paralela asíncrona del ACS (Ant Colony System), originalmente propuesto por Dorigo y Gambardella [6, 15] en un contexto puramente secuencial. Sin entrar a analizar las bondades del ACS frente a otras alternativas computacionales ampliamente difundidas en la literatura, la propuesta está especialmente diseñada para lograr un alto grado de eficiencia en las redes de computadoras personales, normalmente disponibles en la mayoría de las instituciones. Para esto, cada computadora procesa una población local, a su propio ritmo (y posiblemente, con su propio algoritmo), sin ningún tipo de sincronización con los demás procesadores, enviando buenas soluciones a otros procesadores y recibiendo de estos sus mejores soluciones (sin bloqueos de sincronización), de forma a lograr una sinergia entre todos los procesadores que colaboran en la búsqueda de la solución óptima. En efecto, el trabajo presenta resultados experimentales aplicados al problema del cajero viajante que comprueban el alto grado de eficiencia de la implementación propuesta, llegando en algunos casos (ver Tabla 2) a superar el 99% (una aceleración promedio de casi 3.97 con 4 procesadores). Al mismo tiempo, la implementación propuesta permite utilizar versiones (y hasta algoritmos) diferentes en cada procesador, lo que en principio trae ventajas adicionales al permitir una mayor exploración, pues aun con la misma matriz de feromonas inicial, cada procesador podrá realizar su búsqueda en otra región. Sin embargo, se requiere todavía de más experimentos para confirmar las ventajas de utilizar diferentes versiones en cada procesador. Si bien por un tema de espacio el presente trabajo solo presentó resultados experimentales utilizando 4 procesadores, se destaca que ya se han realizado experiencias con hasta 12 procesadores distribuidos en dos redes locales interconectadas por un router [12], con básicamente los mismos resultados, es decir, un excelente nivel de paralelismo sin perjudicar la calidad de las soluciones obtenidas. En consecuencia, se puede postular la escalabilidad de la implementación propuesta, utilizando redes con un gran número de computadoras personales, toda vez que el tamaño del problema así lo justifique. Finalmente, cabe mencionar que el paralelismo implícito en una Colonia de Hormigas permite múltiples aplicaciones que pueden llegar a beneficiarse de esta importante característica, especialmente cuando aprovechado en el contexto de grandes redes de computadoras [16]. En consecuencia, los autores se encuentran estudiando otras aplicaciones del ACS asíncrono aquí presentado, como por ejemplo, las aplicadas al ruteo óptimo de vehículos. Además, se encuentran realizando experimentos para evaluar el desempeño de distintas versiones en un ambiente heterogéneo así como distintas instancias del problema del cajero viajante [3]. 10 Bibliografía [1] Dorigo M., Maniezzo V. y Colorni A., “The Ant System: Optimization by a colony of cooperating agents”, IEEE Transaction on Systems, Man, & Cybernetics, Vol 26, No. 1, pg. 1-13, 1996. [2] Barán B. y Almirón M. “Colonias distribuidas de hormigas en un entorno paralelo asíncrono”. XXVI Conferencia Latinoamericana de Informática – CLEI’00, México, 2000. [3] Reinelt G., “TSP”, http://www.iwr.uniheidelberg.de/groups/comopt/software/TSPLIB95/ TSPLIB.html. Universität Heidelberg, Institut für Angewandte Mathematik, Alemania. 2000. [4] Gambardella L. y Dorigo M., “Ant-Q: A reinforcement learning approach to the traveling salesman problem” 12th International Conference on Machine Learning. San Francisco, pg. 252-260, 1995. [5] Dorigo M. y Gambardella L., “A study of some properties of Ant-Q”. IV International Conference on Parallel Problem from Nature, Berlin – Alemania: Springer-Verlag, pg. 656665, 1996. [6] Dorigo M. y Gambardella L., “Ant Colony System: A Cooperative Learning Approach to the Traveling Salesman Problem”. IEEE Transaction on Evolutionary Computation, Vol 1, No. 1, pg. 53-66, 1997. [7] Johnson D.S. y McGeoch L.A., “The traveling salesman problem: a case study in local optimization”, Local Search in Combinatorial Optimization, Eds. New York: Wiley: New York, 1997. [8] Bullnheimer B., Kotsis G. y Strauss C. “Parallelization Strategies for the Ant System”, Reporte Técnico POM 9/97, Universidad de Viena, Viena – Austria, 1997. [9] Stützle T., “Parallelization Strategies for Ant Colony Optimization”, Proc. of Parallel Problem Solving from Nature – PPSN-V, Springer Verlag, Vol. 1498, pg. 722-731, 1998. [10] Almirón M., Chaparro E. y Barán B. “Sistema distribuido de hormigas para el problema del cajero viajante” XXV Conf. Latinoam. de Informática – CLEI’99, Paraguay, 1999. [11] Michels R y Middendorf M. “An ACO Algorithm for the Shortest Common Supersequence Problem” Fifth International Conference on Paralell Problem Solving from Nature (PPSN’98), Amsterdam, Springer-Verlag, LNCS 1498, 692-701, 1998. [12] Middendorf M, Reiscgke F.y Schmeck H. “Information Exchange in Multi Colony Ant Algorithms” Parallel and Distributed Computing, Proceedings of the 15 IPDPS 2000 Workshops, Third Workshop on Biologically Inspired Solutions to Parallel Problems (BIOSP3), Cancum, Mexico, Springer-Verlag LNCS 1800, 645-652, 2000. [13] Barán B., Chaparro E. y Cáceres N., “A-Teams en la Optimización del Caudal Turbinado de una Represa Hidroeléctrica”, Conferencia Iberoamericana de Inteligencia. Artificial – IBERAMIA’98, Portugal, 1998. [14] Almirón M. y Barán B. Reporte Técnico RT003-2001. Universidad Nacional de Asunción, Paraguay, 2001. URL: http://www.cnc.una.py/invest/ publicaciones.html. [15] Dorigo M., Ant Colony Optimization, URL: http://iridia.ulb.ac.be/dorigo/ACO/ACO.html. [16] Barán B. y Sosa R., “A New approach for AntNet routing” IEEE Ninth International Conference on Computer Commnunications and Networks. Las Vegas, Nevada. 2000. 11