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( n3)
(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:
( pi , 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

Documentos relacionados