Un algoritmo basado en la optimización por enjambre de partículas
Transcripción
Un algoritmo basado en la optimización por enjambre de partículas
INSTITUTO TECNOLÓGICO DE LA PAZ DIVISIÓN DE ESTUDIOS DE POSGRADO E INVESTIGACIÓN MAESTRÍA EN SISTEMAS COMPUTACIONALES UN ALGORITMO BASADO EN LA OPTIMIZACIÓN POR ENJAMBRE DE PARTÍCULAS PARA EL PROBLEMA DE ASIGNACIÓN AXIAL 3-DIMENSIONAL TESIS QUE PARA OBTENER EL GRADO DE MAESTRO EN SISTEMAS COMPUTACIONALES PRESENTA: ING. JOSÉ ALBERTO FRANCO GÓMEZ DIRECTOR DE TESIS: DR. MARCO ANTONIO CASTRO LIERA MIEMBROS DEL JURADO: PRESIDENTE: DR. SAÚL MARTÍNEZ DÍAZ SECRETARIO: M. EN S.C. JAVIER ALBERTO CARMONA TROYO VOCAL: M. EN C. JESÚS ANTONIO CASTRO VOCAL SUPLENTE: M.A.T.I. LUIS ARMANDO CÁRDENAS FLORIDO LA PAZ, BAJA CALIFORNIA SUR, MÉXICO; SEPTIEMBRE DEL 2011. RESUMEN de la tesis de José Alberto Franco Gómez, presentada como requisito parcial para obtener el Grado de MAESTRO en SISTEMAS COMPUTACIONALES CON LINEA DE TRABAJO MODELACIÓN INTELIGENTE DE SISTEMAS. La Paz, Baja California Sur; septiembre del 2011. Un Algoritmo Basado en Optimización por Enjambre de Partículas para el Problema de Asignación Axial 3-Dimensional La optimización por enjambre de partículas (PSO) es un algoritmo inspirado en el comportamiento social de individuos dentro de enjambres en la naturaleza. Este método emplea una búsqueda basada en poblaciones; en la cual los individuos, para desplazarse en el espacio de búsqueda, usan su propia experiencia y el conocimiento de sus vecinos con distintos grados de confianza. PSO fue originalmente desarrollado para problemas continuos, pero varias adaptaciones del método a problemas discretos han sido propuestas recientemente. Con el fin de resolver el problema de asignación axial 3-dimensional (3AP), el cual es un problema discreto de tipo NP-duro, los operadores clásicos de PSO fueron redefinidos y un algoritmo en paralelo fue implementado. El algoritmo propuesto se aplicó a un conjunto de problemas de referencia y los resultados fueron comparados con los existentes de otros algoritmos que solucionan 3AP. La evaluación muestra que el algoritmo propuesto es competitivo. Palabras claves: Adaptación de continuo a discreto, problemas discretos, método evolutivo, algoritmo paralelo, optimización por enjambre de partículas, problema de asignación axial 3-dimensional. i ABSTRACT of the thesis presented by JOSÉ ALBERTO FRANCO GÓMEZ as a partial requirement to obtain the MASTER degree in COMPUTER SYSTEMS in INTELLIGENT SYSTEMS MODELING. La Paz, Baja California Sur, México; September 2011. An Algorithm Based on Particle Swarm Optimization for Three Dimensional Axial Assignment Problem Particle Swarm Optimization (PSO) is an algorithm inspired by natural social behavior of individuals in swarms. This method employs a collaborative population based search, which features individuals that base their movements across the search space on self experience and neighborhood information. PSO was originally developed for continuous problems, but several adaptations of the method to discrete problems have been recently proposed. In order to solve the three dimensional axial assignment problem (3AP), which is a NP-hard discrete problem, the classical operators of PSO were redefined and a parallel algorithm was implemented. The proposed algorithm was applied to a set of benchmark problems and results were compared with existing from other algorithms for solving 3AP. The evaluation shows that the proposed algorithm is competitive. Keywords: Adaptation continues to discrete, discrete problems, evolutionary method, parallel algorithm, particle swarm optimization, three dimensional axial assignment problem. ii A mis padres A mis hermanos y sobrinitos A María de Jesús Martínez González iii Agradecimientos Agradezco a todas las personas que, directa o indirectamente, contribuyeron para que esta etapa académica de mi vida llegara a buen término. Al Dr. Marco Antonio Castro Liera por su enseñanza, guía, paciencia y disposición. Al Dr. Saúl Martínez Díaz a quien considero como una de las personas más importantes en mi formación académica. A todos los profesores que fueron parte de este proceso y de quienes aprendí mucho: a la Lic. María del Carmen Rodríguez Aguilar, M. en C. Jesús Antonio Castro, M. en S.C. Javier Alberto Carmona Troyo, M.A.T.I. Luis Armando Cárdenas Florido, M. en C. Bernabé Ortiz y Hebert y al Dr. Mario Cortés Larrinaga. Al M. en C. Manuel E. Casillas Brook por su amabilidad y por darme todas las facilidades en las instalaciones de posgrado para la realización de los experimentos. Al Dr. Matthew J. Saltzman por facilitarme los problemas de referencia. Al Ing. Jesús Belizario Ruíz Murillo por la oportunidad de trabajo que me ofreció y que significó tener los recursos para poder estudiar este posgrado. Al Ing. Jonathan Dezi Verduzco Cota por el gran apoyo bibliográfico. A todos mis compañeros de la maestría. iv Tabla de Contenido Sección Página Resumen Abstract Dedicatorias Agradecimientos Tabla de contenido Lista de figuras Lista de tablas I. Introducción 1.1 Definición del problema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . 1.2 Justificación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Objetivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.1 Objetivo general. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.2 Objetivos específicos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4 Organización de la tesis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . II. El problema de la asignación axial tres dimensional 2.1 La optimización. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Problemas de optimización combinatorios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Dificultad de un problema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4 Problemas de asignación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.1 Asignación generalizada o bidimensional. . . . . . . . . . . . . . . . . . . . . . . . 2.4.2 Problemas multidimensionales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . III. Optimización por enjambre de partículas 3.1Inteligencia Artificial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1 Escalador de colinas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2 Recocido simulado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.3 Búsqueda Tabú. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.4 Algoritmos Genéticos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.5 Inteligencia colectiva. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Optimización por enjambre de partículas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 PSO aplicado en problemas discretos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 Implementación de PSO para algunos problemas discretos. . . . . . . . . . . . . . . . . . . 3.5 Métodos heurísticos implementados para la solución de 3AP. . . . . . . . . . . . . . . . . . IV Implementación, experimentos y resultados 4.1 Redefinición de los operadores de PSO al espacio discreto. . . . . . . . . . . . . . . . . . . 4.1.1 Espacio de búsqueda. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.2 Representación de la solución. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.3 Función de aptitud. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.4 Relación de orden. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v i ii iii iv v vii viii 1 2 3 4 4 4 4 6 6 6 8 10 10 12 16 16 17 18 18 18 19 20 24 26 29 32 33 33 33 34 34 Tabla de Contenido (Continuación) Sección Página 4.1.5 Distancia entre dos partículas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.6 Velocidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.7 Suma. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Implementación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.1 Números aleatorios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.2 Inicialización de las partículas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.3 Aptitud de las partículas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.4 Informantes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.5 Método principal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Implementación Distribuida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.1 Proceso maestro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.2 El proceso esclavo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 Resultados experimentales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.1 Resultados usando el conjunto de Balaz y Saltzman. . . . . . . . . . . . . . . . 4.4.2 Resultados usando el conjunto se Crama y Spieksma. . . . . . . . . . . . . . . V. Conclusiones y trabajo futuro 5.1 Conclusiones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Trabajo futuro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Referencias Apéndice A Configuración básica de PVM en Fedora 14 vi 34 35 38 41 41 42 43 43 44 44 46 47 49 51 58 66 66 66 68 71 Lista de Figuras Figura 1 Página Ejemplo de maximización donde se muestra que los óptimos locales no garantizan una buena solución. 7 2 Grafo bipartito para la asignación bidimensional. 11 3 Selección de n triángulos. 13 4 Estados del espacio de búsqueda que atrapan al agente escalador de colinas 17 5 Modificación de la posición de la partícula i . 23 6 Componentes del análisis de forma. 32 7 Analogía de un movimiento lineal donde se muestra cómo se pueden dejar 38 fuera posiciones prometedoras. 8 Analogía de un movimiento errante, el cual, tiene más probabilidades de 38 encontrar mejores posiciones en su trayecto 9 Analogía de un movimiento aplicando el operador vii . 40 Lista de Tablas Tabla Página I Características de los equipos de cómputo utilizados en las pruebas. 50 II Descripción de las pruebas implementadas. 51 III Resultados de la prueba 1. 51 IV Comparación de los resultados de la prueba 1. 52 V Comparación de los resultados de la prueba 1 usando resultado / óptimo 52 VI Resultados de la prueba 2. 53 VII Comparación de los resultados de la prueba 2. 53 VIII Comparación de los resultados de la prueba 2 usando resultado / óptimo . 54 IX Resultados de la prueba 3. 54 X Comparación de los resultados de la prueba3. 55 XI Comparación de los resultados de la prueba 3 usando resultado / óptimo . 55 XII Resultados de la prueba 4. 56 XIII Comparación de los resultados de la prueba 4. 56 XIV Comparación de los resultados de la prueba 4 usando resultado / óptimo . 57 XV Resultados de la prueba 5. 58 XVI Comparación de los resultados de la prueba 5. 58 XVII Comparación de los resultados de la prueba 5 usando resultado / óptimo . 59 XVIII Resultados de la prueba 6. 60 viii Lista de Tablas (Continuación) Tabla Página XIX Comparación de los resultados de la prueba 6. 60 XX Comparación de los resultados de la prueba 6 usando resultado / óptimo . 61 XXI Resultado de la prueba 7. 62 XXII Comparación de los resultados de la prueba7. 62 XXIII Comparación de los resultados de la prueba 7 usando resultado / óptimo . 63 XIV Resultados de la prueba 8. 64 XXV Comparación de los resultados de la prueba 8. 64 XXVI Comparación de los resultados de la prueba 8 usando resultado / óptimo . 65 ix 1 Capítulo I Introducción Los problemas de optimización tienen gran relevancia práctica en muchas áreas. El problema acerca del plegamiento de proteínas, la optimización de recursos industriales, encontrar los parámetros indicados para algún proceso, entre otros, son ejemplos comunes donde se requiere de un método que garantice un resultado casi inmejorable. La optimización se presenta en dos clases. La primera es la continua y la segunda es la combinatoria o discreta. Los problemas combinatorios se caracterizan por tener un número muy grande de posibles soluciones y, en general, la mayoría de este tipo de problemas encontrados en la vida real están considerados como muy difíciles de resolver. En principio, es posible hacer una enumeración de todas las combinaciones que integran al espacio de búsqueda para encontrar la solución que cumpla con las restricciones del problema. Sin embargo, el número de posibles combinaciones, aunque finito, es muy grande. Dada su importancia, la optimización ha sido objeto de estudio desde diferentes tipos de enfoques. Muchos problemas pueden resolverse con búsquedas exhaustivas o a través de métodos matemáticos exactos como la programación lineal y el cálculo. Sin embargo, existe una cantidad considerable de problemas tanto continuos como discretos que presentan espacios multimodales. Estos por su dificultad son intratables con técnicas tradicionales. Para este conjunto de problemas se han venido empleando otro tipo de métodos enmarcados dentro del ámbito de la inteligencia artificial, los cuales, buscan explorar de manera más eficiente el espacio de búsqueda. Un ejemplo es la optimización por enjambre de partículas (PSO por sus siglas en inglés). Esta es una técnica evolutiva basada en poblaciones que fue desarrollada por Kennedy y Eberhart en 1995. Este método se basa en el paradigma de inteligencia colectiva y trata de 2 emular el comportamiento de los bancos de peces (o parvadas de pájaros) con el objetivo de solucionar problemas de optimización continuos y no lineales. Los elementos en los que se basa este método son las partículas, las cuales, son soluciones potenciales que tienen una posición y velocidad asociada. Estos elementos “vuelan” a través de un espacio multidimensional ayudándose de su propia experiencia, del conocimiento del enjambre y de operadores estocásticos. De esta manera, se espera que las partículas tiendan a concentrarse en áreas potencialmente buenas. PSO comparte algunas similitudes con otras técnicas evolutivas como la generación aleatoria de la población y el uso de una función de evaluación. Pero a diferencia de otros métodos, el número de parámetros que se deben ajustar es pequeño (Eberhart y Shi, 2001). Esto hace que la implementación, comparada con otras técnicas evolutivas, sea más sencilla. 1.1 Definición del problema. La optimización por enjambre de partículas ha sido utilizada con gran éxito para solucionar problemas de tipo continuo. Algunos ejemplos donde se ha demostrado su efectividad son: a. Entrenamiento de redes neuronales (Eberhart y Shi, 2001). Prácticamente, el método puede ser aplicado a cualquier tipo de red neuronal. b. Funciones continuas no lineales (Ching-Jong, et al. 2007). En términos generales PSO puede ser utilizado para resolver la mayoría de los problemas de optimización. Sin embargo, la definición clásica del método no funciona para problemas combinatorios. Ahora bien, el problema de asignación axial 3-dimensional es un problema de optimización combinatorio que pertenece a la clase NP duro . Esto implica que es un problema no tratable con métodos tradicionales. Aun así, se han desarrollado métodos heurísticos y exactos para intentar solucionarlo. 3 El método de optimización por enjambre de partículas no ha sido adaptado para solucionar el problema de asignación axial 3-dimensional y, por lo tanto, no se tienen datos de cuál sería el comportamiento de esta técnica para este problema discreto en particular. 1.2 Justificación. La optimización de problemas de tipo discreto sigue siendo un tema abierto de investigación. La razón es que muchos problemas tanto teóricos como prácticos caen en esta categoría y, normalmente, su espacio de solución es muy complejo. Un enfoque que se ha venido aplicando, con el objetivo de encontrar mejores soluciones, es adaptar técnicas que han tenido éxito en cierto ámbito a otro completamente diferente. Uno de estos casos es la optimización por enjambre de partículas. PSO, como ya se mencionó, fue desarrollado inicialmente para resolver problemas continuos; pero algunos expertos y académicos empezaron a pensar cómo solucionar otro tipo de problemas de optimización con este método (Lu Qiang, et al. 2009). Kennedy y Eberhart (1997) fueron los primeros en proponer un método para solucionar problemas discretos con PSO utilizando un esquema de código binario (Wei-Neng, et al. 2009). Desde entonces muchos métodos, basados en esta heurística, se han definido para solucionar problemas combinatorios, pero hasta hoy no se ha encontrado un método genérico que pueda ser aplicado a la mayoría de los problemas. En general, los algoritmos propuestos son específicos al problema a solucionar. Por ejemplo, el método con esquema de código binario es muy prometedor para ciertos problemas, pero muchos espacios discretos no caen dentro de su ámbito de operación. Por lo tanto, la idea de adaptar el método clásico de optimización por enjambre de partículas, para solucionar el problema de asignación axial 3-dimensional (3AP), se fundamenta en una corriente de investigación vigente e interesada en encontrar métodos particulares (o bien genéricos) basados en PSO para solucionar problemas discretos. Por otra parte, el problema de asignación axial 3-dimensional surge de un bastante número de situaciones prácticas. Por ejemplo, en la inversión de capital, en el lanzamiento de 4 satélites, en el montaje de circuitos impresos, manufacturas, teoría de grafos, economía, etc. Estos casos de aplicación, junto con otros más, hacen que el estudio de este problema sea aun de interés. 1.3 Objetivos 1.3.1 Objetivo general Implementar un algoritmo basado en la optimización por enjambre de partículas aplicado al problema de asignación axial 3-dimensional para determinar su eficiencia y la calidad de sus soluciones generadas. 1.3.2 Objetivos específicos a. Contar con un análisis detallado de las características del problema 3AP y de los avances que existen en la optimización por enjambre de partículas para problemas de tipo discreto que sirvan de base para proponer un algoritmo que resuelva el problema 3AP. b. Diseñar casos de prueba para hacer los ajustes del algoritmo y realizar experimentos del algoritmo propuesto con un conjunto de problemas de referencia. c. Analizar los resultados para determinar la eficiencia y calidad de las soluciones del algoritmo propuesto. 1.4. Organización de la tesis. El resto de este documento está organizado de la siguiente manera: Los capítulos II y III contienen las bases teóricas para entender el problema que se está tratando. En el capítulo II se define de manera formal el concepto de optimización. También, se especifican los criterios de este trabajo para definir la dificultad de un problema. Por otra parte, se define lo que son los problemas combinatorios. Se hace una descripción general de 5 los problemas de asignación haciendo énfasis en el problema de asignación axial 3dimensional. El capítulo III contiene una descripción de la optimización por enjambre de partículas. En primer lugar, se ubica el método en el contexto de la inteligencia artificial y de la inteligencia colectiva. Después, se hace una descripción de algunas técnicas heurísticas. Se describe la optimización por enjambre de partículas para el caso discreto y se mencionan ejemplos donde se ha aplicado. Al final del capítulo, se hace un recuento de algunos métodos que se han empleado para solucionar el problema 3AP En el capítulo IV se presenta la metodología utilizada para la resolución del problema, se hace una descripción del algoritmo implementado, se describen los experimentos realizados y se muestran los resultados obtenidos. En el capítulo V se presentan las conclusiones así como el trabajo futuro a realizar. 6 Capítulo II El Problema de la Asignación Axial 3-Dimensional 2.1 La optimización. El objetivo más importante de la optimización es mejorar (Goldberg, 2006), por tal motivo, las técnicas de optimización buscan obtener el óptimo global de un problema. Este es un valor (o un conjunto de valores) dentro de un espacio de búsqueda que cumple con ciertas restricciones y que hace que el costo global del problema sea un máximo o un mínimo. El problema de la minimización se puede expresar como sigue: min f ( x ) , sujeto a: (1) gi ( x) 0, i 1,..., p h j ( x) 0, j 1,..., n Donde x es el vector solución, f ( x ) es la función objetivo, g i ( x) son las p restricciones de desigualdad y hi ( x ) es el conjunto de restricciones de igualdad. En otras palabras, se debe determinar el vector de parámetros x que haga que la función objetivo regrese el mejor valor mínimo posible, pero siempre cumpliendo con las restricciones de g y h . 2.2 Problemas de optimización combinatorios. Los problemas de optimización se clasifican en dos categorías. La primera involucra variables de tipo continuo y la solución del problema es un conjunto de números reales. En la otra categoría, se trabaja con variables discretas y, de un conjunto finito, se busca determinar algún valor entero, un conjunto, una permutación o un grafo. 7 Una instancia de un problema de optimización es un par ( F , c) , donde F es cualquier conjunto (el dominio de puntos factibles) y c es la función de costo. c: F R (2) Entonces el problema consiste en encontrar f F para el cual c( f ) c ( y ) , para toda y F (3) Como se verá más adelante, no siempre es posible determinar el mejor valor (óptimo global) para determinados problemas debido a su dificultad. No obstante, es frecuente que se pueda acceder a una solución que comparada con un vecindario sea la mejor. A esta solución alternativa se le llama óptimo local, pero no siempre garantizan una buena calidad (fig. 1). De manera formal se puede expresar de la siguiente forma: Dada una instancia de un problema optimización y un vecindario N , una solución factible f F es llamada óptimo local con respecto a N si: c( f ) c ( g ) Para toda g N ( f ) (4) Los óptimos locales son una solución alternativa cuando no es posible encontrar el óptimo global, siempre y cuando el umbral de error aceptable no sea muy estricto. Pero para algunos métodos representan un obstáculo en su camino a encontrar la mejor solución posible. Figura 1. Ejemplo de maximización donde se muestra que los óptimos locales no garantizan una buena solución. 8 2.3 Dificultad de un problema. Dentro del conjunto de problemas de optimización muchos son clasificados como más difíciles que otros. En la teoría de la computación se define de manera formal lo que hace a un problema computacionalmente difícil. La evaluación del algoritmo, que soluciona el problema, es comparado de manera asintótica con funciones conocidas. Si un problema, en el peor de sus casos, está acotado por una función polinómica; se dice que pertenece a los problemas denominados de clase P (polinómicamente acotado). Los problemas pertenecientes a esta categoría pueden ser solucionados en un tiempo polinomial, por ejemplo, usando búsquedas exhaustivas. En general, pueden ser resueltos en un tiempo O(n k ) para alguna constante k , donde n es el tamaño de la entrada del problema (Cormen, et al. 2001). Por otra parte, están los problemas de la clase NP (no determinista), los cuales, pueden ser resueltos por una máquina de Turing no determinística. Es decir, existe un algoritmo no determinista polinómicamente acotado (Baase, 2002). Se considera que P NP , a la fecha no se ha demostrado que P sea un subconjunto propio de NP . Los problemas NP completos son más difíciles que los NP . Si existiera un algoritmo polinómicamente acotado para un problema NP completo , también habría un algoritmo polinómicamente acotado para todos los problemas NP . Existen una gran variedad de problemas que a simple inspección se consideran sencillos, pero que en realidad son más complejos de lo esperado. Por lo tanto, es importante poder determinar a qué clase pertenece el problema a solucionar. Esta acción, posteriormente, permite decidir que técnica (una heurística o un método exacto de solución) es más apropiada para ser implementada. El concepto de dificultad también puede ser tratado desde otros puntos de vista. Por ejemplo, si solo se considera la solución práctica de un problema (aun cuando pertenezca a la clase P ), se puede afirmar que su dificultad está directamente relacionada con el grado del 9 conocimiento que tengamos del mismo y con la eficiencia de los algoritmos implementados para su solución. Si el algoritmo tarda mucho en encontrar una solución, simplemente se puede decir que el problema está clasificado como difícil. Por ejemplo, si un problema de la clase P tiene un orden de O(n100 ) , se puede considerar intratable. Esto muestra que no todo problema en P es sencillo ya que no siempre se cuenta con un algoritmo con una eficiencia aceptable. El conocimiento que se tenga del problema a resolver es importante. Algunos problemas NP Completos pueden ser tratados aplicando restricciones adicionales en sus entradas. Esta acción, usualmente, no garantiza que el problema deje de ser NP Completo ; pero, algunas veces, es probable que un criterio alterno produzca un problema de clase P (Baase, 2002). Por otra parte, la dificultad de un problema de optimización, en un espacio dado de búsqueda, es la probabilidad de no encontrar una solución al escoger una posición aleatoria en una distribución uniforme (Clerc, 2006). Si la probabilidad de encontrar la solución de un problema, sin hacer ningún trabajo especial y al primer intento, es grande; se trata de un problema sencillo. La definición anterior nos da la posibilidad de contar con un criterio para poder estimar la dificultad de los problemas, y así, tener una herramienta de evaluación de los algoritmos propuestos. Para ello, la dificultad se especifica por la siguiente fórmula: Dificultad ln(1 probabilidad _ de _ error ) (5) Dificultad ln( probabilidad _ de _ éxito ) (6) Lo cual implica que: Resulta obvio que las restricciones pueden jugar un papel importante para reducir la complejidad de un problema. Por ejemplo, si alguna restricción ε es ajustada, es probable que algunos óptimos locales aceptables puedan ser alcanzables. 10 Otra forma de reducir la dificultad de un problema es a través de la modificación del espacio de búsqueda. Solo se debe hacer si existe un grado de flexibilidad en la calidad de los resultados que se esperan encontrar. Las modificaciones a las restricciones (o del espacio de búsqueda) no garantizan la disminución de la dificultad. Puede suceder que la complejidad del problema aumente. Por otro lado, no siempre es posible hacer modificaciones al espacio de búsqueda porque normalmente se necesita un conocimiento del problema que en la mayoría de las ocasiones no se tiene. 2.4 Problemas de asignación. 2.4.1 Asignación generalizada o bidimensional Los problemas de asignación abordan el problema de cómo asignar n elementos a otros n distintos (Sahu, Tapadar, 2007). Una manera de ver este problema es como un mapeo biyectivo entre dos conjuntos finitos U y V de n elementos. Al identificar los conjuntos U y V se puede representar la asignación por medio de una permutación. 1 φ (1) 2 φ(2) … 3 … φ(n) (7) De esta manera cada elemento de V es mapeado por ( x ) , donde x U . La permutación φ corresponde a la una matriz de permutación X ( X ij ) , donde: 1 xij 0 1, si j (i ) (8) Cada renglón y columna tienen una sumatoria que resulta igual a uno. A esto se le llaman restricciones de asignación y se pueden representar como sigue: 11 (9) n x ij 1, i 1, 2,..., n ij 1, j 1, 2,..., n j 1 n x i 1 xij 0,1 i, j 1, 2,...n Otra manera de representar el problema es por medio de un grafo bipartito (fig. 2). Este es un grafo G donde sus vértices quedan definidos en dos subconjuntos disjuntos con idéntica cardinalidad. Cada arista asocia a dos elementos de cada subconjunto de manera biyectiva. G (V , A) (10) Donde: V Son los vértices de G . Además, V v1 v2 y v1 v2 Nulo A Son las aristas de G siempre de la forma a , b A a v1 y b v2 Figura 2. Grafo bipartita para la asignación bidimensional Sea S n el conjunto de todas las permutaciones tales que φ ∈ S n . Si, a su vez, se tiene asociada una matriz de costos nxn definida como C (cij ) , donde cij define el costo de asignar i con j , entonces el problema consiste en encontrar en S n la permutación φ que 12 minimice el costo total (Sahu, Tapadar, 2007). Este es un problema de optimización combinatoria y está formulado como: (11) n min Ci ( i ) Sn i 1 El espacio de búsqueda para encontrar es de n ! elementos. Esto implica que existe un número muy grande de asignaciones para valores de n incluso pequeños. Sin embargo, este problema se ha solucionado con métodos exactos como el método húngaro. 2.4.2 Problemas multidimensionales. Los problemas de asignación multidimensionales fueron introducidos por primera vez por Pierskalla en 1967 como una extensión del clásico problema de asignación bidimensional (M. Aiex, et al 2005). Para el caso de la asignación 3-dimensional dos modelos han sido investigados: el problema de la asignación axial 3-dimensional y el problema de la asignación 3-dimensional planar. El problema de asignación axial 3-dimensional se puede representar de varias formas. Por ejemplo, como un problema bilineal entero. n min Y , Z X n n (12) n c ijk i 1 j 1 yij zik k 1 Donde: C es la matriz de costos, Y , Z son las matrices de permutaciones y X n es el conjunto de todas las matrices de n n . Este problema también se puede definir como sigue: dado un grafo tripartito completo K n , n , n ( I J K , ( I J ) ( I K ) ( J K )) , donde I , J , K son conjuntos disjuntos de tamaño n , y una matriz de costos Cijk para cada triángulo (i, j , k ) I J K . El problema de asignación axial 3-dimensional consiste en encontrar un subconjunto A de n triángulos (fig. 13 3), A I J K de tal manera que cada elemento de I J K ocurra en exactamente un triángulo de A , y el costo C ( A) de los triángulos seleccionados sea un mínimo (Crama y Spieksma, 1992). Figura 3. Selección de n triángulos El problema también puede ser descrito como un problema lineal entero (Spieksma, 2000). Dados 3 conjuntos de tamaño n ( A1 , A2 y A3 ) para cada par de tripleta en A1 A2 A3 un número es conocido ya sea un costo o una ganancia. El problema consiste en encontrar n tripletas tales que cada elemento en A1 A2 A3 sea exactamente una tripleta. Por lo tanto, las n tripletas requeridas maximizan o minimizan el costo total. Para el caso de la minimización se tiene que las restricciones de asignación son las siguientes: n m in n i 1 j 1 (13) n C ijk X i jk k 1 Sujeto a: n n X i 1 j 1 ijk 1 , para k 1,..., n 14 n n X 1 , para j 1,..., n ijk i 1 k 1 n n X ijk 1 , para i 1,..., n j 1 k 1 X ijk 0,1 , para i, j, k 1,..., n Si se alinean las n tripletas seleccionadas, se obtienen tres permutaciones de 1,2,...,n (Huang y Lim, 2006). Sin embargo, ya que el orden de las permutaciones no es relevante, la primera se puede dejar fija sustituyéndola por un índice i. De esta manera el problema se puede redefinir de la siguiente forma (Burkard, et al. 2009): Sean n 3 coeficientes de costo dados de Cijk (i, j , k 1, 2,..., n ) . El problema ahora consiste en encontrar dos permutaciones y tales que: (14) n min , Sn C i ( i ) ( i ) i 1 Donde: S n es el conjunto de todas las permutaciones de los enteros 1,2,.., n. Dado que las permutaciones a ser seleccionadas pueden ser escogidas de manera arbitraría, el problema de asignación axial 3-dimensional tiene (n !)2 soluciones factibles. El problema es NP-duro (Karp, 1972). No existe un algoritmo que pueda resolver el problema en un tiempo polinomial a menos que P = NP. Incluso cuando Cijk solo puede tomar dos valores, el problema permanece NP-duro. El problema de asignación axial 3-dimensional presenta algunos casos especiales (Crama, Spieksma, 1992). El primero es donde la distancia (verificando las desigualdades del triángulo) se define como un conjunto de puntos, y el costo del triángulo es la suma de las longitudes de sus lados, pero si la suma de las longitudes son sus lados más cortos, entonces se trata del problema S . 15 Yves Crama y Frits C.R. Spieksma (1992) demostraron que incluso estos dos casos especiales siguen siendo NP-duros. 16 Capítulo III Optimización por enjambre de partículas 3.1 Inteligencia Artificial La inteligencia artificial (IA) tiene sus orígenes en muchas disciplinas. Algunas de las más importantes son la filosofía, las matemáticas, la psicología, neurociencias y, por supuesto, las ciencias computacionales. Junto con otras, cada una de estas han hecho importantes aportaciones (Russell y Norving, 2006). La filosofía ha intentado dar explicaciones a muchas interrogantes acerca del pensamiento humano y el razonamiento desde épocas muy remotas. Para ello, ha desarrollado modelos que buscan esclarecer los fenómenos mentales como el conocimiento. La IA toma estos modelos y los formaliza a través de las matemáticas con la intención de aplicarlo en problemas específicos. Las matemáticas han aportado a la inteligencia artificial formalidad a través de su notación. Además, la mayoría de las técnicas de la IA utilizan muchos conceptos de la lógica, la probabilidad, la estadística y otros campos de las matemáticas. Los problemas que trata la inteligencia artificial abarcan un espectro muy amplio, y están clasificados en tareas de la vida diaria, tareas formales y tareas de los expertos (Rich y Knight, 1994). En general, la IA aborda problemas poco estructurados donde no se conoce el mejor método para resolverlos. Algunos ejemplos son la visión, el habla, el sentido común, juegos, demostración de teoremas, optimización, diagnósticos y los sistemas de control. Dentro de las ramas de la inteligencia artificial se encuentra la denominada soft-computing, la cual, es una colección de técnicas y herramientas computacionales que comparten disciplinas muy relacionadas (Konar, 1999). En concreto, es un conjunto de metodologías que tienen como objetivo explotar la tolerancia a la imprecisión y la incertidumbre para lograr soluciones manejables, más robustas, y con un costo bajo (Azvine, et al, 2000). En esta 17 categoría de técnicas se encuentran la lógica difusa, el razonamiento probabilístico, los modelos conexionistas y los algoritmos evolutivos. El paradigma principal en la IA, para la resolución de problemas de optimización, es la búsqueda heurística. Este es un método muy general que se puede aplicar a muchos tipos de problemas difíciles con el fin de encontrar una solución en un tiempo prudente, pero sin garantizar que esta sea la solución óptima (global). Su objetivo es que casi siempre se encuentre una buena solución. Existen muchos algoritmos de búsqueda heurísticos (incluyendo a PSO). Estos han sido implementados para resolver una diversidad grande de problemas de optimización continuos y discretos. A continuación se presenta una breve descripción de algunas técnicas heurísticas ampliamente utilizadas. 3.1.1. Escalador de colinas. El agente, a partir de su estado actual en un espacio de búsqueda, examina su vecindario y determina la dirección a tomar. Este paso lo repite N veces o hasta que ya no puede encontrar mejoría. El algoritmo utiliza una función de evaluación para determinar si una posición es mejor que otra. Su desventaja se debe a que el agente puede quedar atrapado en estados que no son el objetivo. Los lugares que limitan su movimiento son los máximos locales y mesetas (fig. 4). Una forma de solucionar este problema es reiniciar el ascenso desde puntos aleatorios varias veces, pero conservando el mejor valor encontrado hasta cierto instante. Figura 4. Estados del espacio de búsqueda que atrapan al agente escalador de colinas 18 3.1.2 Recocido simulado. Es una variante del escalador de colinas, pero el movimiento del agente es muy intenso (contiene mucha energía) en las primeras etapas de la búsqueda con el objetivo de evitar caer en algún óptimo local. Conforme avanza la ejecución del algoritmo, se reduce la energía hasta alcanzar un estado final de mínima energía. La idea principal es que un resultado parcial malo no sea ignorado del todo. Puede convertirse en el estado actual con una probabilidad p ' . p ' e E / T , donde T es la temperatura, E es la energía del sistema y es la (15) diferencia entre el estado actual y el nuevo valor calculado. La velocidad con la que se enfría el sistema a lo largo del proceso se denomina programa de enfriamiento (Rich y Knight, 1994) y afecta notablemente la calidad de las soluciones encontradas. 3.1.3 Búsqueda Tabú. Se basa en la utilización de estructuras de memoria flexibles (para explorar un conjunto de estados factible) junto con criterios de aspiración y restricciones estratégicas (Ríos Insua, et al. 2009). Este método admite movimientos potencialmente malos y utiliza una lista donde guarda temporalmente movimientos realizados marcados como prohibidos. El objetivo de la lista es no caer en espacios repetidos. Sin embargo, si algún elemento de la lista supera los criterios de aspiración, es aceptado. Esto permite que movimientos potencialmente buenos (de la lista) no queden bloqueados del todo. El algoritmo termina cuando un número de iteraciones se cumple o cuando un umbral específico es alcanzado. 3.1.4 Los algoritmos genéticos. Los algoritmos genéticos son métodos de búsqueda basados en la mecánica de la selección natural y la transferencia de material genético (Goldberg, 2006). Estos algoritmos operan sobre poblaciones donde en cada generación nuevos individuos (cromosomas) son generados a 19 partir de una serie de operadores estocásticos (operadores genéticos). Los individuos representan a las soluciones potenciales del problema a resolver y pueden codificarse como cadenas de bits, números reales o vectores de números enteros. Los algoritmos genéticos consisten básicamente de cuatro etapas (Tim Jones, 2005). El primer paso es la inicialización de los individuos de manera aleatoria. Después, se obtiene la aptitud de cada uno de ellos con base en la función de evaluación. Posteriormente, se selecciona un conjunto de individuos a ser recombinados. La selección, entre otras formas, puede realizarse por el método de la ruleta (basado en la proporción de la aptitud con respecto a la de los demás) o por torneo (eliminación directa entre dos candidatos). Por último, el algoritmo, a partir de la recombinación de los individuos seleccionados, genera nuevos cromosomas utilizando los operadores de cruce y mutación. El operador de cruce toma dos cromosomas y selecciona en ellos un punto de manera aleatoria y, a partir de ese lugar, intercambia las partes de los individuos. Por otra parte, la mutación se utiliza para generar material genético nuevo con el objetivo de evitar que el algoritmo se estanque en algún óptimo local. Este proceso, regularmente, se efectúa con una probabilidad pequeña. El proceso consiste en seleccionar un punto aleatorio dentro del cromosoma y cambiar su valor. El algoritmo termina después de cierto número de iteraciones o por algún otro criterio de parada relacionado con la aptitud. 3.1.5 Inteligencia colectiva. Algunas técnicas heurísticas están basadas en la inteligencia colectiva. Este paradigma se fundamenta en el comportamiento colectivo de sistemas descentralizados y auto-organizados. Normalmente, consisten de una población de agentes que interactúan entre sí en un espacio de búsqueda. Comúnmente, la interacción no es dictada por un control centralizado, sino que cada individuo de la población sigue reglas simples. Este modo de actuar, combinado con un 20 número de iteraciones, genera en la población un comportamiento más complejo. Aun cuando el trabajo es colectivo, cada elemento de la población es considerado una solución potencial. Un ejemplo de estas técnicas es la optimización por colonia de hormigas (ACO). Esta heurística está inspirada en el comportamiento que siguen las hormigas cuando buscan alimento a partir de su hormiguero. Las hormigas dejan un rastro temporal de feromonas en su camino. Entre más hormigas sigan el rastro, la intensidad de este aumenta y, entre más intenso sea, tiene más probabilidades de que otras hormigas lo sigan. Debido a la volatilidad de la feromona, los caminos cortos tienen a estabilizarse mientras que los largos se vuelven débiles y tienden a desaparecer. Así, la solución es la ruta más corta encontrada al final del algoritmo. 3.2 Optimización por enjambre de partículas (PSO). Dentro de las heurísticas de la inteligencia colectiva se encuentra la optimización por enjambre de partículas. Esta es en una técnica evolutiva que fue propuesta por Kennedy y Eberhard (1995). Este método fue descubierto a través de un modelo social simplificado y está inspirado en el comportamiento social de organismos como los bancos de peces o bandadas de aves. Se ha demostrado que PSO es una técnica muy eficiente para resolver problemas de optimización de tipo continuo. Particularmente, PSO es un método que genera mejores resultados para problemas catalogados como difíciles. Sin embargo, se ha observado que su desempeño en problemas lineales no es muy bueno. Una aplicación de PSO, que ha tenido gran éxito, es el entrenamiento de redes neuronales. Prácticamente cualquier modelo conexionista puede ser entrenado por un algoritmo basado en PSO. Una ventaja que esta técnica tiene con respecto a otras se debe a su nula necesidad de requerir el gradiente de la función de activación. Una solución potencial es representada en PSO por un vector llamado partícula, individuo, elemento, agente o simplemente solución. Cada una de estas partículas i tiene la misma dimensión n y se representan de la siguiente manera: 21 X ( i ) ( x ( i ,1 ) , x ( i , 2 ) , .. ., x ( i , n ) ) (16) Las partículas, sobre el espacio de búsqueda n-dimensional, “vuelan” tratando de encontrar una solución óptima. Para hacer esto, cada individuo ajusta su posición de acuerdo a una combinación lineal de su inercia, su propia experiencia y del conocimiento del enjambre. Cada agente almacena en una memoria la mejor posición encontrada (visitada) hasta el instante actual t . La experiencia de la partícula se denota como: P ( i ) ( p ( i ,1 ) , p ( i , 2 ) , ..., p ( i , n ) ) (17) El conocimiento del enjambre es el conjunto de memorias de cada partícula. A diferencia de los algoritmos genéticos, en PSO no existe la competencia entre individuos. Por lo tanto, la interacción entre las partículas, para obtener un beneficio, es la norma. Para hacer esto, cada partícula pone a disposición de los demás su memoria de conocimiento. La asignación de informantes (vecindario) es una forma de compartir la experiencia. Cada partícula recibe información de k agentes seleccionados de forma aleatoria en cada iteración del algoritmo. Después, la partícula determina entre sus informantes aquel que tenga la mejor aptitud previa. Posteriormente, lo selecciona para que sea parte del proceso de actualización de su posición. Normalmente, el valor de k es pequeño (método lbest), sin embargo, puede ser tan grande como el tamaño del enjambre (método gbest). Este último criterio hace que las partículas tiendan hacia la mejor partícula encontrada hasta algún instante t . Las características del problema a solucionar determinan cual de los dos métodos es más adecuado para su implementación. La mejor partícula del vecindario se representa por: G ( i ) ( g ( i ,1 ) , g ( i , 2 ) , ..., g ( i , n ) ) (18) Al igual que en otros algoritmo de tipo evolutivo, PSO necesita de una función de evaluación (también llamada función de aptitud). Esta permite determinar la calidad de las 22 soluciones. Su importancia radica en que es la única forma de poder evaluar la posición de cada elemento. Cada coordenada (elemento) de X de cada partícula tiene una velocidad o razón de cambio V , d 1, 2,..., n . V ( i ) ( v ( i ,1 ) , v ( i , 2 ) , .. . , v ( i , n ) ) (19) Para realizar un desplazamiento, la partícula determina la velocidad considerando su propia inercia W (busca evitar la convergencia prematura), su memoria de conocimiento y su confianza en el enjambre, para después, sumarla a la posición actual. El grado de confianza lo determinan los operadores aleatorios r1 y r2 (en el rango 0-1) junto con los coeficientes de confianza c1 y c2 . Estos últimos, también llamados constantes de aceleración, son los términos que tiran a cada partícula hacia las posiciones P y G (Eberhart y Shi, 2001). En otras palabras, las partículas hacen un movimiento hacia un punto intermedio tomando en cuenta la mejor posición previa, el mejor informante y un punto accesible desde la posición actual (fig. 5). El ajuste de la posición de las partículas es conceptualmente similar a la operación de cruce usado por los algoritmos genéticos (Kennedy, 1996). Las ecuaciones siguientes ajustan la velocidad y posición de cada partícula: V i t 1 w t V i t c1 r1t ( Pi X it ) c 2 r2t ( G i X it ) X t 1 i X t i V i t 1 Donde: Vi t 1 , Velocidad ajustada W t , Inercia del propio movimiento c1 Coeficiente de confianza en la experiencia (20) (21) 23 c2 Coeficiente de confianza en la experiencia del grupo Pi Mejor posición previa de i X it Posición actual de i Gi Mejor posición previa encontrada por el grupo r1t y r2t Operadores aleatorios entre 0 y 1. X it 1 Posición de la partícula i después del ajuste. Figura 5. Modificación de la posición de la partícula i . Debido a que en el proceso de actualización de la velocidad están inmiscuidos operadores aleatorios, el método de modificación de la posición de las partículas se puede considerar a fin de cuentas un paso estocástico, pero heurístico. En términos generales, PSO se puede describir en tres pasos. El primero es evaluar cada elemento para determinar la calidad de la posición actual. Esto permite que se puedan encontrar la mejor y las mejores partículas. Después, se deben realizar los ajustes necesarios de las mejores posiciones previas. Por último, se determinan los nuevos desplazamientos para cada partícula con la información ajustada. Por analogía, estos movimientos no son más que una forma de tratar de imitar a otros individuos. 24 Para detener el proceso se necesita que un criterio de parada se cumpla. Este puede ser determinado por un número fijo de ciclos, opcionalmente, combinado con un umbral de error aceptable. Al terminar la ejecución del algoritmo, la solución que reporta el método es la mejor posición previa encontrada por alguna partícula l. De manera más detallada, el método de PSO se describe como sigue: a. Inicializar la población. La posición de cada una de las partículas es determinada de manera aleatoria. b. La mejor posición previa es igualada a la posición actual. c. Cada posición es evaluada en la función de aptitud para determinar la calidad de la solución. d. Se compara la aptitud de la posición actual con la mejor previa. e. Asignar informantes (vecindario) de tamaño k a la partícula. f. Determinar la mejor partícula del vecindario. g. Ajustar la velocidad. h. Ajustar la posición. i. Verificar si se cumple el criterio de parada. j. Si no se cumple, regresar al paso e. La versión original de PSO presentaba algunas desventajas. Si la mejor solución está estancada en algún óptimo local, todas las partículas tenderán rápidamente a concentrarse en ese punto (Afsahi, 2011). Otra importante desventaja era su poco control para tener un balance entre la exploración y la explotación. Para contrarrestar estos problemas, se utiliza el coeficiente de inercia W (Abdel-Kader, 2011). 3.3 PSO aplicado en problemas discretos. Si se considera la definición clásica de PSO, se pueden apreciar características de este método que lo hacen una técnica poco apropiada para resolver problemas discretos. Los conceptos que la integran están pensados para espacios continuos donde la velocidad de la partícula queda determinada por una combinación lineal. 25 Aun así, muchos investigadores (incluyendo a Kennedy y Eberhart) han desarrollado versiones de esta heurística con el objetivo de aplicarla a los problemas discretos. Sin embargo, no existe un algoritmo de optimización por enjambre de partículas que pueda ser aplicado a todos los problemas de tipo discreto. Los algoritmos propuestos contienen características muy particulares del problema a tratar o del ámbito a solucionar como muestran Langeveld y Engelbrecht (2011) en el algoritmo genérico de optimización por enjambre de partículas basado en conjuntos. En la búsqueda por encontrar un método más completo para aplicar PSO en cualquier problema combinatorio, los enfoques utilizados se pueden clasificar en cuatro (Wein-Neng, et al. 2010): a. Basados en operadores de intercambio. El algoritmo define la posición de la partícula como una permutación de números y la velocidad como un conjunto de intercambios. b. Transformación del espacio. La posición es definida como un vector real y una técnica de transformación del espacio es usada para convertir la posición en su correspondiente solución. c. Matrices difusas. Estos métodos definen a la posición y a la velocidad como matrices difusas. Se necesita un operador que, en el dominio discreto, decodifique la matriz difusa en una solución posible. d. Algoritmos híbridos. Se trata de cualquier enfoque que utilice una búsqueda local para buscar mejorar la solución. Esta estrategia, llamada hibridación del método, se aplica en alguna etapa del algoritmo principal y, en general, pretende mejorar la solución encontrada hasta algún instante t Se observa en la literatura que la mayoría de los esfuerzos hechos al emplear PSO en problemas no continuos están acompañados de búsquedas locales. 26 Los operadores aritméticos, usados en las ecuaciones de velocidad y posición (incluyendo la suma, resta y multiplicación), deben ser redefinidos (Jin Qin, et al. 2011) para poder solucionar problemas discretos complejos sobre espacios combinatorios. Esta redefinición debe tener como objetivo encontrarles un significado práctico en el ámbito del problema a solucionar. Los siguientes elementos son necesarios para implementar PSO en un problema discreto (Clerc, 2006): a) Un espacio de búsqueda H . b) Una forma de representar las posiciones x H . c) Una función f definida en el espacio de búsqueda H tal que f ( x) c, c C . d) Una relación de orden c, ' c . e) Una definición de distancia para x, ' x . f) La velocidad de la partícula. g) Resta (posición, posición) velocidad. h) Multiplicación externa (número real, velocidad) velocidad. i) Suma (Velocidad, velocidad) Velocidad. j) Desplazamiento (posición, velocidad) posición. Esto se debe a que todos estos elementos están integrados en las ecuaciones de velocidad y movimiento. Su redefinición, generalmente, es lo que ocasiona una nueva interpretación de los conceptos de velocidad y movimiento. 3.4 Implementación de PSO para algunos problemas discretos. El primer intento, para extender PSO para problemas discretos, es el algoritmo binario de PSO (Wei-Neg, et al. 2010) propuesto por Kennedy y Eberhart. Está basado en un esquema de código binario y muchas variantes surgieron tomándolo como referencia. Sin embargo, no se ha encontrado un algoritmo genérico y, normalmente, se considera un método útil solo para ciertos problemas que puedan representarse con las estructuras que maneja el método. 27 Otro ejemplo, del uso de PSO en problemas discretos, es el Algoritmo PSO híbrido multicriterio con comunicaciones para la optimización combinatoria (Lakshmi, 2010). Este algoritmo utiliza el concepto de múltiples enjambres; pero el tamaño de los cúmulos propuestos, a diferencia de otros algoritmos, es dinámico y opera con un tamaño pequeño. El objetivo principal de este algoritmo es la optimización de problemas multi-objetivos. Los autores señalan que este algoritmo, comparado con otros, es muy competitivo. Se ha aplicado PSO con redes bayesianas para la selección de atributos en la minería de datos (Correa, et al. 2007). Este algoritmo también utiliza variables discretas, pero las poblaciones que utiliza tienen partículas de tamaño variable. Esto hace que cada solución tenga un número constante de atributos a través de las iteraciones. Por otra parte, el concepto de velocidad es redefinido como una probabilidad. Es decir, hace que la velocidad sea como un vecindario proporcional para después estimar nuevas posiciones. La desventaja, que este algoritmo presenta, es que para que tenga un buen desempeño, el número de atributos debe ser pequeño. En un ámbito parecido, se ha implementado PSO en conjunto con operadores genéticos para la agrupación de documentos (Premalatha y Natarajan, 2009). Si las partículas tienden a estancarse en un óptimo local, se agrega la reproducción al procedimiento utilizando los operadores de cruce y mutación definidos en los algoritmos genéticos. Esto permite una convergencia más rápida hacia soluciones de mejor calidad. PSO también ha sido adaptado para solucionar el problema de planificación flexible trabajo-tienda (Jun-qing Li, et al. 2009). De nuevo fue necesario incorporar una técnica auxiliar para hacer el algoritmo híbrido. En este caso la técnica usada fue la búsqueda tabú. En general, se propone una representación de las partículas a través de cromosomas. Además, los operadores clásicos de PSO son adaptados para utilizar funciones de cruzamiento y mutación similares a los algoritmos genéticos. En cada generación o iteración, se le aplica la búsqueda tabú a la mejor solución encontrada hasta ese momento con el objetivo de mejorarla. El algoritmo es competitivo comparado con los algoritmos genéticos implementados para 28 resolver este mismo problema, sin embargo, el tiempo de ejecución es alto y el algoritmo es poco robusto. Un problema al que se recurre frecuentemente para solucionarlo con PSO es el problema del agente viajero (TSP). Uno de estos métodos implementados es el algoritmo de optimización por enjambre de partículas mejorado (Yang y Wang, 2007). Este algoritmo se centra en la utilización de un depresor para evitar la convergencia prematura. Para ello, se apoya en un medidor de diversidad que permite variar el valor del depresor. El algoritmo es competitivo, pero no es superior a otros métodos. Otro enfoque utilizado es el método basado en conjuntos (Wei-Neng, et al. 2010). Primero, este algoritmo busca caracterizar el espacio discreto a través de representaciones basadas en conjuntos. Segundo, Las soluciones candidatas son redefinidas como un conjunto y la velocidad queda representada por un conjunto de posibilidades. Todos los operadores de PSO clásico (como los aritméticos, las reglas de ajuste de la velocidad y posición) son remplazados por operadores de la teoría de conjuntos. Una desventaja que presenta este método es su poca generalización ya que está claramente definido para resolver ciertos problemas combinatorios. El algoritmo genérico de optimización por enjambre de partículas demuestra la viabilidad de usar PSO para resolver problemas basados en conjuntos (Langeveld y Engelbrecht, 2011). Un objetivo particular de este método es encontrar un conjunto de parámetros que, aplicado a los 33 problemas de prueba, generen buenas soluciones. Aunque no se encontró, el algoritmo es lo suficientemente robusto para ser aplicado a cualquier problema que se pueda especificar como un problema basado en conjuntos. Finalmente, se sabe que la implementación en paralelo de algoritmos puede tener varias ventajas como la disminución del tiempo de ejecución. Además, el desarrollo de aplicaciones paralelas ya no está confinado a grandes y costosos equipos (Castro Liera, et al. 2011). Esto hace que exista una mayor tendencia a desarrollar e implementar algoritmos distribuidos de manera directa. 29 3.5. Métodos heurísticos implementados para la solución del 3AP. Muchas técnicas se han empleado para solucionar el problema 3AP. Existen algunas que utilizan la enumeración implícita, pero estas implementaciones, aún en paralelo, han sido incapaces de resolver problemas de tamaño real (Centeno, 2010). Como 3AP es un problema combinatorio, la mayoría de técnicas heurísticas usadas para su solución son aquellas que ya han demostrado ser muy eficientes en la resolución de problemas discretos como la búsqueda tabú, los algoritmos genéticos y la optimización por colonia de hormigas. El uso de algoritmos híbridos es muy común. Se observa en la literatura que los algoritmos implementados, para solucionar 3AP, necesitaron en algún punto utilizar algún proceso auxiliar para mejorar la calidad de sus soluciones. Por ejemplo, la utilización de un algoritmo genético con alguna técnica de búsqueda local. Algunas veces, el proceso auxiliar es utilizado como una inicialización para que, posteriormente, el método principal del algoritmo tome esos valores e inicie su proceso. Ese es el caso del algoritmo S-FANT, el cual, es un método basado en la optimización por colonia de hormigas (Jiang, et al. 2008). El algoritmo consiste en dos fases. En la primera, llamada fase de muestreo, se utiliza un esquema de múltiples reinicios para generar óptimos locales. En la segunda etapa, la feromona es inicializada de acuerdo a la frecuencia de las tripletas que aparecen en esos óptimos locales. Posteriormente, el método estándar de ACO es aplicado para mejorar esas soluciones potenciales. Los algoritmos genéticos también han sido empleados para resolver 3AP, sin embargo, se observa que utilizar solo el algoritmo genético no genera muy buenas soluciones. Se advierte que para implementar un algoritmo genético para 3AP se encuentra difícil implementar de manera conjunta el operador de mutación junto con el de cruzamiento (Gonzalez y Centeno, 2001). Además, para obtener mejores resultados es necesario aumentar el tamaño de la población. González propuso en su algoritmo no utilizar el cruce, pero si la mutación. En este 30 caso, se comprobó que un número elevado de mutaciones es conveniente para obtener mejores resultados. Un método que utiliza un algoritmo genético para solucionar 3AP se puede mejorar implementando una búsqueda local. Por ejemplo, es bien conocido que el Método húngaro puede resolver el problema de asignación 2-dimensional (2AP) de una forma eficiente. Este hecho es utilizado en el algoritmo genético híbrido (Huang y Lim 2006). La idea principal de este método es remplazar el operador de mutación por una búsqueda local utilizando el método húngaro. Para hacer esto, es necesario hacer una proyección de 3D a 2D. Es decir, la solución del problema 3AP consiste de dos permutaciones y mientras que 2AP consiste solamente de una; pero si una permutación (del caso 3AP) se fija, entonces la optimización de la segunda permutación se convierte en un problema 2AP. Esto es equivalente a construir un grafo bipartita a partir de uno tripartita. Dada una solución inicial para 3AP ( , ), entonces: Sea dij Ci , (i ), j entonces i, j 1, 2,.., n se tiene que: n min , Sn n C i ( i ) ( i ) i 1 (22) min d i , ( i ) S n i 1 Usando la misma idea, se pueden definir otras dos formas de hacer la proyección: Sea di , j Ci , j , ( i ) , i, j 1, 2,.., n (23) Sea di , j C j , ( i ), ( i ) , i, j 1, 2,.., n (24) El método anterior también utiliza una técnica de múltiples reinicios que encuentra buenos resultados en un tiempo muy corto. Sin Embargo, una vez que localiza un óptimo local ya no le es posible mejorarlo. Aún si se le da más tiempo al algoritmo, este no puede mejorar la solución. 31 Por otra parte, GRASP es una meta-heurística (heurística guiada por otra heurística) de múltiples reinicios para problemas combinatorios. Usualmente consiste de un procedimiento ávido de construcción y de una búsqueda local. GRASP con redefinición de vínculos fue implementado para solucionar el problema 3AP. La idea principal del método es explorar trayectorias que conectan soluciones de alta calidad. En general es una meta-heurística que genera buenos resultados, pero la eficiencia no es muy buena al ser comparada con otros métodos. Una ventaja de este algoritmo es que puede ser implementado en paralelo para reducir los tiempos de ejecución. También se ha recurrido a la implementación de algoritmos basados en la búsqueda tabú. Tal es el caso de la búsqueda de soluciones para el 3AP-Axial usando búsqueda por entornos (Centeno, 2010). Esta implementación se basa en los elementos básicos de la búsqueda Tabú más algunas características propias. El algoritmo utiliza una memoria a corto plazo que le permite tener en cuenta los atributos recién cambiados (pasado reciente). Con esta memoria, junto con otros atributos, se busca evitar revisitar soluciones. Además, cuenta con un criterio de aspiración que permite ciertos movimientos aun cuando tengan estatus tabú. Este algoritmo también está hibridizado a través de una heurística voraz que inicializa las soluciones al inicio del método. Pseudo-código del algoritmo de búsqueda tabú adaptado para solucionar 3AP: 1. Leer archivo de costo. 2. Leer dimensión de la vecindad. 3. Generar la solución inicial x . 4. Repetir a. Generar candidatas de la solución anterior b. Seleccionar x ' candidatas de x / f ( x ') f ( x*); c. x* candidatas ( x ) HM ; d. Actualizar HM 5. Hasta regresar a la solución inicial 6. Fin. 32 Capítulo IV Implementación, experimentos y resultados Para adaptar un algoritmo basado en PSO que solucione 3AP se necesita de un mecanismo que permita transformar los componentes de PSO continuo al dominio discreto. En el capítulo III están descritos los operadores para implementar un algoritmo de tipo discreto usando PSO. Sin embargo, no se ha tratado el método para llevar a cabo dicha implementación, lo cual, es uno de los principales problemas a resolver en el presente trabajo. La generalización de un proceso para implementar PSO en el dominio discreto no es sencilla. Comparado con otras técnicas está limitada y se acentúa más en los problemas combinatorios. Uno de muchos enfoques utilizados para hacer esta adaptación es el análisis de forma (forma analysis). Este planteamiento se define como sigue (Gong y Tuson, 2007): Dado un operador de plantilla, cualquier descripción adecuada del dominio de algún problema tratado da lugar a un operador concreto, cuyos comportamientos y rendimiento están relacionados a los supuestos que se hicieron para describir el espacio de búsqueda. Los componentes de esta definición puede observarse en la figura 6. Base definida para el dominio Dominio 1 Operador Descripción 1 Operador 1 Descripción 2 Operador 2 plantilla Dominio 2 Descripción 1 Operador 3 Descripción 2 Operador 4 Figura 6. Componentes del análisis de forma 33 En otras palabras, este enfoque, a partir del conocimiento que se tiene del problema y de relaciones de equivalencia, permite derivar los operadores que permitan implementar PSO al dominio del problema 3AP. 4.1 Redefinición de los operadores de PSO al espacio discreto. 4.1.1. Espacio de búsqueda. El espacio de búsqueda del problema 3AP está conformador por (n !)2 de posibles soluciones y a este conjunto se le denomina S n . Cada elemento de S n puede transformarse en otra solución dentro de S n aplicándole un operador un número determinado de veces. 4.1.2. Representación de la solución. Cada partícula consta de dos conjuntos , Sn definidas de la siguiente manera: p (0), p (1),..., p( n 1) y q (0), q (1),..., q (n 1) (25) Donde el dominio de y es 0,..n 1 y el rango son los valores comprendidos entre 1 y n . Además, se define la siguiente restricción de la posición: p ( m ), p (l ) donde m l , p ( m ) p (l ) y (26) q ( m), q (l ) donde m l , q ( m ) q (l ) Lo cual implica que ningún elemento de o puede ser colocado en dos lugares diferentes al mismo tiempo. Esta restricción limita a la partícula a pertenecer solo a S n y es equivalente a la restricción del método clásico donde si una partícula abandona el espacio de búsqueda, se le ajusta su posición para que permanezca dentro de los límites definidos. 34 4.1.3. Función de aptitud. La función de aptitud f es aquella que permite evaluar una solución. 3AP se puede representar de diferentes formas, pero el espacio de búsqueda, ya definido, permite trabajar con la representación de 3AP definida en (14). 4.1.4. Relación de orden En el contexto de PSO, se entiende por relación de orden a todo operador que aplicado a un par de partículas l y m permita determinar cuál de las dos es mejor o si son equivalentes. La relación de orden de dos partículas l y m para 3AP se define de la siguiente manera: l es mejor que m si f ( X l ) f ( X m ) (27) m es mejor que l si f ( X l ) f ( X m ) l es equivalente a m si f ( X l ) f ( X m ) Sin embargo, que f ( X l ) f ( X m ) no implica que siempre X l X m , es decir, que su distancia sea cero. 4.1.5. Distancia entre dos partículas. La redefinición de los operadores de PSO debe incluir la distancia en el espacio de búsqueda. Esta debe ser una buena medida de la diferencia de dos puntos en el espacio de búsqueda (Jin Qin, 2011). Redefinición (distancia). La distancia comprendida entre dos partículas, es el resultado de hacer una comparación de cada una de las componentes que integran a y para determinar el número de elementos que son diferentes. dist ( X l , X m ) d1 para (28) 35 dist ( X l , X m ) d 2 para Por ejemplo, dadas dos partículas l y m su distancia en la componente es: X l 1, 2,3, 4,5 , X m 5, 4,3, 2,1 (29) dist ( X l , X m ) 4 Esto es equivalente a decir que la distancia es el número de veces que se debe aplicar un operador a una de las dos partículas para que sean iguales. La distancia, entonces, no es la diferencia aritmética de los resultados arrojados por la función de aptitud al evaluar l y m . Sin embargo, es evidente que entre más cercanos estén l y m , la probabilidad de que los valores resultantes de la función de aptitud sean parecidos es más alta. En el caso del problema 3AP, se observa que las variaciones en los valores de y (por mínimas que estas sean) pueden provocar un resultado muy diferente con respecto al valor que tenía antes de la variación, incluso, si la distancia entre el vector inicial y el perturbado es uno. No obstante, en 3AP las tripletas que contienen un valor considerado como un óptimo local regularmente contienen información perteneciente a un óptimo global (He Jiang, et al. 2008). Por lo tanto, es conveniente informar a las partículas de aquellos casos donde existe un solución potencialmente buena. 4.1.6. Velocidad La velocidad, en la definición clásica, representa la distancia que se debe recorrer por alguna partícula i desde su posición actual X hacia algún punto en S n (Wei-jun Xia y Zhiming Wu, 2006). Este concepto no se puede aplicar a los problemas discretos. La redefinición de la distancia permite trabajar con otro enfoque en la velocidad: la velocidad es cualquier operador que aplicado a X t Sn produce otra posición X t 1 válida en S n . 36 Redefinición (Velocidad). La velocidad es un operador que perturba la distancia de una posición X con respecto a algún otro punto en S n . Es decir, los elementos de X deben ser modificados para que la distancia con respecto a algún punto accesible, Pi o Gi sea pequeña o nula. (dist (Y , X t )) dist (Y , X t 1 ) , donde X t , X t 1 , Y S n (30) La perturbación se logra utilizando el enfoque basado en operadores de intercambio descrito en el capítulo III. Para las permutaciones, el operador más utilizado es el cruce también usado en los algoritmos genéticos. Existen una amplia variedad de estos operadores, sin embargo, no existe evidencia de que alguno sea superior a otro (Huang y Lim, 2006) y, además, el problema que se requiere resolver determina cuál de ellos es más apropiado de utilizar. No es deseable que la partícula tienda hacia otro punto de una forma total. La justificación para esto es el gran tamaño de S n . Si la distancia obtenida después de la perturbación es igual a cero, se repite un punto en S n ya explorado por otra partícula. En lugar de eso, es preferible que la partícula quede en algún punto cercano que se pueda evaluar y desde donde se pueda iniciar otro movimiento. Para lograr un acercamiento parcial entre dos puntos es necesario limitar el número de intercambios a realizar. Pero no es conveniente establecer posiciones fijas en el vector como no intercambiables. Esto también provoca que ciertos puntos queden con pocas probabilidades de ser explorados aun cuando sean buenas soluciones potenciales. En vez de ello, el operador de intercambio ( X , Y , p1 ) limita el intercambio de dos elementos de la siguiente manera: Si X ( p1 ) Y ( p1 ) , X ( p1 ) Y ( p1 ) y X ( pos(Y ( p1 ))) X ( p1 ) Siempre que p1 pos(Y ( p1 )) Donde: p1 , pos(Y ( p1 )) Px , Px es el conjunto de todas las posiciones de X . (31) 37 Conforme el valor p 1 tienda a n 1 la probabilidad de intercambio va disminuyendo hasta ser cero cuando p1 lo iguala. Por lo tanto, la probabilidad de intercambio del elemento de X está totalmente sujeta a la posición en X del elemento en Y . Por otra parte, un acercamiento directo (“lineal”) limita el espacio a ser explorado (fig.7). Es preferible realizar un acercamiento al nuevo punto de forma un poco errante (fig.8). Esto se puede obtener haciendo una perturbación de la distancia usando intercambios estocásticos. Esta operación, que trabaja en conjunto con la restricción de intercambio, tiene como objetivo tener varias posiciones de tipo X ' Sn ya evaluadas al final del proceso. Es decir, no solo se evalúa la posición final X t 1 , sino toda una trayectoria válida. Esta es la principal ventaja que este operador tiene con respecto a otros operadores como el cruce parcial (PMX), el cual, no proporcionó la diversidad necesaria para que el algoritmo propuesto convergiera a soluciones buenas. La desventaja es que necesita de un número de intentos de intercambios mayor a n . Las pruebas realizadas muestran que n 3 intentos son suficientes para hacer el cruce estocástico. La evaluación parcial de los puntos de la trayectoria no implica evaluar toda la función de aptitud. Esto incrementaría en demasía el tiempo de ejecución. Para solucionar este problema se evalúa de forma parcial f en y . f parcial ( X , C , ci , j , k , cl , m , n , ci , m , k , cl , j ,n ) ( X aptitud (ci , j , k cl ,m ,n )) (ci , m , k cl , j , n ) (32) Donde: C es la matriz de costos, ci , j , k , cl ,m , n C son los costos antes del intercambio de j y m , ci , m ,k , cl , j , n C son los costos después del intercambio de las posiciones j y m A continuación se describe el operador de velocidad incluyendo el proceso de intercambio de un elemento de X con el operador previamente descrito: ( dist (Y , X )) ( X , Y , p1k ) (33) 38 donde p1k aleatorio ( n ) en el intento k de intercambio y donde k 1, 2,..n 3 Figura 7. Analogía de un movimiento lineal donde se muestra como se puede dejar fuera posiciones prometedoras Figura 8. Analogía de un movimiento errante, el cual, tiene más probabilidades de encontrar mejores posiciones en su trayecto. 4.1.7. Suma Redefinición (Suma de velocidades). La definición clásica lo describe como una suma aritmética de dos números reales cuyo resultado es la velocidad. Esto permite una combinación lineal de un punto accesible, Pi y Gi . Debido a que no es posible realizar una combinación directa en el espacio discreto de los tres componentes que resulte en un número real, la suma se puede redefinir de dos formas. 39 El operador de suma de dos velocidades es la probabilidad de seleccionar a Pi y Gi para perturbar a X t (usando ) y así producir X t 1 S n . Para ello los coeficientes de confianza c2 y c3 se fijan con un valor de uno. Por lo tanto, la probabilidad de la selección de una de las dos componentes está fija en 1 . Un número real aleatorio a 0,1 se genera para ser el 2 selector. X it 1 ( dist ( Pi , X it ) ( dist (Gi , X it ) (34) Debido a que la partícula tiene ajustados sus coeficientes de confianza al mismo nivel, la partícula i “salta” en cada iteración hacia su mejor posición previa ó hacía el mejor informante encontrado en la iteración t . Por otra parte, el operador de suma de dos velocidades es una secuencia de perturbaciones sobre X t (usando ) de tal forma que el resultado final sea X t 1 S n . El resultado de la primera perturbación es Y Sn , es decir, sigue siendo una posición valida en el espacio de búsqueda. La primera perturbación es hecha con respecto a Pi , mientras que la segunda considera a Gi . X it 1 ( dist ( Pi , X it ) ( dist (Gi , X it ) (35) Lo que es equivalente a realizar una composición del operador de la siguiente forma: X it 1 ( dist (Gi , ( dist ( Pi , X t )))) (36) Se observa que en cada iteración t , la partícula tiende a regresar a su mejor posición previa para luego alejarse hacia un informante. Este comportamiento resulta beneficioso para la partícula porque de manera implícita existe una búsqueda local. Cada vez que la partícula se aleja para después regresar, el vecindario de su mejor posición previa es explorado. En consecuencia, es factible que se mejore el valor de la posición previa en algún punto cercano al óptimo local (fig. 9). Este comportamiento también se observa con el operador , pero de 40 forma menos directa y, además, se obtienen resultados más favorables con . Sin embargo, el operador implica más costo computacional debido a que siempre se realizan dos perturbaciones en cada iteración. En ambos operadores está implícito el operador Desplazamiento (posición, velocidad) posición. Cada perturbación sobre X t implica un cambio en su posición. En ambas definiciones w es ignorado debido a que la velocidad es un operador sobre X t . La primera componente de la definición clásica de velocidad no contiene a la posición, entonces, y por analogía, el operador de velocidad no puede aplicarse en el caso discreto en ausencia de X t . Esto es equivalente a decir que la velocidad inicial es igual a cero. Figura 9. Analogía de un movimiento aplicando el operador . 41 4.2 Implementación. 4.2.1 Número aleatorios La heurística de optimización por enjambre de partículas depende ampliamente de procesos estocásticos. Algunos ejemplos donde se requieren son en la inicialización del enjambre y en los operadores r1 y r2 . El algoritmo propuesto necesita de la aleatoriedad en el operador en , y en otros más. Las librerías que comúnmente están incorporadas en los compiladores tanto libres como comerciales no son buenos generadores de números pseudo-aleatorios. Esto se refleja en un pobre rendimiento de los algoritmos que las utilizan. El generador de números pseudo-aleatorios KISS de Marsaglia cumple con todas las pruebas estadísticas estándar que se emplean para garantizar la calidad de los generadores (Marsaglia, 1999). Sin embargo, este presenta una desventaja: tiene un alto consumo de tiempo. Por lo tanto, es necesario implementar un mecanismo que ayude a reducir ese inconveniente cuando el algoritmo principal utilice con mucha frecuencia el generador de Marsaglia. La solución se obtiene con la generación de una matriz de números psudoaleatorios (usando KISS) de un tamaño suficiente para garantizar un comportamiento bueno del método implementado. Las pruebas hechas indican que un tamaño de 3200 ( n 3) es suficiente. La matriz aleatoria se define como: A ( ai , j )3200( n3) (37) Donde: ai , j es el i esimo número aleatorio en su posición j y ai , j 1, 2.., n Para los casos donde no es necesario o se imposibilita el uso de A se utiliza una función alea que utiliza directamente el generador KISS de Marsaglia. na alea ( ARGUMENTO ) KISS (0,1) ( ARGUMENTO )) , donde na 1, 2.., ARGUMENTO (38) 42 4.2.2 Inicialización de las partículas Frecuentemente la condición de la población inicial, hasta cierto punto, afecta la calidad de la solución o la velocidad de convergencia de la población (Jun-qing Li, et al. 2009). Por lo tanto, es de gran ayuda utilizar el conocimiento que se tiene del problema a tratar. Algunas veces, el espacio de búsqueda puede contener varias propiedades que se pueden tomar en cuenta para inicializar las partículas. Para el problema 3AP, no existe alguna característica clara que pueda ayudar a una buena inicialización. Solo se sabe que una característica deseable en el enjambre es que tenga mucha diversidad. Para lograrlo, se debe implementar un método que inicialice las partículas de manera aleatoria con una distribución uniforme. Además, debe cumplir con las restricciones de (26). Existe la alternativa de implementar un método auxiliar, pero no es el objetivo de este proyecto. En lugar de eso, se decidió implementar el algoritmo en paralelo. El procedimiento de inicialización del enjambre ( inienjambre ) toma como parámetro la partícula i a ser inicializada así como a la componente o . Se genera un conjunto de números aleatorios y a cada uno de ellos es asignado a la correspondiente posición de la partícula i . Para la implementación, la partícula es una estructura que contiene los componentes de la posición actual, su memoria de conocimiento e información sobre los informantes. Partícula { y los cuales definen la posición actual de la partícula. aptitud Almacena la aptitud actual p y p los cuales definen la mejor posición previa de la partícula maptitudp Almacena la mejor aptitud previa encontrada inf[ NUMINF ] Arreglo que contiene NUMINF informantes mejorInf Mejor informante del arreglo inf } El algoritmo de inicialización de partículas es el siguiente: 1: Inicializar una lista lineal ( Lista ) de n nodos Donde Lista 1, 2,..n 43 2: rango n // Se determina el rango de números a ser seleccionados 3: Para j 0 hasta n 1 4 na alea ( rango ) 5: Inicializar (i [ j ] Lista[na ]) o ( i [ j ] Lista[na ]) 6: 7: Lista Lista Lista[na] rango rango 1 4.2.3 Aptitud de las partículas. Es necesario calcular la aptitud de cada elemento del enjambre. Esto permite determinar la mejor partícula de la población ( mejorglobal ). Por otra parte, cada Pi se inicializa con la posición inicial ( y ), por lo que la mejor aptitud previa es igual a la aptitud actual. Este proceso solo se ejecuta una vez. La razón se debe a que la actualización de estas variables está implícita en el algoritmo principal. El procedimiento aptitudparticulas se describe como: 1: mejorglobal 0 2: Para i 0 hasta n 1 3: aptitudi f (i , i ) 4: maptitudpi aptitudi 5: ( pi , p i ) (i , i ) 6: Si aptitud i aptitud mejorglobal 7: mejorglobal i 4.2.4. Informantes Los informantes de cada partícula son redefinidos de forma aleatoria en cada iteración t . Pruebas realizadas indican que un número pequeño de informantes es suficiente para retransmitir el rumor en el enjambre. El mejor informante es aquel cuya mejor aptitud previa es mejor que la de los demás. La naturaleza de 3AP hace que un número grande de informantes no sea buena idea. Como se selecciona solo al mejor, muchas partículas con mal desempeño tienen más posibilidades de 44 no ser seleccionadas. Existe la probabilidad de que se ignoren algunas partículas con una pobre aptitud previa aunque sean la antesala a un óptimo local. Esto es un problema porque limita la diversidad (Incluso en PSO clásico es deseable garantizar la diversidad). El método selI selecciona al mejor informante k0 : 1: Para i 0 hasta n 1 2: 3: 4: Para k 0 hasta NUMINF 1 infi [k ] alea ( NUMPARTICULAS ) mejorInfi infi [k0 ] 4.2.5 Método principal 1: Establecer los parámetros del algoritmo ( NUMPARTICULAS , n, NUMINF , NUMCICLOS ) 2: A inicializa _ A 3: C Inicializa _ C ( archivo, n ) // Inicializar la matriz de costos 4: inienjambre () //inicializar las dos componentes y de cada partícula 5: aptitudparticulas 6: Para j 1 hasta NUMCICLOS 7: selI // Estable los informantes 8: Para i 0 hasta NUMPARTICULAS 9: it 1 ( dist ( Pi , it ) ( dist (Gi , it ) // o usar it 1 ( dist (Gi , ( dist ( Pi , t )))) 10: it 1 ( dist ( Pi , it ) ( dist (Gi , it ) // o usar it 1 ( dist (Gi , ( dist ( Pi , t )))) 11: Reportar mejorglobal 4.3 Implementación distribuida La optimización por enjambre de partículas tiene características que lo hacen factible de paralelizar. Una de ellas es el manejo de sub-poblaciones independientes en un conjunto de computadoras interconectadas que trabajan, de manera cooperativa, por medio de protocolos de paso de mensajes (clúster) con alguna topología de migración (Castro Liera, et al. 2011). 45 En cada nodo del clúster, se ejecuta el algoritmo para después intercambiar información en etapas definidas por un periodo migratorio. La información que se intercambia junto con el periodo migratorio son factores que se deben ajustar de forma adecuada para no afectar el rendimiento del algoritmo. Las ventajas de una implementación en paralelo de PSO son el aumento de la diversidad de las soluciones así como una reducción en el tiempo de ejecución. Para implementar un algoritmo distribuido se puede utilizar software libre como PVM (Parallel Virtual Machine) o MPI (Message Passing Interface). Para este proyecto se utiliza PVM. Con este software se puede configurar una máquina paralela virtual compuesta por varios equipos de cómputo. PVM, aprovecha los núcleos de los procesadores más modernos lo que incrementa el poder de procesamiento. En PVM es necesario establecer un nodo maestro. En este lugar se ejecuta el código principal del programa. Este a su vez, engendra los procesos esclavos tanto en el equipo maestro como en los nodos del clúster. Si la topología de migración es centralizada, todos los nodos envían su información al nodo maestro, posteriormente, este envía otra información a los esclavos. Por otra parte, si la topología es anillo, cada nodo envía a otro nodo previamente establecido la información. Al final de todo el proceso, el nodo maestro recibe la información para seguir con el proceso final. Para la implementación de este proyecto se utilizó Fedora 14 que es una distribución basada en el sistema operativo Linux, el cual, es un kernel multitarea muy estable, libre y que permite la instalación de PVM sin dificultad (Apéndice A). En Fedora 14, se puede definir un entorno muy completo de administración del clúster a través de archivos por lotes y comandos. 46 4.3.1 Proceso maestro Las pruebas realizadas indicaron que la topología en anillo no proporciona un buen desempeño al algoritmo. Por lo tanto, el algoritmo propuesto trabaja sobre un entorno centralizado de la siguiente manera: el proceso maestro lanza los procesos esclavos. Si se utiliza la opción de convergencia rápida, se reciben las mejores partículas de todos los nodos cada 1,200 ciclos. En cada migración el proceso envía todas las partículas recibidas a todos los nodos. El siguiente paso es muy similar a la convergencia rápida. La diferencia es el periodo migratorio ( PM ). El proceso del nodo maestro se describe de la siguiente manera. 1: Definir PM , NUMNODOS 2: engendra ( procesos _ esclavos , NUMNODOS ) 3: Para i 0 hasta NUMNODOS 4: enviar _ parametros(nodoi ) 5: si(usar _ convergencia _ rapida ) 6: 7: Para i 0 hasta 10 Para j 0 hasta NUMNODOS 8: ( aptitud , , ) recibe _ cualquier _ nodo 9: aptitud j aptitud 10: j 11: j 12: 13: 14: Para j 0 hasta NUMNODOS Para k 0 hasta NUMNODOS enviar _ al _ nodo (aptitud k , k , k , nodo j ) 15: Para i 0 hasta PM 1 16: 17: Para j 0 hasta NUMNODOS ( aptitud , , ) recibe _ cualquier _ nodo 47 18: aptitud j aptitud 19: j 20: j 21: Para j 0 hasta NUMNODOS Para k 0 hasta NUMNODOS 22: enviar _ al _ nodo (aptitud k , k , k , nodo j ) 23: 24: mejor.aptitud 25: Para j 0 hasta NUMNODOS 26: ( aptitud , , ) recibe _ cualquier _ nodo 27: aptitud j aptitud 28: j 29: j 30: si( aptitud j mejor _ aptitud ) 31: mejor _ aptitud aptitud j 32: mejor _ j 33 mejor _ j 4.3.2 El proceso esclavo Este proceso se encarga de ejecutar el código principal del programa. Modifica la posición y calcula la aptitud de las partículas. Cada cierto periodo, envía la mejor partícula al nodo maestro y se pone en espera para recibir las mejores partículas de los demás nodos. El proceso esclavo se describe de la siguiente manera: 1: Establecer los parámetros del algoritmo ( NUMPARTICULAS , n, NUMINF , NUMCICLOS ) 2: recibe _ parámetros (maestro ) 2: A inicializa _ A 48 3: C Inicializa _ C ( archivo, n ) // Inicializar la matriz de costos 4: inienjambre () //inicializar las dos componentes y de cada partícula 5: aptitudparticulas 6: si(usar _ convergencia _ rápida ) 6: Para j 1 hasta 12000 7: selI // Estable los informantes 8: Para i 1 hasta NUMPARTICULAS 9: it 1 ( dist (Gi , ( dist ( Pi , t )))) 10: it 1 ( dist (Gi , ( dist ( Pi , t )))) 11: si (( j mod1200) 0) 12: enviar _ al _ nodo _ maestro (maptitudpmejorglobal , p mejorglobal , p mejorglobal ) 13: para i 1 hasta NUMNODOS 14 recibe _ de _ maestro (aptitud , , ) 15: si ( aptitud maptitudpmejorglobal ) para k 1 hasta ASIGNACIONES 16: 17: índice alea ( NUMPARTICULAS ) 18: maptitudpíndice aptitud 19: píndice 20: p índice 21: si( maptitudpíndice maptitudpmejorglobal ) 22: mejorglobal índice 23: Para j 1 hasta NUMCICLOS 24: selI // Estable los informantes 25: Para i 0 hasta NUMPARTICULAS 26: it 1 ( dist ( Pi , it ) ( dist (Gi , it ) // o usar it 1 ( dist (Gi , ( dist ( Pi , t )))) 27: it 1 ( dist ( Pi , it ) ( dist (Gi , it ) // o usar it 1 ( dist (Gi , ( dist ( Pi , t )))) 49 28: si (( j mod PM ) 0) ( migraciones _ hechas PM 1) 29: enviar _ al _ nodo _ maestro (maptitudpmejorglobal , p mejorglobal , p mejorglobal ) 30: para i 1 hasta NUMNODOS 31: recibe _ de _ maestro (aptitud , , ) 32: para k 1 hasta ASIGNACIONES 33: índice alea ( NUMPARTICULAS ) 34: maptitudpíndice aptitud 35: píndice 36: p índice 37: si( maptitudpíndice maptitudpmejorglobal ) 38: mejorglobal índice 39: enviar _ al _ maestro (maptitudpmejorglobal , p mejorglobal , p mejorglobal ) Pruebas realizadas indican que es posible alcanzar óptimos locales con 10 migraciones de 12,000 ciclos para n ’s grandes usando el operador . Sin embargo, después de las 10 migraciones se encuentra difícil encontrar mejoras en los resultados. Esto provoca que se aumente el número de ciclos del algoritmo con el objetivo de encontrar mejores aptitudes. Utilizar el operador , después de las 10 migraciones de 1200 ciclos, hace más tardado la ejecución del algoritmo. Por lo tanto, se utiliza el operador en las próximas PM migraciones. 4.4 Resultados experimentales El código está implementado en su mayoría en el lenguaje C (Con algunas funcionalidades de C++ para el manejo de memoria) y está compilado con GCC. Las pruebas fueron hechas en un clúster homogéneo de 15 equipos de cómputo con las características mostradas en la tabla I. 50 Tabla I. Característica de los equipos de cómputo utilizados en las pruebas Característica Marca Microprocesador Memoria RAM Descripción Dell Pentium Core 2 Duo de 2.6 Ghz 2 GB Para probar el algoritmo se utilizaron dos conjuntos de datos estándar. El primero es el conjunto de Balas y Saltzman (B-S) el cual consiste de 60 instancias de prueba. Le corresponden 5 instancias a cada problema de acuerdo al valor de n . Los problemas son n 4, 6,8,10,12,14,16,18, 20, 22, 24, 26 . Los coeficientes de C se generan de manera aleatoria con una distribución uniforme en el intervalo de [0,100]. El segundo conjunto usado es el de Crama y Spieksma (C-S). Este conjunto es generado haciendo una restricción en los coeficientes Ci , j , k d i , j d i , k d j ,k . Consiste de tres tipos de problemas compuestos por tres instancias de n 33 y n 66 . Antes de ejecutar el algoritmo para las pruebas finales, hubo una etapa de refinamiento del algoritmo. Esta concluyó cuando el algoritmo arrojó resultados más consistentes. Finalmente, Los dos conjuntos se probaron con la configuración de parámetros definidos en la Tabla II. El resultado de cada problema del conjunto de Balaz y Saltzman es el promedio de los 5 sub-problemas que lo integran. El algoritmo se ejecutó una sola vez para todos los problemas incluyendo al conjunto de Crama. Para cada experimento se presentan tres tablas. En la primera se muestra de forma independiente el resultado obtenido junto con el tiempo que tomo la ejecución. En la segunda, se hace una comparación con los otros métodos. En la última tabla, se muestra otro criterio para hacer la comparación. Los valores son el resultado de dividir el valor obtenido por cada algoritmo entre el óptimo global. Por lo tanto, si el valor es muy cercano o igual a uno, el resultado es bueno. 51 Tabla II. Descripción de las pruebas implementadas Prueba Partículas Conjunto Nodos 600 B-S 30 1 600 B-S 30 2 600 B-S 30 3 600 B-S 30 4 600 C-S 30 5 600 C-S 30 6 600 C-S 30 7 600 C-S 30 8 Migraciones con 10 cada 120 ciclos 10 cada 1,200 10 cada 1,200 10 cada 1,200 10 cada 120 ciclos 10 cada 1,200 10 cada 1,200 10 cada 1,200 Migraciones con 0 0 10 cada 1,200 ciclos 10 cada 12,000 ciclos 0 0 10 cada 1,200 ciclos 10 cada 12,000 ciclos 4.4.1 Resultados usando el conjunto de Balas y Saltzman. La tabla III muestra los resultados obtenidos al utilizar 10 migraciones cada 120 ciclos utilizando el operador . Se observa en la tabla IV que el algoritmo alcanza el óptimo para n 12 y que, como lo muestra la tabla V, para 14 n 15 el resultado ya es muy aceptable. Tabla III. Resultado de la prueba 1. n Resultado Tiempo (segundos) 4 6 8 10 12 14 16 18 20 22 24 26 42.2 40.2 23.8 19 15.6 10.2 12.8 11.4 16 22.8 20.8 27.8 1.20 1.69 2.06 2.48 2.94 3.45 3.99 4.58 5.07 5.48 6.09 6.39 52 Tabla IV. Comparación de los resultados de la prueba 1. n Óptimo BalazSaltzman GRASP with pathrelinking MultiFO FOGA MultiRest art-Hung S-FANTHUNG Algoritmo propuesto (PSO) 4 6 8 10 12 14 16 18 20 22 24 26 42.2 40.2 23.8 19 15.6 10 10 6.4 4.8 4 1.8 1.3 43.2 45.4 33.6 40.8 24 22.4 25 17.6 27.4 18.8 14 15.7 15.6 10 10.2 7.4 6.4 7.8 7.4 8.4 42.2 40.2 33.6 22.6 26.2 26.4 26 24.6 26.8 26.4 23.2 23.2 42.2 40.2 23.8 19 15.6 10 10 7.2 5.2 5.6 3.2 3.6 42.2 40.2 23.8 19 15.6 12.6 14.2 12.6 14.2 17 15 15.2 42.2 40.2 23.8 19 15.6 10 10 8.2 6.2 7.6 6.6 7 42.2 40.2 23.8 19 15.6 10.2 12.8 11.4 16 22.8 20.8 27.8 Tabla V. Comparación de los resultados de la prueba 1 usando resultado / óptimo . n Óptimo BalazSaltzman GRASP with pathrelinking MultiFO FOGA MultiRestartHung S-FANTHUNG Algoritmo propuesto (PSO) 4 42.2 1.02 - 1.00 1.00 1.00 1.00 1.00 6 40.2 1.13 - 1.00 1.00 1.00 1.00 1.00 8 23.8 1.41 - 1.41 1.00 1.00 1.00 1.00 10 19 2.15 - 1.19 1.00 1.00 1.00 1.00 12 15.6 1.54 1.00 1.68 1.00 1.00 1.00 1.00 14 10 2.24 1.00 2.64 1.00 1.26 1.00 1.02 16 10 2.50 1.02 2.60 1.00 1.42 1.00 1.28 18 6.4 2.75 1.16 3.84 1.13 1.97 1.28 1.78 20 4.8 5.71 1.33 5.58 1.08 2.96 1.29 3.33 22 4 4.70 1.95 6.60 1.40 4.25 1.90 5.70 24 1.8 7.78 4.11 12.89 1.78 8.33 3.67 11.56 26 1.3 12.08 6.46 17.85 2.77 11.69 5.38 21.38 La tabla VI muestra los resultados de la prueba 2 para el conjunto de Balaz y Saltzman. Se aprecia que los resultados mejoraron significativamente para n 20 . La tabla VII y VIII muestran que los resultados obtenidos igualan o superan a todos los resultados del algoritmo de Balaz y Saltzman. También se aprecia que los resultados son idénticos a los de GRASP 53 para n 14 y que para n 14 son muy similares. Se observa que, en general, los resultados son buenos. Tabla VI. Resultados de la prueba 2. n Resultado Tiempo (segundos) 4 6 8 10 12 14 16 18 20 22 24 26 42.2 40.2 23.8 19 15.6 10 10.4 7.8 7.6 9.8 9.8 10.2 7.38 12.16 15.37 19.93 24.57 28.16 31.91 37.59 42.47 46.51 53.38 55.71 Tabla VII. Comparación de los resultados de la prueba 2. n Óptimo BalazSaltzman 4 6 8 10 12 14 16 18 20 22 24 26 42.2 40.2 23.8 19 15.6 10 10 6.4 4.8 4 1.8 1.3 43.2 45.4 33.6 40.8 24 22.4 25 17.6 27.4 18.8 14 15.7 GRASP with pathrelinking 15.6 10 10.2 7.4 6.4 7.8 7.4 8.4 MultiFO 42.2 40.2 33.6 22.6 26.2 26.4 26 24.6 26.8 26.4 23.2 23.2 FOGA MultiRest art-Hung 42.2 40.2 23.8 19 15.6 10 10 7.2 5.2 5.6 3.2 3.6 42.2 40.2 23.8 19 15.6 12.6 14.2 12.6 14.2 17 15 15.2 S-FANTHUNG 42.2 40.2 23.8 19 15.6 10 10 8.2 6.2 7.6 6.6 7 Algoritmo propuesto (PSO) 42.2 40.2 23.8 19 15.6 10 10.4 7.8 7.6 9.8 9.8 10.2 54 Tabla VIII. Comparación de los resultados de la prueba 2 usando resultado / óptimo n Óptimo BalazSaltzman GRASP with pathrelinking MultiFO FOGA MultiRestartHung S-FANTHUNG Algoritmo propuesto (PSO) 4 42.2 1.02 - 1.00 1.00 1.00 1.00 1.00 6 40.2 1.13 - 1.00 1.00 1.00 1.00 1.00 8 23.8 1.41 - 1.41 1.00 1.00 1.00 1.00 10 19 2.15 - 1.19 1.00 1.00 1.00 1.00 12 15.6 1.54 1.00 1.68 1.00 1.00 1.00 1.00 14 10 2.24 1.00 2.64 1.00 1.26 1.00 1.00 16 10 2.50 1.02 2.60 1.00 1.42 1.00 1.04 18 6.4 2.75 1.16 3.84 1.13 1.97 1.28 1.22 20 4.8 5.71 1.33 5.58 1.08 2.96 1.29 1.58 22 4 4.70 1.95 6.60 1.40 4.25 1.90 2.45 24 1.8 7.78 4.11 12.89 1.78 8.33 3.67 5.44 26 1.3 12.08 6.46 17.85 2.77 11.69 5.38 7.85 Los resultados obtenidos para la prueba 3 sobre el conjunto de Balaz-Saltzman mostrados en la tabla IX muestran una notable mejoría para n 14 . Las tablas X y XI indican que no solo se supera a Balaz-Saltzman sino que también a MultiFO y Multirestart-Hung. Por otra parte, la diferencia entre S-Fant-Hung, GRASP es muy pequeña. Tabla IX. Resultados de la prueba 3. n Resultado Tiempo (segundos) 4 6 8 10 12 14 16 18 20 22 24 26 42.2 40.2 23.8 19 15.6 10.2 10.2 7.4 7.2 8 8 9 10.51 12.80 20.57 26.12 31.29 36.22 41.61 47.86 55.58 59.96 67.54 72.68 55 Tabla X. Comparación de los resultados de la prueba 3. n Óptimo BalazSaltzman 4 6 8 10 12 14 16 18 20 22 24 26 42.2 40.2 23.8 19 15.6 10 10 6.4 4.8 4 1.8 1.3 43.2 45.4 33.6 40.8 24 22.4 25 17.6 27.4 18.8 14 15.7 GRASP with pathrelinking 15.6 10 10.2 7.4 6.4 7.8 7.4 8.4 MultiFO 42.2 40.2 33.6 22.6 26.2 26.4 26 24.6 26.8 26.4 23.2 23.2 FOGA MultiRest art-Hung 42.2 40.2 23.8 19 15.6 10 10 7.2 5.2 5.6 3.2 3.6 42.2 40.2 23.8 19 15.6 12.6 14.2 12.6 14.2 17 15 15.2 S-FANTHUNG Algoritmo propuesto (PSO) 42.2 40.2 23.8 19 15.6 10 10 8.2 6.2 7.6 6.6 7 42.2 40.2 23.8 19 15.6 10.2 10.2 7.4 7.2 8 8 9 Tabla XI. Comparación de los resultados de la prueba 3 usando resultado / óptimo n Óptimo 4 42.2 1.02 - 1.00 1.00 1.00 1.00 1.00 6 40.2 1.13 - 1.00 1.00 1.00 1.00 1.00 8 23.8 1.41 - 1.41 1.00 1.00 1.00 1.00 10 19 2.15 - 1.19 1.00 1.00 1.00 1.00 12 15.6 1.54 1.00 1.68 1.00 1.00 1.00 1.00 14 10 2.24 1.00 2.64 1.00 1.26 1.00 1.02 16 10 2.50 1.02 2.60 1.00 1.42 1.00 1.02 18 6.4 2.75 1.16 3.84 1.13 1.97 1.28 1.16 20 4.8 5.71 1.33 5.58 1.08 2.96 1.29 1.50 22 4 4.70 1.95 6.60 1.40 4.25 1.90 2.00 24 1.8 7.78 4.11 12.89 1.78 8.33 3.67 4.44 26 1.3 12.08 6.46 17.85 2.77 11.69 5.38 6.92 BalazSaltzman GRASP with pathrelinking MultiFO FOGA MultiRestartHung S-FANTHUNG Algoritmo propuesto (PSO) La prueba 4 para el conjunto de Balaz y Saltzman generó los mejores resultados (tabla XII). Sin embargo, el tiempo de ejecución se incrementó considerablemente debido al aumento de operaciones requeridas. Se aprecia en la tabla XIII y XIV que los resultados son superiores a los obtenidos por GRASP y S-FANT-HUNG. Además, la diferencia con FOGA es muy pequeña. 56 Tabla XII. Resultados de la prueba 4. n Resultado Tiempo (segundos) 4 6 8 10 12 14 16 18 20 22 24 26 42.2 40.2 23.8 19 15.6 10 10 6.8 5.6 6 4.8 6 31.80 50.07 60.47 77.57 91.69 104.8 118.6 133.40 155.40 171.40 196.20 211.40 Tabla XIII. Comparación de los resultados de la prueba 4. n Óptimo BalazSaltzman 4 6 8 10 12 14 16 18 20 22 24 26 42.2 40.2 23.8 19 15.6 10 10 6.4 4.8 4 1.8 1.3 43.2 45.4 33.6 40.8 24 22.4 25 17.6 27.4 18.8 14 15.7 GRASP with pathrelinking 15.6 10 10.2 7.4 6.4 7.8 7.4 8.4 MultiFO 42.2 40.2 33.6 22.6 26.2 26.4 26 24.6 26.8 26.4 23.2 23.2 FOGA MultiRest art-Hung 42.2 40.2 23.8 19 15.6 10 10 7.2 5.2 5.6 3.2 3.6 42.2 40.2 23.8 19 15.6 12.6 14.2 12.6 14.2 17 15 15.2 S-FANTHUNG 42.2 40.2 23.8 19 15.6 10 10 8.2 6.2 7.6 6.6 7 Algoritmo propuesto (PSO) 42.2 40.2 23.8 19 15.6 10 10 6.8 5.6 6 4.8 6 57 Tabla XIV. Comparación de los resultados de la prueba 4 usando resultado / óptimo n Óptimo BalazSaltzman GRASP with pathrelinking MultiFO FOGA MultiRestartHung S-FANTHUNG Algoritmo propuesto (PSO) 4 42.2 1.02 - 1.00 1.00 1.00 1.00 1.00 6 40.2 1.13 - 1.00 1.00 1.00 1.00 1.00 8 23.8 1.41 - 1.41 1.00 1.00 1.00 1.00 10 19 2.15 - 1.19 1.00 1.00 1.00 1.00 12 15.6 1.54 1.00 1.68 1.00 1.00 1.00 1.00 14 10 2.24 1.00 2.64 1.00 1.26 1.00 1.00 16 10 2.50 1.02 2.60 1.00 1.42 1.00 1.00 18 6.4 2.75 1.16 3.84 1.13 1.97 1.28 1.06 20 4.8 5.71 1.33 5.58 1.08 2.96 1.29 1.17 22 4 4.70 1.95 6.60 1.40 4.25 1.90 1.50 24 1.8 7.78 4.11 12.89 1.78 8.33 3.67 2.67 26 1.3 12.08 6.46 17.85 2.77 11.69 5.38 4.62 58 4.4.2 Resultados usando el conjunto de Crama y Spieksma La tabla XV muestra los resultados obtenidos para la prueba 5 del conjunto CramaSpieksma. Como lo muestran las tablas XVI y XVII el algoritmo presenta buenos resultados aun cuando el número de ciclos de ejecución es muy pequeño. Supera en su totalidad a la búsqueda por entornos y, en comparación con los demás, los resultados son muy competitivos. Tabla XV. Resultados de la prueba 5. Caso n Resultado Tiempo (seg) 3DA99N1 3DA99N2 3DA99N3 3DA198N1 3DA198N2 3DA198N3 3DIJ99N1 3DIJ99N2 3DIJ99N3 3DI198N1 3DI198N2 3DI198N3 3D1299N1 3D1299N2 3D1299N3 3D1198N1 3D1198N2 3D1198N3 33 33 33 66 66 66 33 33 33 66 66 66 33 33 33 66 66 66 1608 1401 1604 2666 2460 2767 4797 5057 4287 9708 8956 9757 133 131 131 286 286 283 6.11 6.12 6.27 12.98 11.62 11.79 6.08 6.79 6.81 14.97 14.45 14.78 5.91 6.02 6 11.52 11.80 11.36 Tabla XVI. Comparación de los resultados de la prueba 5. Caso n Óptimo Crama y Spieksma GRASP with pathrelinking MultiFO FOGA 3DA99N1 3DA99N2 3DA99N3 3DA198N1 3DA198N2 3DA198N3 3DIJ99N1 3DIJ99N2 3DIJ99N3 3DI198N1 3DI198N2 3DI198N3 3D1299N1 3D1299N2 3D1299N3 3D1198N1 3D1198N2 3D1198N3 33 33 33 66 66 66 33 33 33 66 66 66 33 33 33 66 66 66 1607 1395 1604 2654 2433 2748 4772 2035 4260 9633 8831 9670 133 130 130 283 281 280 1618 1411 1609 2668 2469 2775 4861 5142 4352 9780 9142 9888 135 137 135 293 294 293 1608 1401 1604 2664 2449 2759 4797 5068 4287 9694 8954 9751 133 131 131 286 286 282 1608 1401 1604 2662 2449 2758 4797 5068 4287 9687 8947 9747 133 132 131 287 286 283 1608 1401 1604 2662 2449 2758 4797 5067 4287 9684 8944 9745 133 131 131 286 286 282 Búsqueda por entornos 133 133 131 302 295 306 Algoritmo propuesto (PSO) 1608 1401 1604 2666 2460 2767 4797 5057 4287 9708 8956 9757 133 131 131 286 286 283 59 Tabla XVII. Comparación de los resultados de la prueba 5 usando resultado / óptimo . Caso n Óptimo Cramay Spieksma GRASP with pathrelinking MultiFO FOGA Búsqueda por entornos Algoritmo propuesto (PSO) 3DA99N1 33 1607 1.007 1.001 1.001 1.001 - 1.001 3DA99N2 33 1395 1.011 1.004 1.004 1.004 - 1.004 3DA99N3 33 1604 1.003 1.000 1.000 1.000 - 1.000 3DA198N1 66 2654 1.005 1.004 1.003 1.003 - 1.005 3DA198N2 66 2433 1.015 1.007 1.007 1.007 - 1.011 3DA198N3 66 2748 1.010 1.004 1.004 1.004 - 1.007 3DIJ99N1 33 4772 1.019 1.005 1.005 1.005 - 1.005 3DIJ99N2 33 2035 2.527 2.490 2.490 2.490 - 2.485 3DIJ99N3 33 4260 1.022 1.006 1.006 1.006 - 1.006 3DI198N1 66 9633 1.015 1.006 1.006 1.005 - 1.008 3DI198N2 66 8831 1.035 1.014 1.013 1.013 - 1.014 3DI198N3 66 9670 1.023 1.008 1.008 1.008 - 1.009 3D1299N1 33 133 1.015 1.000 1.000 1.000 1.000 1.000 3D1299N2 33 130 1.054 1.008 1.015 1.008 1.023 1.008 3D1299N3 33 130 1.038 1.008 1.008 1.008 1.008 1.008 3D1198N1 66 283 1.035 1.011 1.014 1.011 1.067 1.011 3D1198N2 66 281 1.046 1.018 1.018 1.018 1.050 1.018 3D1198N3 66 280 1.046 1.007 1.011 1.007 1.093 1.011 La tabla XVIII muestra los resultados de la prueba 6 para el conjunto de Crama-spieksma. Se aprecian mejorías en algunos resultados y, como lo muestran las tablas XIX y XX, los resultados superan en su totalidad a los obtenidos por Crama-Spieksma y son muy similares a los obtenidos por GRASP y MultiFO. Por otra parte, los valores se mantienen muy cerca de FOGA. 60 Tabla XVIII. Resultados obtenidos de la prueba 6. Caso n Resultado Tiempo (seg) 3DA99N1 3DA99N2 3DA99N3 3DA198N1 3DA198N2 3DA198N3 3DIJ99N1 3DIJ99N2 3DIJ99N3 3DI198N1 3DI198N2 3DI198N3 3D1299N1 3D1299N2 3D1299N3 3D1198N1 3D1198N2 3D1198N3 33 33 33 66 66 66 33 33 33 66 66 66 33 33 33 66 66 66 1608 1401 1604 2666 2452 2758 4797 5067 4287 9686 8947 9749 133 131 131 286 286 282 50.86 52.31 56.98 114.02 109.54 105.24 55.34 55.30 53.25 114.59 110.76 113.38 50.41 52.71 51.35 97.96 104.18 97.99 Tabla XIX. Comparación de los resultados de la prueba 6. Caso n Óptimo Crama y Spieksma 3DA99N1 3DA99N2 3DA99N3 3DA198N1 3DA198N2 3DA198N3 3DIJ99N1 3DIJ99N2 3DIJ99N3 3DI198N1 3DI198N2 3DI198N3 3D1299N1 3D1299N2 3D1299N3 3D1198N1 3D1198N2 3D1198N3 33 33 33 66 66 66 33 33 33 66 66 66 33 33 33 66 66 66 1607 1395 1604 2654 2433 2748 4772 2035 4260 9633 8831 9670 133 130 130 283 281 280 1618 1411 1609 2668 2469 2775 4861 5142 4352 9780 9142 9888 135 137 135 293 294 293 GRASP with pathrelinking 1608 1401 1604 2664 2449 2759 4797 5068 4287 9694 8954 9751 133 131 131 286 286 282 MultiFO 1608 1401 1604 2662 2449 2758 4797 5068 4287 9687 8947 9747 133 132 131 287 286 283 FOGA 1608 1401 1604 2662 2449 2758 4797 5067 4287 9684 8944 9745 133 131 131 286 286 282 Búsqueda por entornos 133 133 131 302 295 306 Algoritmo propuesto (PSO) 1608 1401 1604 2666 2452 2758 4797 5067 4287 9686 8947 9749 133 131 131 286 286 282 61 Tabla XX. Comparación de los resultados de la prueba 6 usando resultado / óptimo . Caso n Óptimo Cramay Spieksma GRASP with pathrelinking MultiFO FOGA Búsqueda por entornos Algoritmo propuesto (PSO) 3DA99N1 33 1607 1.007 1.001 1.001 1.001 - 1.001 3DA99N2 33 1395 1.011 1.004 1.004 1.004 - 1.004 3DA99N3 33 1604 1.003 1.000 1.000 1.000 - 1.000 3DA198N1 66 2654 1.005 1.004 1.003 1.003 - 1.005 3DA198N2 66 2433 1.015 1.007 1.007 1.007 - 1.008 3DA198N3 66 2748 1.010 1.004 1.004 1.004 - 1.004 3DIJ99N1 33 4772 1.019 1.005 1.005 1.005 - 1.005 3DIJ99N2 33 2035 2.527 2.490 2.490 2.490 - 2.490 3DIJ99N3 33 4260 1.022 1.006 1.006 1.006 - 1.006 3DI198N1 66 9633 1.015 1.006 1.006 1.005 - 1.006 3DI198N2 66 8831 1.035 1.014 1.013 1.013 - 1.013 3DI198N3 66 9670 1.023 1.008 1.008 1.008 - 1.008 3D1299N1 33 133 1.015 1.000 1.000 1.000 1.000 1.000 3D1299N2 33 130 1.054 1.008 1.015 1.008 1.023 1.008 3D1299N3 33 130 1.038 1.008 1.008 1.008 1.008 1.008 3D1198N1 66 283 1.035 1.011 1.014 1.011 1.067 1.011 3D1198N2 66 281 1.046 1.018 1.018 1.018 1.050 1.018 3D1198N3 66 280 1.046 1.007 1.011 1.007 1.093 1.007 Los resultados de la prueba 7, mostrados en la tabla XXI, muestran poca mejoría de los valores. Pero se observa en la tabla XXII y XXIII que el número de valores similares a FOGA es mayor. 62 Tabla XXI. Resultados obtenidos de la prueba 7. Caso n Resultado Tiempo (seg) 3DA99N1 3DA99N2 3DA99N3 3DA198N1 3DA198N2 3DA198N3 3DIJ99N1 3DIJ99N2 3DIJ99N3 3DI198N1 3DI198N2 3DI198N3 3D1299N1 3D1299N2 3D1299N3 3D1198N1 3D1198N2 3D1198N3 33 33 33 66 66 66 33 33 33 66 66 66 33 33 33 66 66 66 1610 1401 1605 2665 2453 2761 4797 5067 42.87 9687 8946 9748 133 131 131 286 286 282 64.87 66.20 63.95 128.06 118.51 146.35 70.47 78.50 66.39 151.91 146.96 145.19 64.98 66.80 66.50 139.02 132.52 129.24 Tabla XXII Comparación de los resultados de la prueba 7. Caso n Óptimo Crama y Spieksma 3DA99N1 3DA99N2 3DA99N3 3DA198N1 3DA198N2 3DA198N3 3DIJ99N1 3DIJ99N2 3DIJ99N3 3DI198N1 3DI198N2 3DI198N3 3D1299N1 3D1299N2 3D1299N3 3D1198N1 3D1198N2 3D1198N3 33 33 33 66 66 66 33 33 33 66 66 66 33 33 33 66 66 66 1607 1395 1604 2654 2433 2748 4772 2035 4260 9633 8831 9670 133 130 130 283 281 280 1618 1411 1609 2668 2469 2775 4861 5142 4352 9780 9142 9888 135 137 135 293 294 293 GRASP with pathrelinking 1608 1401 1604 2664 2449 2759 4797 5068 4287 9694 8954 9751 133 131 131 286 286 282 MultiFO 1608 1401 1604 2662 2449 2758 4797 5068 4287 9687 8947 9747 133 132 131 287 286 283 FOGA 1608 1401 1604 2662 2449 2758 4797 5067 4287 9684 8944 9745 133 131 131 286 286 282 Búsqueda por entornos 133 133 131 302 295 306 Algoritmo propuesto (PSO) 1610 1401 1605 2665 2453 2761 4797 5067 42.87 9687 8946 9748 133 131 131 286 286 282 63 Tabla XXIII Comparación de los resultados de la prueba 7 usando resultado / óptimo Caso n Óptimo Cramay Spieksma GRASP with pathrelinking MultiFO FOGA Búsqueda por entornos Algoritmo propuesto (PSO) 3DA99N1 33 1607 1.007 1.001 1.001 1.001 - 1.002 3DA99N2 33 1395 1.011 1.004 1.004 1.004 - 1.004 3DA99N3 33 1604 1.003 1.000 1.000 1.000 - 1.001 3DA198N1 66 2654 1.005 1.004 1.003 1.003 - 1.004 3DA198N2 66 2433 1.015 1.007 1.007 1.007 - 1.008 3DA198N3 66 2748 1.010 1.004 1.004 1.004 - 1.005 3DIJ99N1 33 4772 1.019 1.005 1.005 1.005 - 1.005 3DIJ99N2 33 2035 2.527 2.490 2.490 2.490 - 2.490 3DIJ99N3 33 4260 1.022 1.006 1.006 1.006 - 0.010 3DI198N1 66 9633 1.015 1.006 1.006 1.005 - 1.006 3DI198N2 66 8831 1.035 1.014 1.013 1.013 - 1.013 3DI198N3 66 9670 1.023 1.008 1.008 1.008 - 1.008 3D1299N1 33 133 1.015 1.000 1.000 1.000 1.000 1.000 3D1299N2 33 130 1.054 1.008 1.015 1.008 1.023 1.008 3D1299N3 33 130 1.038 1.008 1.008 1.008 1.008 1.008 3D1198N1 66 283 1.035 1.011 1.014 1.011 1.067 1.011 3D1198N2 66 281 1.046 1.018 1.018 1.018 1.050 1.018 3D1198N3 66 280 1.046 1.007 1.011 1.007 1.093 1.007 La tabla XXIV muestra los resultados obtenidos de la prueba 8 para el conjunto de CramaSpieksma. Las soluciones no muestran una mejoría notable en comparación con la prueba 7 y si muestran un aumento significativo en el tiempo de ejecución. Se concluye que, para este conjunto, no es necesario ejecutar tantos ciclos para llegar a una buena solución. Las tablas XXV y XXVI muestran los comparativos finales. 64 Tabla XXIV. Resultados obtenidos de la prueba 8. Caso n Resultado Tiempo (seg) 3DA99N1 3DA99N2 3DA99N3 3DA198N1 3DA198N2 3DA198N3 3DIJ99N1 3DIJ99N2 3DIJ99N3 3DI198N1 3DI198N2 3DI198N3 3D1299N1 3D1299N2 3D1299N3 3D1198N1 3D1198N2 3D1198N3 33 33 33 66 66 66 33 33 33 66 66 66 33 33 33 66 66 66 1608 1401 1604 2667 2455 2761 4797 5067 4287 9687 8947 9748 133 131 131 286 286 282 187.07 183.28 171.22 369.89 365.40 283.65 193.03 197.28 188.50 483.33 463.10 440.43 189.89 185.70 180.76 387.52 382.27 356.79 Tabla XXV. Comparación de los resultados de la prueba 8. Caso n Óptimo Crama y Spieksma 3DA99N1 3DA99N2 3DA99N3 3DA198N1 3DA198N2 3DA298N3 3DIJ99N1 3DIJ99N2 3DIJ99N3 3DI198N1 3DI198N2 3DI198N3 3D1299N1 3D1299N2 3D1299N3 3D1198N1 3D1198N2 3D1198N3 33 33 33 66 66 66 33 33 33 66 66 66 33 33 33 66 66 66 1607 1395 1604 2654 2433 2748 4772 2035 4260 9633 8831 9670 133 130 130 283 281 280 1618 1411 1609 2668 2469 2775 4861 5142 4352 9780 9142 9888 135 137 135 293 294 293 GRASP with pathrelinking 1608 1401 1604 2664 2449 2759 4797 5068 4287 9694 8954 9751 133 131 131 286 286 282 MultiFO 1608 1401 1604 2662 2449 2758 4797 5068 4287 9687 8947 9747 133 132 131 287 286 283 FOGA 1608 1401 1604 2662 2449 2758 4797 5067 4287 9684 8944 9745 133 131 131 286 286 282 Búsqueda por entornos 133 133 131 302 295 306 Algoritmo propuesto (PSO) 1608 1401 1604 2667 2455 2761 4797 5067 4287 9687 8947 9748 133 131 131 286 286 282 65 Tabla XXVI. Comparación de los resultados de la prueba 8 usando resultado / óptimo Caso n Óptimo Cramay Spieksma GRASP with pathrelinking MultiFO FOGA Búsqueda por entornos Algoritmo propuesto (PSO) 3DA99N1 33 1607 1.007 1.001 1.001 1.001 - 1.001 3DA99N2 33 1395 1.011 1.004 1.004 1.004 - 1.004 3DA99N3 33 1604 1.003 1.000 1.000 1.000 - 1.000 3DA198N1 66 2654 1.005 1.004 1.003 1.003 - 1.005 3DA198N2 66 2433 1.015 1.007 1.007 1.007 - 1.009 3DA198N3 66 2748 1.010 1.004 1.004 1.004 - 1.005 3DIJ99N1 33 4772 1.019 1.005 1.005 1.005 - 1.005 3DIJ99N2 33 2035 2.527 2.490 2.490 2.490 - 2.490 3DIJ99N3 33 4260 1.022 1.006 1.006 1.006 - 1.006 3DI198N1 66 9633 1.015 1.006 1.006 1.005 - 1.006 3DI198N2 66 8831 1.035 1.014 1.013 1.013 - 1.013 3DI198N3 66 9670 1.023 1.008 1.008 1.008 - 1.008 3D1299N1 33 133 1.015 1.000 1.000 1.000 1.000 1.000 3D1299N2 33 130 1.054 1.008 1.015 1.008 1.023 1.008 3D1299N3 33 130 1.038 1.008 1.008 1.008 1.008 1.008 3D1198N1 66 283 1.035 1.011 1.014 1.011 1.067 1.011 3D1198N2 66 281 1.046 1.018 1.018 1.018 1.050 1.018 3D1198N3 66 280 1.046 1.007 1.011 1.007 1.093 1.007 66 Capítulo V Conclusiones y trabajo futuro. 5.1 Conclusiones Con base en el análisis del problema 3AP y del estado del arte de la optimización por enjambre de partículas para problemas discretos, se logró adaptar el método de PSO para solucionar el problema de asignación axial tres dimensional por medio de un algoritmo distribuido. La evaluación del algoritmo propuesto, con dos conjuntos de datos estandarizados, indica que es competitivo. La calidad de las soluciones es buena y, en varios casos, superior a la de otros métodos. No fue posible hacer una comparación efectiva de los tiempos de ejecución con otros métodos. Cada uno de ellos fue implementado en diferente hardware y en algunos casos no está especificado. Para los algoritmos de B-S y de C-S no hay reporte de los tiempos; Por otra parte, GRASP está implementado en paralelo. Con base en los resultados, se concluye que el tiempo de ejecución es bueno, pero necesita mejorarse. Se determinó que poblaciones pequeñas no proporcionan la diversidad suficiente para obtener buenos resultados a menos que el algoritmo sea implementado en paralelo. Una implementación de este tipo, además de aumentar la diversidad, reduce el tiempo total de ejecución. 5.2 Trabajo futuro El algoritmo puede encontrar en muchos casos el óptimo global o buenas soluciones en un tiempo relativamente corto, pero a partir de ese momento le cuesta trabajo mejorar. La solución implementada es el aumento del número de ciclos de ejecución, pero este problema, 67 al parecer, puede superarse si se implementa una búsqueda local que use alguna heurística o un algoritmo tradicional como el método húngaro. Implementar otro operador de cruce estocástico que no utilice n 3 intentos de intercambio sin afectar a la diversidad. Reducir el tiempo de ejecución del algoritmo. Se propone adaptar el algoritmo para implementarlo en paralelo, pero utilizando otra arquitectura como los procesadores de gráficos avanzados de propósito general de cómputo (GPGPU). Con el objetivo de encontrar un método más genérico, se propone utilizar las bases de este algoritmo para aplicarlo en la solución del problema de asignación 3-dimensional planar. 68 Referencias Amit Konar, 1999. Artificial Intelligence and Soft Computing, Behavioral and Cognitive Modeling of the Human Brain. CRC Press. London. 816 p. Anshuman Sahu, Rudrajit Tapadar, 2007. Solving The Assignment Problem using Genetic Algorithm and Simulated Anneling. IAENG International Journal of Applied Mathematics. Behnam Azvine, Nader Azarmi, Detlef D. Nauck, 2000. Intelligent Systems and Soft Computing Prospects, Tools and Applications. Springer New York. 376p. Castro Liera, M.A., Morales Viscaya, J.A., Castro Liera, I., Castro Liera J.A., Cárdenas Florido, L.A. 2011. Distributed Particle Swarm Optimization Using Clusters and GPGPU. Research Project PAZ-MSC-2009-201 Instituto Tecnológico de La Paz, B.C.S., México. 5 p. Centeno R. Manuel V. 2010. Búsqueda de soluciones para el 3AP-Axial usando búsqueda por entornos. ICHIO. Ching-Jong Liao, Chao-Tang Tseng, Pim Luarn, 2007. A Discrete Version of Particle Swarm Optimization for Flowshop Scheduling Problems. Computers & Operations Research. 34(10): 3099-3111 p. Clerc, Maurice. 2006. Particle Swarm Optimization. London UK. ISTE Ltd. 243 p. David Ríos Insúa, Sixto Ríos Insua, Jacinto Martín Jiménez, Antonio Jiménez Martín. 2009. Alfaomega Ra-Ma. Segunda edición. Distrito Federal México. 387 p. Elaine rich, kevin knight. 1994. Inteligencia Artificial. Mc GrawHill. 2da. Edición. United States. Elon S. Correa, Alex A. Freitas, Colin G. Johnson. 2007. Particle Swarm and Bayesian Networks Applied to Attribute Selection for Protein Functional Classification. GECCO '07 Proceedings of the 2007 GECCO conference companion on Genetic and evolutionary computation. 2651-2658 p. Gaofeng Huang, Andrew Lim. 2006. A Hybrid Genetic Algorithm for the Three-Index Assignment Problem. European Journal of Operational Research. Vol. 172, No. 1. 249-257 p. Goldberg, David E. 2006. Genetic Algorithms in Search, Optimization, and Machine Learning. Addison Wesley. Boston. 432 p. He Jiang, Zhilei Ren, Yan Hu, 2008. A Sampling Based FANT for 3-Dimensional Assignment Problem. Evolutionary Computation CEC 2008. (IEEE World Congress on Computational Intelligence) IEEE Congress on. 4118 – 4124 p. 69 James Kennedy, Russel Eberhart, 1995. Particle Swarm Optimization. Neural Networks, 1995. Proceedings. IEEE International Conference on Vol. 4. 1942 – 1948 p. Jin Qin, Yi-xin Yin, Xiao-juan Ban, 2011. Hybrid Discrete Particle Swarm Algorithm for Graph Coloring Problem. Journal of Computers, Vol 6, No 6. 1175-1182 p. Joost Langeveld, Andries P. Engelbrecht. 2011. A Generic Set-Based Particle Swarm Optimization Algorithm. ICSI 2011 International Conference on Swarm Intelligence. Jun-qing, Quan-ke Pan, Sheng Xie, Bao-xian Jia y Yu-ting Wang. 2009. A Hybrid Particle Swarm Optimization and Tabu Search algorithm for Flexible Job-Shop Scheduling Problem. IACSIT. Jusmelis S. Gonzalez S. y Manuel V. Centeno R. 2001. Desarrollo de un Programa para Resolver el Problema de Asignación Axial 3-Dimensional a través de un Algoritmo Genético. Saber. Vol. 13. No. 2. 123-126 p. K. Lakshmi, 2010. Multicriteria Hybrid PSO Algorithm with Comunications for Combinatorial Optimization. A2CWiC '10 Proceedings of the 1st Amrita ACM-W Celebration on Women in Computing in India. M. Tim Jones. 2005. AI Aplication Programming. Second Edition. Charles River Media. Canada. 473 p. Marsaglia, G. 1999. Eight In-line Random Number Generators. http://www.bobwheeler.com/stat/Password/MarsagliaPost.txt. sci.stat.math. Pramalatha, K, Dr. A.M. Natarajan, 2009. Discrete PSO with GA Operators for Document Clustering. International Journal of Recent Trends in Engineering, vol. 1, núm. 1. 20-24 p. Qiang Lu, Xue-Na Qiu, Shi-Rong Liu. 2009. Discrete Particle Swarm Optimization Algorithm with Fully Communicated Information. GEC '09 Proceedings of the first ACM/SIGEVO Summit on Genetic and Evolutionary Computation. Qingyun Yang, Wang. 2007. An Improve Discrete Particle Swarm Optimization algorithm for TSP. 2007. WI-IATW '07 Proceedings of the 2007 IEEE/WIC/ACM International Conferences on Web Intelligence and Intelligent Agent Technology - Workshops. 35-38 p. R. M. Karp, 1972. Reducibility Among Combinatorial Problems. The IBM Research Symposia Series. 85-103 p. Rainer Burkard, Mauro Dell’Amico, Silvano Martello. 2009. Assignment Problems. Society for Indutrial and Applied Mathematics. Philadelphia. 402 p. Rehab F. Abdel-kader. 2011. An Improved Discrete PSO with GA Operators for Efficient QoS-Multicast Routing. International Journal of Hybrid Information Technology. Vol. 4, No. 2. 23-38 p. 70 Renata M.Aiex, Mauricio G.C. Resende, Panos M. Pardalos, Gerardo Toraldo. 2005. GRASP with Path Relinking for Three-Index Assignment. Journal on Computing. Vol. 17, No. 2. 224247 p. Russell C. Eberhart, Yuhui shi. 2001. Particle Swarm Optimization: Developments, Applications and Resources. Evolutionary Computation 2001. Vol. 1. 81-86 p. Sara Baase, Allen Van Gelder, 2002. Algoritmos Computacionales, Introducciónal Análisis y Diseño. Addison Wesley. Tercera edición. México. 679 p. Spieksma, Frits. C.R., 2000. Multi Index Assignment Problems: Complexity, approximation, applications. In: Pardalos, P.M., Pitsoulis, L.S. (Eds.), Nonlinear Assignment Problems, Algorithms and Applications, Kluwer Academic Publishers. 1-12 p. Stuart Russell, Peter Norving. 2006. Inteligencia Artificial un Enfoque Moderno. Pearson Prenrice Hall. 2da edición. Madrid España. 1179 p. Tao Gong, Andrw L. Tuson, 2007. Binary Particle Swarm Optimization: a Forma Analysis Approach. GECCO '07 Proceedings of the 9th annual conference on Genetic and evolutionary computation. 172-172 p. Thomas, H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein. 2001. Introduction to Algorithms. The MIT Press. Second edition. Cambridge Massachusetts.1184 p. Wei-jun Xia and Zhi-ming Wu. 2006. A Hybrid Particle Swarm Optimization Approach for the Job-Shop Scheduling Problem. The International Journal of Advanced Manufacturing Technology. Vol. 29. No. 3-4. 360-366 p. Wei-Neng Chen, Jun Zhang, Henry S.H. Chung, Wen-Liang Zhong, Wei-Gang Wu, Yu-hui Shi, 2010. A Novel Set-Based Particle Swarm Optimization Method for Discrete Optimization Problems. Evolutionary Computation, IEEE Transactions on, Vol. 14, No.. 2. 278-300 p. Yves Crama, Frits C.R. Spieksmam 1992. Aproximation Algorithms for Three-Dimensional Assignment Problem with Triangle Inequalities. European Journal of Operational Research Vol. 60, No. 3. 273-279 p. Zahra Afsahi, Ramin Javadzadeh, M. Meybodi. 2011. Hybrid Model of Particle Swarm Optimization and Cellular Learning Automata with New Structure of Neighborhood. ICMLC 2011 3rd. International Conference on Machine Learning and Computing. 71 Apéndice A Configuración básica de PVM en Fedora 14. 1. Instalación. La forma más sencilla de instalar PVM es a través de la línea de comandos de una terminal con el comando yum. La instalación y configuración se debe hacer como usuario root. #yum –y install pvm* 2. Configuración. 2.1 RSH El demonio rshd debe estar correctamente ejecutándose en todos los equipos que conformarán el clúster. Esto es necesario para que cada host pueda ejecutar comandos en otras máquinas. 2.2 Variables de entorno. Editar el archivo .bashrc para agregarle las siguientes variables de entorno: PVM_ROOT=/usr/share/pvm3 PVM_ARCH=LINUXI386 PVM_RSH=/usr/bin/ssh Export PVM_ROOT PVM_ARCH PVM_RSH 2.3 Para incluir la ruta de los binarios de PVM en la variable PATH del sistema, se debe editar el archivo .bashprofile de la siguiente manera: PATH=$PATH:$HOME/bin:$PVM_ROOT/lib export PATH 72 2.4 Hosts remotos En el archivo /etc/hosts de cada nodo se deben agregar los nombres de los equipos que conforman el clúster y se debe eliminar la referencia 127.0.0.1. 10.9.2.3 nodo1 3. Ejecución. 3.1 Para ejecutar PVM. #pvm 3.2 Para agregar nodos a la máquina virtual. Una vez dentro del ambiente de PVM se pueden agregar hosts utilizando el comando add de la siguiente forma: pvm>add nombre_del_host También es posible hacerlo a través de un archivo que tenga listado todos los nombres de los equipos que conformarán a la máquina. #pvm máquinas 3.3 Para eliminar un host pvm>delete nombre_host 3.4 Para ver las máquinas que conforman la instancia de PVM. pvm>conf 3.5 Para ver las tareas que se están ejecutando en PVM pvm>ps –xa 3.6 Para salir de PVM. Si se utiliza el comando quit, se abandona la línea de comandos de PVM; pero no se termina la ejecución de la tareas. Para terminar totalmente la ejecución de PVM se debe usar el comando halt. Para mayor información acceda a: http://www.csm.ornl.gov/pvm/ http://www.netlib.org/pvm3/book/pvm-book.html Y para administrar un clúster por medio de ssh puede visitar la siguiente referencia: http://mcastroliera.blogspot.com/search/label/pvm