UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD DE...
Transcript of UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD DE...
IMPLEMENTACION DE UN ALGORITMO BIO-INSPIRADO PARA LA
OPTIMIZACIÓN DE FUNCIONES MULTI-OBJETIVO BASADO EN
QUIMIOTAXIS DE BACTERIAS SOBRE GPGPU’s
JESÚS IGNACIO ALMANZA LEÓN
UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS
FACULTAD DE INGENIERÍA
INGENIERÍA DE SISTEMAS
Bogotá DC
2015
IMPLEMENTACION DE UN ALGORITMO BIO-INSPIRADO PARA LA
OPTIMIZACIÓN DE FUNCIONES MULTI-OBJETIVO BASADO EN QUIMIOTAXIS
DE BACTERIAS SOBRE GPGPU’s
JESÚS IGNACIO ALMANZA LEÓN
Trabajo de Grado para optar al título de Ingeniero de Sistemas
MSc. ROBERTO MANUEL POVEDA CHAVES Director
UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS
FACULTAD DE INGENIERÍA
INGENIERÍA DE SISTEMAS
Bogotá DC
2015
TABLA DE CONTENIDO
LISTA DE ILUSTRACIONES ............................................................................................. 5
LISTA DE TABLAS. ........................................................................................................... 6
1. PRELIMINARES ......................................................................................................... 6
1.1. Introducción ......................................................................................................... 6
1.2. Formulación del problema. .................................................................................. 9
1.3. Justificación ....................................................................................................... 10
1.4. Pregunta de investigación .................................................................................. 12
1.5. OBJETIVOS ...................................................................................................... 13
1.5.1. Objetivo general ......................................................................................... 13
1.5.2. Objetivos específicos .................................................................................. 13
1.6. ALCANCE Y LIMITACIONES ............................................................................ 14
1.6.1. Alcances ..................................................................................................... 14
1.6.2. Limitaciones ............................................................................................... 14
2. MARCO TEORICO ................................................................................................... 15
2.1. Optimización multi-objetivo. ............................................................................... 15
2.1.1. Dominancia y Frente de Pareto. ................................................................. 18
2.2. GPGPU. ............................................................................................................ 22
2.2.1. Modelo de programación con CUDA. ......................................................... 23
2.3. Quimiotaxis de bacterias.................................................................................... 26
2.3.1. Efecto del tamaño de la población y el número de pasos quimiotácticos .... 30
3. DISEÑO .................................................................................................................... 32
3.1. Arquitectura. ...................................................................................................... 32
3.2. Diseño lógico del algoritmo. ............................................................................... 32
3.3. Evaluación paralela por criterio de no dominancia. ............................................ 40
3.4. Problemas de prueba. ....................................................................................... 40
4. ANÁLISIS Y RESULTADOS. ..................................................................................... 42
5. CONCLUSIONES Y TRABAJO FUTURO. ................................................................ 49
6. REFERENCIAS ........................................................................................................ 51
7. ANEXOS................................................................................................................... 54
Anexo 1. SCH datos para frente de Pareto real. .................................................... 54
Anexo 2. ZDT1: datos para frente de Pareto real ......................................................... 60
Anexo 3. Fórmulas de métricas utilizadas. ................................................................... 73
LISTA DE ILUSTRACIONES
Figura 1 Mapeo del espacio n-dimensional de prámetros en el espacio objetivo m-
dimensional. .................................................................................................................................... 17
Figura 2 Diagrama de distribución hipotética de precios de los autos.. ................................ 18
Figura 3 Ejemplo de resultados de una optimización multi-objetivo. ..................................... 20
Figura 4 Estructura de grillas, bloques e hilos en una GPU. ................................................... 24
Figura 5 Patrón de movimientos del comportamiento quimiotáctico de la bacteria E. Coli.27
Figura 6 Diagrama de algoritmo BCMOA original ..................................................................... 33
Figura 7: Actualización de posiciones de bacterias fuertes en BCMOA. .............................. 34
Figura 8: Actualización de posiciones de bacterias débiles en BCMOA. .............................. 35
Figura 9. Evaluación de la función de aptitud mediante cálculos paralelos.......................... 37
Figura 10. Evaluación en paralelo de función de aptitud. ........................................................ 38
Figura 11. Calculo paralelo de función de aptitud y funciones objetivo. ................................ 39
Figura 12. Conjunto de soluciones no dominadas para el problema SCH resuelto con
PBCMOA. ........................................................................................................................................ 44
Figura 13. Conjunto de soluciones para el problema SCH resuelto con BCMOA. .............. 44
Figura 14. Conjunto de soluciones no dominadas para el problema POL resuelto con
PBCMOA ......................................................................................................................................... 45
Figura 15. Conjunto de soluciones no dominadas para el problema POL resuelto con
BCMOA ............................................................................................................................................ 46
Figura 16. Conjunto de soluciones no dominadas para el problema ZDT1 resuelto con
PBCMOA ......................................................................................................................................... 47
Figura 17. Conjunto de soluciones no dominadas para el problema ZDT1 resuelto con
BCMOA ............................................................................................................................................ 47
LISTA DE TABLAS.
Tabla 1. Resumen de problemas multi-objetivo utilizados para pruebas. ............. 41
Tabla 2. Resultados de convergencia métrica. ...................................................... 43
Tabla 3. Resultados de distancia generacional. .................................................... 43
Tabla 4. Resultados de diversidad. ....................................................................... 43
Tabla 5. Tiempos de ejecución SCH. .................................................................... 48
6
1. PRELIMINARES
1.1. Introducción
Los problemas de optimización que enfrentan a diario analistas, ingenieros,
administradores, economistas, científicos, etc. frecuentemente incluyen múltiples
objetivos que se encuentran en conflicto, es decir, que mejorar uno de estos
objetivos implica empeorar en otro. La solución a estos problemas es un conjunto
de valores (denominado óptimo de Pareto), que compensan los diferentes
objetivos en cuestión. A este tipo de problemas, se les conoce en la literatura con
el nombre de Problemas de Optimización Multi-objetivo (MOP por sus siglas en
ingles)
En el campo de la investigación de operaciones, desde la década de los años 50´s
se han implementado una variedad de métodos considerados como clásicos (e.g.
programación lineal, programación de metas, entre otros) con el fin de abordar
estos problemas. Dichos métodos, basados ya sea en la lógica formal o en la
programación matemática, han presentado una importante limitación en cuanto
sus estrategias no permiten encontrar en muchos casos ninguna solución óptima
de Pareto (Deb K. , Multi-objective Optimization, 2014).
Como alternativa a los métodos clásicos, en los últimos años se han desarrollado
nuevas técnicas denominadas bio-inspiradas, las cuales se caracterizan por
simular procesos naturales de alta complejidad como lo son el comportamiento de
organismos vivos y la evolución.
7
Las técnicas bio-inspiradas se agrupan de acuerdo con el fenómeno natural que
intentan emular, ya sea este, el proceso evolutivo de las especies (Algoritmos
Evolutivos (AE)): la supervivencia del más apto y la transmisión de características
de padres a hijos (Fogel, 1994) o en el comportamiento colaborativo de animales
(Algoritmos de Inteligencia Colectiva (AIC)). Este tipo de propuestas han atraído
cada vez más el interés de la comunidad científica, debido a que se convierten en
poderosas alternativas para la solución de problemas de gran complejidad
computacional (Bonaveau, Therauluz, & Dorigo, 1999) (Coello C. , 2005), (De
Castro & Von Zuben, 2004), (Deb, 1999).
Si bien existen diferencias específicas entre cada uno de los AE y los de AIC,
podemos describir de forma general que su funcionamiento se basa en la
generación de un conjunto de poblaciones, en las cuales cada individuo constituye
una posible solución, y en cada iteración se busca determinar cuáles son los
mejores individuos (soluciones) a partir de una función de evaluación determinada,
de tal forma que se puedan generar nuevos individuos a partir de ellos, empleando
para ello operadores de variación. A partir de esta descripción cada individuo o
solución puede ser considerada en el diseño como una unidad independiente a las
demás (de Jong, Spears, & Gordon, 1994) lo cual permite que se implementen
estrategias de procesamiento paralelo (por ejemplo, en los cálculos de evaluación
o en el funcionamiento de los mecanismos de variación) con el objetivo de mejorar
su desempeño. Esta característica de paralelismo en el procesamiento, convierte
a los algoritmos basados en técnicas bio-inspiradas en excelentes alternativas
para ser implementados sobre dispositivos multiprocesador (computadores con
8
procesador multinúcleo, cluster de workstations, máquinas virtuales paralelas o
Unidades de Procesamiento Gráfico (GPU’s))
En los últimos veinte años se han realizado importantes avances en el diseño y
producción de GPU’s, logrando una mejora cada vez más significativa de sus
capacidades de cómputo; sumado a esto, en la última década han aparecido
frameworks de carácter general para las GPU’s, como CUDA Toolkit (Calcule
Unified Device Architecture), OpenCL (Open Compute Language) y
DirectCompute, permitiendo nuevas posibilidades de trabajo con las mismas,
sobresaliendo investigaciones en áreas del conocimiento como la dinámica de
fluidos computacional, el procesamiento de imágenes médicas, el diseño
automatizado, física y química cuántica, entre otras (Nvidia, 2015).
El propósito del presente trabajo se centró en la implementación paralela de un
algoritmo sobre GPU basado en quimiotaxis de bacterias para la optimización de
funciones multi-objetivo.
9
1.2. Formulación del problema.
Dada la complejidad de muchos de los procesos que se encuentran relacionados
con problemas de optimización multi-objetivo y debido a que los métodos exactos
han mostrado ser ineficientes a la hora de solucionarlos, se ha hecho necesaria la
búsqueda de nuevas alternativas de solución así como también de la mejora
continua de los ya existentes, de tal forma que permitan obtener las mejores
soluciones posibles. En esta búsqueda de alternativas, los algoritmos bio-
inspirados han ganado mucho interés en el interior de la comunidad de
investigadores y profesionales debido a que mediante su uso se han obtenido
resultados competitivos en la solución de diferentes clases de problemas de
optimización.
Entre los algoritmos bio-inspirados encontramos aquellos que basan su diseño en
el comportamiento quimiotáctico de las bacterias los cuales han sido utilizados
exitosamente en problemas de optimización mono y multi-objetivo (Guzmán & De
Carvalho, 2010), (Banerjee & Prasun, 2010) (Müller, Marchetto, Airaghi, &
Koumoutsakos, 2002). Sin embargo, los trabajos relacionados con la
implementación de estos algoritmos sobre dispositivos de procesamiento paralelo
son realmente escasos en la literatura.
Este trabajo propone una implementación de un algoritmo paralelo sobre GPU
basado en quimiotaxis de bacterias para la optimización de funciones multi-
objetivo.
10
1.3. Justificación
Muchos de los problemas a los que se enfrentan diariamente diferentes disciplinas
se encuentran relacionados en menor o mayor medida a procesos de
optimización. Estos procesos implican la consideración simultánea de diferentes
variables, por ejemplo, el tiempo, la cantidad de recursos, la ganancia, etc, y
funciones que las relacionan en la definición del problema. Estos problemas
resultan complejos ya que muchas de estas variables riñen entre sí, razón por la
que no es posible lograr un único valor que permita la optimización de todas las
funciones al mismo tiempo.
Dada esta complejidad, dichos problemas se resolvieron mediante técnicas
exactas (basadas en el cálculo y en la lógica formal) priorizando una única variable
en sus funciones para su optimización, lo que impedía obtener soluciones que
respondieran a su naturaleza multi-objetivo. La solución requiere de cantidades
elevadas de tiempo que en la práctica resultan ineficientes.
Teniendo en cuenta lo anterior, se hizo necesaria la búsqueda de nuevos métodos
de solución, entre los que se destacan los algoritmos bio-inspirados puesto que
han mostrado un excelente rendimiento en problemas donde los métodos
tradicionales resultan ineficientes, además gracias a los avances logrados en la
última década en los componentes de hardware de procesamiento paralelo, como
las GPUs, la investigación se ha esforzado en diseñar versiones paralelas de
estos algoritmos que puedan aprovechar el poder de cómputo de estos
dispositivos. Si bien se ha logrado un avance significativo con algoritmos
evolutivos, colonia de hormigas y enjambres de partículas, investigaciones
11
referentes a la implementación de algoritmos basados en el comportamiento de
bacterias (quimiotaxis o forrajeo) sobre GPU’s es muy escasa en la literatura
especializada, por lo tanto, se hace importante desarrollar una implementación de
este modelo de inteligencia cooperativa sobre estas unidades de
multiprocesamiento, con el fin de resolver de manera más rápida y eficiente
problemas de optimización multi-objetivo.
12
1.4. Pregunta de investigación
¿Es posible adaptar un algoritmo basado en quimiotaxis de bacterias de forma
paralela para ser implementado y ejecutado sobre GPGPU y optimizar de manera
eficiente funciones multi-objetivo?
13
1.5. OBJETIVOS
1.5.1. Objetivo general
Implementar una estrategia de procesamiento paralelo en GPU de un algoritmo
basado en quimiotaxis de bacterias que permita la optimización de funciones
multiobjetivo.
1.5.2. Objetivos específicos
Revisar y analizar la literatura existente sobre los temas relacionados a
GPGPU’s, CUDA, quimiotaxis de bacterias y optimización multi-objetivo.
Realizar pruebas del algoritmo diseñado con comparadores de desempeño
(benchmark), para determinar el rendimiento alcanzado.
Analizar los resultados obtenidos para determinar la eficiencia y calidad de
las soluciones entregadas por el algoritmo propuesto.
Contrastar los resultados obtenidos por el algoritmo realizado con otros
algoritmos de la literatura que solucionan este problema.
14
1.6. ALCANCE Y LIMITACIONES
1.6.1. Alcances
El algoritmo resuelve problemas de optimización multiobjetivo obteniendo
como respuesta solo el conjunto de valores que conforman el frente de
Pareto.
El algoritmo es implementado siguiendo una estrategia de paralelismo
maestro – esclavo.
La implementación del algoritmo es realizada con CUDA ToolKit 6.5.
1.6.2. Limitaciones
No se realizan estudios sobre sensibilidad del algoritmo a cambios en sus
parámetros.
El algoritmo solo es probado con los problemas SCH, POL y ZDT1.
No se realizan análisis del comportamiento del algoritmo en cada uno de
pasos quimiotácticos; en este trabajo solo se estudia el rendimiento del
algoritmo mediante el frente de Pareto obtenido como resultado final.
Aspectos como la eliminación – dispersión y la dispersión no son incluidos
en el algoritmo.
No se contempla la utilización de clusters de GPU´s.
15
2. MARCO TEORICO
En este capítulo se describen los conceptos asociados a la optimización multi-
objetivo, las generalidades de las GPU’s y la forma en la que se organizan sus
diferentes componentes y estructuras para el procesamiento paralelo y como
estos pueden ser utilizados mediante el uso de CUDA ToolKit como framework de
desarrollo. Finalmente, se presentan los aspectos más relevantes del
comportamiento quimiotáctico de la bacteria E. Coli, los cuales son la base del
algoritmo realizado.
2.1. Optimización multi-objetivo.
La optimización en su definición más amplia, se encuentra asociada a la búsqueda
de la mejor o mejores soluciones para un problema. Mientras que con la
optimización simple o de un objetivo se busca el valor máximo o mínimo de una
función real, entero o binario, la optimización multi-objetivo pretende obtener el
conjunto de valores, que de acuerdo con 2 o más funciones cuyos objetivos
generalmente se encuentran en conflicto, son mejores al resto, de tal forma que
ninguno de los valores que pertenezcan al conjunto pueda ser más destacado
entre los demás (Deb K. , Multi-objective Optimization, 2014).
Aún, cuando el anterior planteamiento es interesante desde el aspecto teórico, la
gran importancia de la optimización multi-objetivo radica en que muchos
problemas de diferentes disciplinas tales como la ingeniería económica, las
ciencias de la computación, matemáticas, electrónica, diseño, entre otras, pueden
ser descritos como tal, por ejemplo: maximizar el desempeño de un sistema y
16
minimizar los recursos empleados o maximizar el recorrido de un vehículo
utilizando un mínimo de combustible.
Definición:
Un problema de optimización simple puede ser definido como:
min 𝑓(𝑥)
Sujeto a 𝑥 ∈ 𝑋
max 𝑓(𝑥) = min(−𝑓(𝑥))
Donde, 𝑓: ℝ𝑛 ⟶ ℝ y 𝑋 ⊆ ℝ𝑛, 𝑓 es denominada función objetivo, si existe un
valor 𝑥∗ ∈ ℝ𝑛 tal que la desigualdad 𝑓(𝑥∗) ≤ 𝑓(𝑥) se cumple para todo 𝑥 ∈
𝑋 entonces 𝑥∗ es la solución del problema, y se denomina el valor mínimo global
de f calculado en X.
Sin embargo, en muchas aplicaciones la anterior definición no permite abarcar la
complejidad del problema, debido a la naturaleza del mismo. Si el problema
requiere optimizar más de una función a la vez, las cuales generalmente se
encuentran en conflicto, esta optimización no puede hacerse con la formulación
dada antes.
Un problema de optimización multi-objetivo (MOP) se define matemáticamente
como:
min 𝑧 = 𝒇(𝑥) = (𝑓1(𝑥), 𝑓2(𝑥), … , 𝑓𝑚(𝑥)) = (z1, 𝑧2, … , 𝑧𝑛)
sujeto a 𝑥 = (𝑥1, 𝑥2, … , 𝑥𝑛) ∈ 𝑋
De la anterior definición se puede observar que x es un vector n-dimensional y X
es el espacio de búsqueda de la solución. El vector de la función objetivo 𝒇(𝑥)
17
mapea los diferentes valores de X en ℝ𝑚, donde m representa la cantidad de
funciones objetivo a ser consideradas en el problema, dado que z es multi-objetivo
se debe cumplir que m > 2 (Handl, Kell, & Knowles, 2007).
Figura 1 Mapeo del espacio n-dimensional de prámetros en el espacio objetivo m-dimensional.
Fuente Multiobjective optimization in bioinformatics and computational biology, Handl, Kell and Knowles
(2007).
Consideremos el siguiente ejemplo propuesto por Deb (Deb K. , Multi-objective
Optimization, 2014) en el que se planea el problema de decidir que auto se debe
comprar a partir de la oferta encontrada en el mercado. Inicialmente, solo se
tendrá en cuenta el precio, el cual inicia hipotéticamente desde 10.000 hasta los
100.000 dólares. Si el objetivo es comprar el auto que minimice el gasto realizado
la decisión es simple: como se aprecia en la figura 3, la opción 1 es la solución al
problema, puesto que es la más económica de todas las que se encuentran en el
mercado.
18
Figura 2 Diagrama de distribución hipotética de precios de los autos.
Fuente Multi-objective Optimization. Deb 2014.
Sin embargo, ahora consideremos que se desea obtener el mejor confort además
del menor precio en la compra del auto. En este caso podemos apreciar que si
bien el punto marcado como 1 es la solución que minimiza el costo pero no
maximiza el confort, el valor máximo para este se encuentra en el punto 2 que
representa la solución más costosa de todas las alternativas presentes. ¿Cómo
podemos determinar la mejor opción? Para ello, necesitamos del concepto de
dominancia y frente de Pareto.
2.1.1. Dominancia y Frente de Pareto.
La gran mayoría de los algoritmos de optimización multi-objetivo, utilizan en su
diseño el concepto de dominancia para obtener el conjunto de soluciones que
responden a los diferentes objetivos del problema (Guzmán & De Carvalho, 2010),
en donde dos soluciones son comparadas para determinar cuándo una domina a
la otra (Deb K. , Multi-objective Optimization, 2014).
19
Consideremos las siguientes condiciones para definir la dominancia tomadas de
Deb:
Decimos que la solución 𝑥(1) domina a otra solución 𝑥(2) (𝑥(1), 𝑥(2) ∈ ℝ𝑛) si se
cumplen las dos condiciones presentadas a continuación:
a. La solución 𝑥(1) no es peor que 𝑥(2) en todos los objetivos.
b. La solución 𝑥(1) es estrictamente mejor que 𝑥(2) en por lo menos uno de los
objetivos.
Si alguna de esas condiciones no se cumple, entonces 𝑥(1) no domina la solución
𝑥(2). Por lo tanto, esta última hace parte del conjunto de las soluciones no
dominadas o soluciones óptimas de Pareto o Frente de Pareto (es decir, el frente
de Pareto es el conjunto de soluciones no dominadas).
Cada una de las siguientes afirmaciones es equivalente al caso en el que
𝑥(1)domine a 𝑥(2) (expresado matemáticamente como 𝑥1 ≽ 𝑥2)
𝑥(2) es dominada por 𝑥(1)
𝑥(1) no es dominada por 𝑥(2),
Por ejemplo consideremos dos funciones a optimizar y 5 posibles soluciones:
20
Figura 3 Ejemplo de resultados de una optimización multi-objetivo.
Adaptado de Multi-objective Optimization , Deb 2014.
Realicemos la comparación de las soluciones 𝑥(3) y 𝑥(5) a partir de las condiciones
de dominancia descritas anteriormente:
𝑥(3) no es peor que 𝑥(1), 𝑥(2) y 𝑥(4) respecto a 𝑓1 y 𝑓2, realmente 𝑥(3) es
estrictamente mejor que estas, por lo tanto 𝑥(3) no es dominada por 𝑥(1),
𝑥(2) o 𝑥(4).
𝑥(5) no es peor que 𝑥(1), 𝑥(2) y 𝑥(4) respecto a 𝑓1 y 𝑓2, lo que se observa es
que 𝑥(5) es estrictamente mejor que estas (en por lo menos el objetivo 𝑓1),
así 𝑥(5) no es dominada por 𝑥(1), 𝑥(2) o 𝑥(4).
𝑥(5) es mejor que 𝑥(3) respecto a 𝑓1, pero 𝑥(5) es peor que 𝑥(3) en 𝑓2, por lo
tanto la condición de dominancia no se cumple, así que 𝑥(5) no domina a
𝑥(3). 𝑥(3) tampoco domina a 𝑥(5).
De lo anterior podemos concluir que 𝑥(3) y 𝑥(5) no son dominadas por ninguna otra
solución, por lo tanto ambas soluciones pertenecen al frente de Pareto Principal
(el nivel 1 que aparece en la gráfica). Si realizamos las diferentes comparaciones
21
entre todas las soluciones encontramos que pertenecen a diferentes frentes de
Pareto, como se puede apreciar en la figura 3 (b).
22
2.2. GPGPU.
Del mismo modo que los diseñadores gráficos necesitan procesar grandes
volúmenes de datos en tiempos muy cortos, los científicos e investigadores de
diferentes disciplinas se enfrentan a situaciones en las que realizar trabajos
experimentales sobre un fenómeno es virtualmente imposible, razón por la cual
algunas veces deben trabajar con modelos matemáticos que involucran conjuntos
de varias ecuaciones interrelacionadas (con una gran cantidad de variables y
datos) para producir resultados que sean realistas y fiables en relación con el
fenómeno estudiado, todo esto en el menor tiempo posible.
Las Unidades de Procesamiento Gráfico (GPUs) desde su lanzamiento en 1995 se
establecieron como el principal soporte para el trabajo de los diseñadores y en
años recientes han atraído cada vez más el interés de los investigadores debido a
su relación costo-rendimiento y la capacidad de realizar procesamiento paralelo de
enormes cantidades de datos. El uso que se ha dado a las GPUs en tareas
diferentes al procesamiento de gráficos se le conoce con el nombre de
computación de propósito general (GPGPU) o GPU Computing, muchos
desarrollos científicos han sido desarrollados cada vez más bajo este
enfoque/tecnología de procesamiento (Krömer, Platoš, Snášel, & Abraham, 2013).
Desde el punto de vista de hardware la GPU se considera como un conjunto de
varios cientos de procesadores simples agrupados en multiprocesadores SIMD
(Single Instruction, Multiple Data) con memoria compartida, lo que ha permitido
que se ajusten convenientemente a tareas que demandan un elevado número de
cálculos (Arenas, Mora, Romero, & Castillo, 2012). Para poder explotar todo su
23
potencial de cómputo actualmente se han generado diferentes ambientes de
programación basados en su mayoría en el lenguaje C que han facilitado el trabajo
en GPGPU, lo que ha permitido que su uso se haya extendido considerablemente
a partir del lanzamiento realizado por Nvidia del ambiente que probablemente es el
más utilizado por la comunidad científica: CUDA (Compute Unified Device
Architecture) (Owens, y otros, 2008).
2.2.1. Modelo de programación con CUDA.
La propuesta de CUDA es un modelo de programación híbrido en el que el
sistema se puede dividir en dos grandes componentes: el host CPU y el
dispositivo (device) GPU los cuales son controlados mediante el uso de un
lenguaje extendido basado en C/C++. En el device se opera con el concepto de
hilo (thread) que es una secuencia de instrucciones que representa la tarea a
realizar y puede ser aplicada en paralelo a diferentes grupos de datos (Cook,
2013). Los threads se agrupan en bloques que pueden ser administrados como
vectores o como matrices y estos a su vez se encuentran organizados en grillas,
figura 4.
24
Figura 4 Estructura de grillas, bloques e hilos en una GPU.
Fuente Differential Evolution Algorithm on the GPU with C-CUDA, Veronese & Krohling 2010.
Un programa en CUDA se organiza mediante tres tipos de funciones: las del host
que sólo pueden ser ejecutadas por la CPU, las del kernel, que son invocadas por
el host pero se ejecutan exclusivamente en el device y las del device que
únicamente pueden ser llamadas y ejecutadas por la GPU. Estos niveles de
procesamiento han permitido a los investigadores que hacen uso de GPGPU con
CUDA como API de programación, desarrollar algoritmos bio-inspirados
implementando los más comunes modelos de cómputo paralelo como maestro-
esclavo, grano fino, grano grueso y otros que resultan de la combinación de los
anteriores .
25
El modelo maestro-esclavo por ejemplo ha sido usado en algoritmos evolutivos
(EAs) donde la evaluación de la función de aptitud resulta bastante costosa en
términos computacionales, y por tal razón, los cálculos asociados a dicha función
son realizados por el esclavo (GPU) mientras que el resto del algoritmo se ejecuta
en el maestro (CPU). Para modelos de grano fino se han realizado propuestas
relacionadas con la implementación de algoritmos genéticos celulares (cGA) en
donde el total del proceso evolutivo sea ejecutado en la GPU y solamente en la
CPU se realice la generación de números aleatorios (Arenas, Mora, Romero, &
Castillo, 2012).
Finamente entre los modelos híbridos podemos resaltar el trabajo realizado por
Poveda, García y Cárdenas (Poveda, García & Cárdenas, 2014) en el que se
realiza una implementación paralela de un algoritmo basado en GRISLAND
(Poveda, Gómez & León, 2009) (Poveda, Buitrago, & Pupiales, 2012) para la
solución de TSP, donde se combinan los modelos de granularidad fina (grillas) y
granularidad gruesa (islas) empleando un sistema de comunicación basado en el
paso de mensajes de tipo maestro-esclavo
26
2.3. Quimiotaxis de bacterias
La quimiotaxis es la respuesta motora de las células a las diferentes
concentraciones de sustancias químicas que se encuentran en el ambiente, de tal
forma que pueden ser atraídas o repelidas en virtud de la composición química en
la que se encuentren inmersas (Stock & Baker, 2009).
Un ejemplo de este comportamiento es el que se puede observar en la bacteria
Escherichia Coli (E. Coli), la cual es una de los microorganismos más estudiados y
mejor comprendidos (Passino, 2002). Estas bacterias cuentan con una serie de
flagelos ubicados sobre la superficie celular, los cuales les permiten moverse en el
ambiente en búsqueda de altas concentraciones de nutrientes (o atrayentes) y
disminuir su exposición a sustancias nocivas (o repelentes).
El sistema de control motor de la E. Coli le permite moverse de dos formas: si los
flagelos giran en el sentido de las manecillas de reloj, entonces las bacterias
realizan cambios de dirección en su posición, por el contrario, si la rotación de los
flagelos es en contra de las manecillas del reloj, entonces las bacterias nadan en
una dirección de forma regular por un periodo de tiempo (figura 5a). Estos
movimientos son constantemente alternados por la E. Coli (figura 5b), de tal forma
que es muy extraño que dichos flagelos no se encuentren en continuo movimiento
(Passino, 2002).
27
Figura 5 Patrón de movimientos del comportamiento quimiotáctico de la bacteria E. Coli.
Fuente Biomimicry of bacterial foraging for distributed optimization and control, Passino 2002
Puesto que la E. Coli se encuentra en constante movimiento, debe realizar
comparaciones del ambiente que la rodea respecto a la experiencia previa, y a
partir del resultado obtenido determina la dirección en la que deben rotar los
flagelos: si se establece un aumento en el gradiente de concentración del
atrayente, entonces el movimiento de nado prevalece sobre los giros y este se
realiza en dirección al aumento de concentración, por otra parte, si se determina
una disminución en el gradiente del atrayente, entonces la bacteria tiende a
realizar más cambios de dirección que desplazamientos (Amos, Hodgson, &
Gibbons, 2007). Este mecanismo de evaluación del entorno implica algún tipo de
memoria que permita establecer si las condiciones actuales son mejores o peores
que las anteriores, y actuar conforme a la información obtenida respondiendo de
forma adecuada a los cambios en la concentración de los atrayentes o repelentes,
28
en lugar de limitar su respuesta a la concentración absoluta de los mismos
(Guzmán & De Carvalho, 2010). Esto permite que la bacteria no permanezca
estática en un solo lugar, sino que siempre se encuentre en la búsqueda de
mayores concentraciones de atrayentes. Dicha búsqueda puede ser vista como un
continuo proceso de optimización de recursos (Passino, 2002).
El comportamiento de la E. Coli visto como un proceso de optimización fue
modelado inicialmente por Bremermann a comienzos de 1970, y posteriormente
se realizaron trabajos basados en esta implementación, los cuales fueron
aplicados al diseño de alerones y a la maximización de los beneficios obtenidos de
los bioreactores (Guzmán & De Carvalho, 2010).
En un trabajo posterior, Passino realiza una modificación al diseño original de
Bremermann, y toma en cuenta los diferentes comportamientos asociados al
forrajeo de bacterias: la quimiotaxis (movimientos de giro y nado), el
agrupamiento, la reproducción y la eliminación-dispersión de las bacterias,
además de los procesos comunicación que ellas realizan, de tal forma, que el
comportamiento de forrajeo se encuentre asociado a la colonia en lugar del simple
comportamiento de individuos aislados. A este trabajo se le conoce en la literatura
con el nombre de algoritmo de optimización multi-objetivo de quimiotaxis de
bacterias (Bacterial Chemotaxis Multiobjetive Optimization Algorithm,BCMOA)
(Guzmán & De Carvalho, 2010).
El funcionamiento secuencial del algoritmo se encuentra presente en la siguiente
descripción (en muchas de estas líneas se observa la importancia y necesidad de
una implementación paralela)
29
Notación:
𝑝 ∶ 𝐷𝑖𝑚𝑒𝑛𝑠𝑖ó𝑛 𝑑𝑒𝑙 𝑝𝑟𝑜𝑏𝑙𝑒𝑚𝑎.
𝑘 ∶ Í𝑛𝑑𝑖𝑐𝑒 𝑑𝑒 𝑣𝑎𝑟𝑖𝑎𝑏𝑙𝑒𝑠. 1 ≤ 𝑘 ≤ 𝑝
𝑆 ∶ 𝑛ú𝑚𝑒𝑟𝑜 𝑑𝑒 𝑏𝑎𝑐𝑡𝑒𝑟𝑖𝑎𝑠.
𝐶𝐻𝑆𝑚𝑎𝑥 ∶ 𝑛ú𝑚𝑒𝑟𝑜 𝑚á𝑥𝑖𝑚𝑜 𝑑𝑒 𝑝𝑎𝑠𝑜𝑠 𝑞𝑢𝑖𝑚𝑖𝑜𝑡𝑎𝑐𝑡𝑖𝑐𝑜𝑠.
𝑏𝑖(𝑗): 𝑏𝑎𝑐𝑡𝑒𝑟𝑖𝑎 𝑖 𝑒𝑛 𝑒𝑙 𝑝𝑎𝑠𝑜 𝑞𝑢𝑖𝑚𝑖𝑜𝑡𝑎𝑐𝑡𝑖𝑐𝑜 𝑗. 1 ≤ 𝑖 ≤ 𝑆; 1 ≤ 𝑗 ≤ 𝐶𝐻𝑆𝑚𝑎𝑥
𝜃𝑖 (𝑗): 𝑢𝑏𝑖𝑐𝑎𝑐𝑖ó𝑛 𝑑𝑒 𝑐𝑎𝑑𝑎 𝑏𝑎𝑐𝑡𝑒𝑟𝑖𝑎. 𝜃𝑖(𝑗) ∈ ℝ𝑝
Secuencia del algoritmo:
1. Se inicializa la población. Se inicializa j=1.
2. Se inicializa 𝜃𝑖(𝑗) con números reales aleatorios dentro del espacio de
decisión.
3. 𝑏𝑖(𝑗) 𝑦 𝜃𝑖(𝑗) se almacenan en una lista denominada BAC.
4. Se actualizan los parámetros 𝐿𝑇𝑘(𝑗), 𝑆𝑇𝑘(𝑗), 𝑆𝑊𝑘 (𝑗) de acuerdo a las
siguientes ecuaciones:
a. 𝐹𝐴𝐶(𝑗) = (𝐶𝐻𝑆𝑚𝑎𝑥−𝑗)
𝐶𝐻𝑆𝑚𝑎𝑥. FAC decrece linealmente desde uno hasta cero
en cada paso quimiotactico.
b. 𝐿𝑇𝑘 = 1
𝑠 (max(𝑃𝑂𝐹1(𝑗)))
𝑘− min(𝑃𝑂𝐹1(𝑗))𝑘) 𝐹𝑎𝑐(𝑗) : determina el
giro largo.
c. 𝑆𝑇𝑘(𝑗) = 0.1 ∗ 𝐿𝑇𝑘(𝑗) : determina el giro corto.
30
d. 𝑆𝑊𝑘(𝑗) = (𝜃𝑘(𝑗)𝑠𝑡𝑟𝑜𝑛𝑔 − 𝜃𝑘(𝑗)𝑤𝑒𝑎𝑘) ∗ 𝐹𝑎𝑐(𝑗) : Determina la longitud
del nado.
5. Para cada bacteria 𝑏𝑖(𝑗) en la lista BAC se evalúa 𝐽(𝜃𝑖(𝑗)) que denota el
costo (los valores asociados a las funciones objetivo) en su actual ubicación
y lo almacena en una lista llamada ObjFunVal.
6. Se clasifican la ubicación de todas las bacterias utilizando el concepto de
no dominancia sobre 𝐽(𝜃𝑖(𝑗)). Se almacena cada bacteria que fue
clasificada como no dominada en una lista 𝑃𝑂𝐹1(𝑗), y se almacenan todas
las bacterias dominadas en la lista Bacdom.
7. Para cada bacteria en 𝑃𝑂𝐹1(𝑗) se genera un vector Δ𝑖(𝑗) ∈ ℝ𝑝 en el que
cada elemento △𝑘𝑖 , 1 ≤ 𝑘 ≤ 𝑝, es un numero aleatorio entre [-1, 1].
8. Para cada bacteria en 𝑃𝑂𝐹1(𝑗), se compara sus valores objetivos actuales
𝐽(𝜃𝑖(𝑗)) con los valores previos 𝐽(𝜃𝑖(𝑗))𝑝𝑟𝑒𝑣 almacenados en 𝑂𝑏𝑗𝐹𝑢𝑛𝑉𝑎𝑙𝑝𝑟𝑒𝑣
por concepto de no dominancia. Si j = 1, entonces 𝑂𝑏𝑗𝐹𝑢𝑛𝑉𝑎𝑙 =
𝑂𝑏𝑗𝐹𝑢𝑛𝑉𝑎𝑙𝑝𝑟𝑒𝑣.
9. Si 𝑗 ≤ 𝐶𝐻𝑆𝑚𝑎𝑥 , 𝑗 = 𝑗 + 1 y retorne al paso 3; en otro caso, se detiene el
algoritmo.
2.3.1. Efecto del tamaño de la población y el número de pasos quimiotácticos
Uno de los aspectos a tener en cuenta en la definición de los algoritmos basados
en quimiotaxis de bacterias, es que el número de individuos que conforman la
población influye en gran medida en la exploración del espacio de búsqueda, del
tal forma que si se aumenta considerablemente el tamaño dela población, y
31
además, la inicialización de su posición es aleatoria, es altamente probable que
desde el inicio algunas bacterias se encuentren cerca de los valores óptimos de la
solución problema y por lo tanto, en ejecuciones posteriores otras bacterias se
verán afectadas y tenderán hacia dichos valores. Sin embargo, el aumento de
población implica un incremento en la complejidad computacional, que se puede
reflejar en una mayor demanda de recursos y aumentar significativamente los
tiempos de cómputo.
Otro parámetro a tener en cuenta en la implementación, es el número de pasos
quimiotácticos, dado que si este es muy pequeño, las bacterias no tendrán la
posibilidad de converger a valores cercanos al óptimo global, y probablemente
muchas de ellas queden confinadas a óptimos locales. Por otra parte, si se
asignan valores muy grandes se incrementa la complejidad computacional y el
tiempo total de ejecución del algoritmo.
Por lo tanto, aumentos tanto en la población como en el número de pasos
quimiotácticos pueden tener efectos desastrosos en la ejecución del algoritmo,
razón por la cual, dichos parámetros deben ser ajustados a partir de los resultados
obtenidos con tamaño moderado de estos parámetros en una implementación
básica del algoritmo.
32
3. DISEÑO
En este capítulo de describen los diferentes elementos que fueron relevantes en el
diseño y el desarrollo de la versión paralela del algoritmo BCMOA (PBCMOA) y la
descripción de su funcionamiento.
3.1. Arquitectura.
Para la implementación y pruebas del algoritmo se utilizó un computador con las
siguientes características:
Computador Intel Core i7, 16 GB ddr3 RAM, 1000 GB DD, tarjeta gráfica
PNY 770 4GB OC con 1536 núcleos CUDA.
Este equipo contaba con el siguiente software instalado:
Sistema Operativo Windows 7 Professional.
Visual Studio 2013 Ultimate.
Cuda Toolkit 6.5.
3.2. Diseño lógico del algoritmo.
En este trabajo se realiza la implementación de la versión paralela sobre GPU del
algoritmo BCMOA (PBCMOA) propuesto por Guzmán y Carvalho (Guzmán & De
Carvalho, 2010), por lo tanto el análisis de las modificaciones a formalizar parten
de la versión original del mismo, la cual se encuentra representada en el siguiente
diagrama:
33
Figura 6 Diagrama de algoritmo BCMOA original (Guzmán & De Carvalho, 2010).
Fuente elaboración propia.
35
Figura 8: Actualización de posiciones de bacterias débiles en BCMOA.
Fuente elaboración propia.
Una de las premisas que se deben tener en cuenta a la hora de trabajar en GPU’s
es que se les debe entregar la mayor cantidad de trabajo posible y evitar pasos de
36
información innecesarios entre la CPU y la GPU debido a la latencia en esta
última.
Teniendo en cuenta lo anterior, se puede observar en los diagramas (figuras 6, 7 y
8) que existen instrucciones que son realizadas de forma recurrente en las
bacterias presentes en el algoritmo (definidas como <<iterative>>), sin embargo
dos de ellas son de especial interés para una implementación de cálculo paralelo:
las áreas 1 y 2, (figura 6) dado que en cada caso un mismo conjunto de
instrucciones es ejecutado sobre la totalidad de las bacterias, lo cual nos permite
trabajar con un mayor número de bacterias en paralelo. Las otras áreas de
instrucciones recurrentes solo actúan sobre alguna parte de la población de
bacterias dependiendo de los resultados de las evaluaciones del algoritmo. Esto
permite determinar que una estrategia de procesamiento maestro-esclavo como la
propuesta por Pattnaik, Bakwad, Devil, Panigrahi y Das (Pattnaik, Bakwad, Devil,
Panigrahi & Das, 2011) para el desarrollo de algoritmos paralelos basados en
forrajeo de bacterias, se ajusta mejor a las características descritas para el diseño,
aunque de los 3 componentes considerados por los autores: comportamiento
quimiotáctico, reproducción y eliminación-dispersión, los dos últimos no son
tenidos en cuenta ya que el algoritmo BCMOA sólo contempla el primero de ellos.
37
Figura 9. Evaluación de la función de aptitud mediante cálculos paralelos.
Fuente Parallel Bacterial Foragin Optimization, Pattnaik 2011.
Pattnaik et al. proponen que cada nodo esclavo (el número de nodos debe ser
igual al número de bacterias presentes en el algoritmo) represente una bacteria y
sea responsable de realizar la evaluación de la función de aptitud (que en el caso
del presente trabajo corresponde con la evaluación de no dominancia), y mediante
un proceso adicional se sincronicen los hilos de modo que todos los resultados de
las evaluaciones estén disponibles antes de realizar un nuevo paso quimiotáctico
(Figura 9). Esta estrategia que corresponde con el área 2 de la figura 6, se
implementa en la GPU asumiendo que cada hilo es una bacteria y por lo tanto
ejecutan de forma paralela el conjunto de instrucciones necesarias para efectuar la
evaluación de no dominancia. La sincronización de los hilos se efectúa mediante
la instrucción __threadfence() que permite asegurar que los datos que escriben
cada uno de ellos, se encuentren disponible para los demás hilos de la grilla.
38
Figura 10. Evaluación en paralelo de función de aptitud.
Fuente elaboración propia
Por otra parte, las evaluaciones de las funciones objetivo que no son tenidas en
cuenta por Pattnaik et al. para un procesamiento paralelo, fueron incluidas como
una modificación a su propuesta en el presente trabajo. Para ello, en la
implementación del PBCMOA se diseñó una estrategia que permitió a cada hilo
realizar la evaluación de sus funciones objetivo correspondientes, sincronizar sus
resultados, ejecutar la evaluación de no dominancia y finalmente registrar su
resultado en la memoria global del dispositivo.
39
Figura 11. Calculo paralelo de función de aptitud y funciones objetivo.
Fuente elaboración propia.
Las instrucciones restantes en el PBCMOA son realizadas en la CPU una vez que
los datos son copiados desde la GPU, y el proceso se repite hasta que se
complete la totalidad de los pasos quimiotáctictos. Como respuesta se obtiene el
conjunto de valores que corresponden con aquellas bacterias que fueron
clasificadas como no dominadas, es decir, las que conforman el frente de Pareto.
40
3.3. Evaluación paralela por criterio de no dominancia.
Para el presente trabajo como base para diseño de la evaluación paralela por
criterio de no dominancia se tomó la propuesta serial realizada por Deb (Deb K. ,
1999):
Paso 0: inicializar i = 1.
Paso 1: para todo 𝑗 ≠ 𝑖, se comparan las soluciones 𝑥(𝑖) y 𝑥(𝑗) por dominancia
para todos los M objetivos, usando para ello las siguientes condiciones:
1. La solución 𝑥(𝑖) no es peor que 𝑥(𝑗) en todos los M objetivos.
2. La solución 𝑥(𝑖) es estrictamente mejor que 𝑥(𝑗) en al menos un objetivo.
Paso 2: si para cualquier j, 𝑥(𝑖) es dominado por 𝑥(𝑗), se marca 𝑥(𝑖) como
“dominado”, se incrementa i en uno y salta al paso 1.
Paso 3: si todas las soluciones (i = N) han sido evaluadas, entonces se debe ir al
paso 4, en caso contrario, se debe ir al paso 1.
Paso 4: Todas las soluciones que no son marcadas como “dominadas” son
entonces soluciones no-dominadas y conforman el frente de Pareto que es la
solución al problema de optimización multi-objetivo.
3.4. Problemas de prueba.
En la siguiente tabla se describen los problemas implementados para la
optimización multi-objetivo (minimización en todos los casos) con el algoritmo
PBCMOA:
41
Nombre P Espacio Funciones objetivo
SCH 1 [−103, 103] 𝑓1(𝑥) = 𝑥2
𝑓2(𝑥) = (𝑥 − 2)2
POL 2 [-π, π] 𝑓1(𝑥) = [1 + (𝐴1 − 𝐵1)2 + (𝐴2 − 𝐵2)2]
𝑓2(𝑥) = [(𝑥1 + 3)2 + (𝑥2 + 1)2]
𝐴1 = 0.5 sin(1) − 2 cos(1) + sin(2) − 1.5 cos(2)
𝐴2 = 1.5 sin(1) − cos(1) + sin(2) − 1.5 cos(2)
𝐵1 = 0.5 sin(𝑥1) − 2 cos(𝑥1) + sin(𝑥2) − 1.5 cos(𝑥2)
𝐵2 = 1.5 sin(𝑥1) − cos(𝑥1) + 2sin(𝑥2) − 0.5 cos(𝑥2)
ZDT1 30 [0,1] 𝑓1(𝑥) = 𝑥
𝑓2(𝑥) = 𝑔(𝑥) ∗ [1 − √𝑥1
𝑔(𝑥)]
𝑔(𝑥) = 1 + 9 ∗ ∑ 𝑥𝑖
𝑛𝑖=2
(𝑛 − 1)
Tabla 1. Resumen de problemas multi-objetivo utilizados para pruebas.
42
4. ANÁLISIS Y RESULTADOS.
Se efectuaron 10 ejecuciones independientes con 100 bacterias y 100 pasos
quimiotácticos para cada uno de los 3 problemas descritos en el capítulo anterior,
y se realizaron comparaciones entre los frentes de Pareto obtenidos por el
algoritmo PBCMOA (PFKnow) y los frentes de Pareto reales (PFTrue)
referenciados por Coello, Lamont y Van Veldhuizen (Coello, Lamont, & Van
Veldhuizen, 2007) mediante el uso de las métricas de diversidad (Deb, Pratap,
Agarwal, & Meyarivan, 2002), convergencia y distancia generacional (Li, Tang,
Tang, Wu, & Saunders, 2007).
Las figuras 12, 14 y 16 muestran los frentes de Pareto obtenidos por el algoritmo
PBCMOA, donde la línea continua representa los datos asociados al PFTrue y las
marcas en el diagrama simbolizan las soluciones del PFKnow. En las figuras 13,
15 y 17 se encuentran los resultados obtenidos y reportados por Guzmán y
Carvalho (Guzmán & De Carvalho, 2010).
Por otra parte se pueden apreciar en las tablas 2, 3 y 4 los valores para la media
y varianza de las 3 métricas empleadas en este trabajo: convergencia, distancia
generacional y dispersión. En todas las métricas mencionadas valores más
pequeños son preferidos e indican un mejor desempeño del algoritmo en la
característica analizada.
SCH ZDT1
PBCMOA
Media 3.21 × 10−3 1.03 × 10−3
Varianza 2.73 × 10−8 5.48 × 10−8
BCMOA
Media 3.28 × 10−3 1.19 × 10−3
43
Varianza 2.16 × 10−8 6.27 × 10−8
NSGA-II
Media 3.14 × 10−3 4.02 × 10−3
Varianza 4.64 × 10−8 3.14 × 10−8
Tabla 2. Resultados de convergencia métrica.
SCH ZDT1
PBCMOA
Media 3.75 × 10−4 1.87 × 10−4
Varianza 2.35 × 10−10 5.21 × 10−9
BCMOA
Media 3.78 × 10−4 2.02 × 10−4
Varianza 1.57 × 10−10 3.64 × 10−9
NSGA-II
Media 3.68 × 10−4 5.56 × 10−4
Varianza 3.45 × 10−10 7.95 × 10−9
Tabla 3. Resultados de distancia generacional.
SCH ZDT1
PBCMOA
Media 7.07 × 10−1 4.02 × 10−1
Varianza 1.35 × 10−3 2.66 × 10−3
BCMOA
Media 7.60 × 10−1 5.98 × 10−1
Varianza 1.00 × 10−3 4.10 × 10−3
NSGA-II
Media 3.82 × 10−1 4.06 × 10−1
Varianza 1.00 × 10−3 1.26 × 10−3
Tabla 4. Resultados de diversidad.
44
Figura 12. Conjunto de soluciones no dominadas para el problema SCH resuelto con PBCMOA.
Fuente elaboración propia.
Figura 13. Conjunto de soluciones para el problema SCH resuelto con BCMOA.
Fuente A novel multiobjective optimization algorithm based on bacterial chemotaxis, Guzmán & De Carvalho
2010.
0,0
0,5
1,0
1,5
2,0
2,5
3,0
3,5
4,0
4,5
0,0 0,5 1,0 1,5 2,0 2,5 3,0 3,5 4,0 4,5
Ob
jeti
vo 2
Objetivo 1
SCH: soluciones no dominadas.
PFtrue
PFKnow
45
En la figura 12 se observa el PFKnow generado por el algoritmo PBCMOA, en
donde se aprecia que las soluciones se encuentran ubicadas sobre el PFTrue y se
distribuyen a lo largo del mismo, con algunas excepciones en regiones muy
pequeñas en donde no existen valores del PFKnow sobre la línea del PFTrue, sin
embargo, esta distribución mejora a primera vista las soluciones reportadas para
el algoritmo BCMOA (figura 13). Las medias obtenidas para las diferentes métricas
de análisis confirman esta apreciación inicial, comprobando en la tabla 2 mejores
valores en cuanto la proximidad de los datos del PFKnow obtenidos por el
PBCMOA (3.21 × 10−3) respecto al algoritmo original (3.28 × 10−3), mejor
diversidad métrica de todos los resultados considerando los puntos extremos del
PFTrue (7.07 × 10−1 respecto a 7.60 × 10−1 en la tabla 4) y mayor cercanía en
promedio de los datos del PFKnow y el PFTrue.
Figura 14. Conjunto de soluciones no dominadas para el problema POL resuelto con PBCMOA.
Fuente elaboración propia.
0
5
10
15
20
25
30
0 2 4 6 8 10 12 14 16 18
Ob
jeti
vo 2
Objetivo 1
POL: Soluciones no dominadas
PFtrue
PFKnow
46
Figura 15. Conjunto de soluciones no dominadas para el problema POL resuelto con BCMOA.
Fuente A novel multiobjective optimization algorithm based on bacterial chemotaxis, Guzmán & De Carvalho
2010.
Para el problema POL las dos gráficas presentan PFKnow similares, resaltando la
discontinuidad de salto que se produce en el valor 2 del eje horizontal. Para este
problema, no se encuentran reportes de las métricas utilizadas por lo tanto estas
no se calcularon debido a que no se pueden comparar los resultados obtenidos.
47
Figura 16. Conjunto de soluciones no dominadas para el problema ZDT1 resuelto con PBCMOA.
Fuente elaboración propia.
Figura 17. Conjunto de soluciones no dominadas para el problema ZDT1 resuelto con BCMOA.
Fuente A novel multiobjective optimization algorithm based on bacterial chemotaxis, Guzmán & De Carvalho
2010.
0
0,2
0,4
0,6
0,8
1
1,2
0 0,2 0,4 0,6 0,8 1 1,2
Ob
jeti
vo 2
Objetivo 1
ZDT1: Soluciones no dominadas
PFtrue
PFKnow
48
Las figuras 16 y 17 muestran las gráficas de los PFKnow para PBCMOA y BCMOA
respectivamente. En la primera de estas se observa una distribución más uniforme
de los valores del PFKnow, incluyendo los puntos extremos con apenas algunas
áreas sin abarcar del PFTrue, las cuales son más numerosas en la figura 17.
Número de bacterias
Tiempo de ejecución (seg)
10000 4.075000
20000 14.507
50000 63.605
Tabla 5. Tiempos de ejecución SCH.
En cuanto a los tiempos de ejecución de los diferentes problemas, solo se pudo
tener en cuenta los tomados en las diferentes ejecuciones del algoritmo PBCMOA,
ya que en la literatura no se encuentran referencias a esta variable de análisis.
En pruebas realizadas con el problema SCH para una implementación del BCMOA
en Matlab sobre la misma configuración de hardware utilizada en este trabajo, se
asignaron 1000 bacterias y 100 pasos quimiotácticos y los resultados mostraron
que los tiempos de respuesta fueron superiores a los 180 segundos, cifra que
excede por mucho los 63.605 segundos empleados por el PBCMOA para
solucionar el mismo problema con 50000 bacterias, lo cual indica un mejor
desempeño de este algoritmo en problemas que involucran grandes números de
variables.
49
5. CONCLUSIONES Y TRABAJO FUTURO.
Los resultados obtenidos con la implementación del algoritmo PBCMOA muestran
una mejora respecto a los presentados por la versión serial. En cuanto al tiempo
de ejecución, si bien solo fue posible realizar una comparación para un solo
problema de prueba (SCH) los resultados mostraron que el desempeño del
PBCMOA es muy superior a los de la versión serial, lo cual permite considerar que
la implementación paralela realizada reduce los tiempos de solución de problemas
de optimización multi-objetivo sin perder calidad en las respuestas entregadas; sin
embargo, es necesario realizar más pruebas para confirmar este supuesto.
Con el fin de buscar un mejor rendimiento del algoritmo, se plantea como trabajo
futuro la implementación completa del proceso de forrajeo de bacterias,
adicionando los pasos de eliminación–dispersión y reproducción tal como
proponen Pattnaik et al, de tal forma que se mejore la convergencia del PFKnow
para obtener resultados similares a los que se han reportado para el algoritmo
NSGA-II.
Por otra parte, es importante buscar variaciones que permitan establecer
estrategias de paralelismo dinámico en el procesamiento de los diferentes bloques
y grillas que se generan en la GPU, de tal forma que al adicionar pasos como la
reproducción se incorporen heurísticas de variación de la población tales como la
mutación y el cruce, para garantizar una mejor convergencia y distribución de la
población de bacterias.
50
Finalmente se hace necesaria la exploración con diferentes tipos de problemas
que puedan ser representados como una optimización multi-objetivo, como
algunas variaciones que se encuentran en la literatura del problema del agente
viajero (TSP) o del problema de la mochila (Knapsack), para determinar el
desempeño del algoritmo PBCMOA con grandes número de variables a utilizar.
51
6. REFERENCIAS
Amos, M., Hodgson, D., & Gibbons, A. (2007). Bacterial self-organisation and
computation. International Journal of Unconventional Computing, 199–210.
Arenas, M., Mora, M., Romero, G., & Castillo, P. (2012). GPU Computation in
Bioinformatics. A Review. Advances in Intelligent Modelling and Simulation, 433–
440.
Banerjee, I., & Prasun, D. (2010). Evolutionary Multi-Objective Bacterial Swarm
Optimization (MOBSO): A Hybrid Approach . Springer, 568-572.
Bonaveau, E., Therauluz, G., & Dorigo, M. (1999). Swarm Intelligence: From Natural to
Artificial System. NC: Oxford University Press.
Cáceres, E., Fingler, H., Mongelli, H., & Song, S. (2012). Ant Colony System Based
Solutions to the Quadratic Assignment Problem on GPGPU. International
Conference on Parallel Processing Workshops, 314–322.
Cecilia, J., García, J., Ujaldón, M., Nisbet, A., & Amos, M. (2011). Parallelization strategies
for Ant Colony Optimisation on GPUs. IEEE International Symposium on Parallel
and Distributed Processing Workshops and Phd Forum, 339–346.
Chen, H., Zhu, Y., Hu, K., & Ma, L. (2014). Bacterial colony foraging algorithm: Combining
chemotaxis, cell-to-cell communication, and self-adaptive strategy. Information
Sciences, 73-100.
Coello, C. (2005). Applications of Multi-Objetive Evolutionary Algorithms. NJ: World
Scientific Publishing Company.
Coello, C. A., Lamont, G. B., & Van Veldhuizen, D. A. (2007). Evolutionary Algorithms for
Solving Multi-Objective Problems. New York: Springer.
Cook, S. (2013). CUDA Programming A Developer’s Guide to Parallel Computing with
GPUs. Elsevier.
Dawson, L., & Stewart, I. (2013). Improving Ant Colony Optimization performance on the
GPU using CUDA. IEEE Congress on Evolutionary Computation, 1901–1908.
De Castro, L., & Von Zuben, F. (2004). Recent Developments in Biologically Computing .
Hershey: Idea Group Publishing.
de Jong, K. A., Spears, W. M., & Gordon, D. F. (1994). Using Genetic Algorithms for
Concept Learning. En J. J. Grefenstette, Genetic Algorithms for Machine Learning
(págs. 5-32). Springer.
Deb, K. (1999). Multi-objective Genetic Algorithms Problem Difficulties and Construction of
Test Problems. Evolutionary Computation - Massachusetts Institute of Technology
, 205-230.
52
Deb, K. (2014). Multi-objective Optimization. En E. K. Burke, & G. Kendall, Search
Methodologies Introductory Tutorials in Optimization and Decision Support
Techniques (págs. 403-450). Springer.
Deb, K., Pratap, A., Agarwal, S., & Meyarivan, T. (2002). A Fast and Elitist Multiobjective
Genetic Algorithm: NSGA-II. IEEE Transactions on Evolutionary Computation, 182-
197.
Fogel, D. (1994). Introduction to simulated evolutionary optimization. En IEEE
Transactions on Neural Networks (págs. 3-14).
Guzmán, M., & De Carvalho, J. (2010). A novel multiobjective optimization algorithm
based on bacterial chemotaxis. Engineering Applications of Artificial Intelligence,
292–301.
Handl, J., Kell, D., & Knowles, J. (2007). Multiobjective optimization in bioinformatics and
computational biology. Transactions on Computational Biology and Bioinformatics,
279–291.
Krömer, P., Platoš, J., Snášel, V., & Abraham, A. (2013). Many-Threaded Differential
Evolution on the GPU. Massively Parallel Evolutionary Computation on GPGPUs,
105-120.
Li, M. S., Tang, W. J., Tang, W. H., Wu, Q. H., & Saunders, J. R. (2007). Bacterial
Foraging Algorithm with Varying for Optimal Power Flow. En Applications of
Evolutionary Computing (págs. 32-41). Berlin: Springer .
Müller, S. D., Marchetto, J., Airaghi, S., & Koumoutsakos, P. (2002). Optimization Based
on Bacterial Chemotaxis. IEEE TRANSACTIONS ON EVOLUTIONARY
COMPUTATION, VOL. 6, NO. 1, 16-29.
Nvidia. (29 de 04 de 2015). nvidia. Obtenido de
http://www.nvidia.com/object/cuda_home_new.html
Owens, J., Houston, M., Luebke, D., Green, S., Stone, J., & Phillips, J. (2008). GPU
Computing. Proceedings of the IEEE, 879–899.
Passino, K. (2002). Biomimicry of bacterial foraging for distributed optimization and
control. Control Systems, 52–67.
Pattnaik, S. S., Bakwad, K. M., Devil, S., Panigrahi, B. K., & Das, S. (2001). Parallel
Bacterial Foragin Optimization. Handbook of Swarm Intelligence - Springer, 487-
502.
Poveda, R. M., Buitrago, R. A., & Pupiales, A. (2012). Implementación en CUDA de un
algortimo genetico parálelo hibrido, basado en el algoritmo GRISLAND, para la
solución de problemas del agente viajero. Matecompu .
53
Poveda, R., García, O., & Cárdenas, E. (2014). Assignation Problems' Solutions by
Parallel and Distributed Genetic Algorithms. Applied Mathematical Sciences, 5185
- 5194.
Poveda, R., Gómez, J., & León, E. (2009). Grisland: a parallel genetic algorithm for finding
near optimal solutions to the traveling salesman problem. Proceedings of the 11th
Annual Conference Companion on Genetic and Evolutionary Computation
Conference, 2035-2040.
Stock, J. B., & Baker, M. D. (2009). Chemotaxis. En M. Schaechter, Encyclopedia of
Microbiology (Third Edition) (págs. 71-78). Academic Press.
Veronese, L., & Krohling, R. (2010). Differential Evolution Algorithm on the GPU with C-
CUDA . IEEE Congress on Evolutionary Computation, 1-7.
Zhou, Y., & Tan, Y. (2009). GPU-based parallel particle swarm optimization. IEEE
Congress on Evolutionary Computation, 1493–1500.
54
7. ANEXOS.
Anexo 1. SCH datos para frente de Pareto real.
Objetivo 1 Objetivo 2
3.999999997 5.8445758e-019
3.920399997 0.00040000003
3.841599997 0.001600000061
3.763599997 0.003600000092
3.686399997 0.006400000122
3.609999997 0.01000000015
3.534399997 0.01440000018
3.459599997 0.01960000021
3.385599997 0.02560000024
3.312399997 0.03240000028
3.239999997 0.04000000031
3.168399997 0.04840000034
3.097599997 0.05760000037
3.027599997 0.0676000004
2.958399997 0.07840000043
2.889999997 0.09000000046
2.822399997 0.1024000005
2.755599997 0.1156000005
2.689599997 0.1296000006
2.624399998 0.1444000006
2.559999998 0.1600000006
2.496399998 0.1764000006
2.433599998 0.1936000007
2.371599998 0.2116000007
2.310399998 0.2304000007
2.249999998 0.2500000008
2.190399998 0.2704000008
2.131599998 0.2916000008
2.073599998 0.3136000009
2.016399998 0.3364000009
1.959999998 0.3600000009
1.904399998 0.3844000009
1.849599998 0.409600001
1.795599998 0.435600001
1.742399998 0.462400001
55
1.689999998 0.4900000011
1.638399998 0.5184000011
1.587599998 0.5476000011
1.537599998 0.5776000012
1.488399998 0.6084000012
1.439999998 0.6400000012
1.392399998 0.6724000013
1.345599998 0.7056000013
1.299599998 0.7396000013
1.254399998 0.7744000013
1.209999998 0.8100000014
1.166399998 0.8464000014
1.123599998 0.8836000014
1.081599998 0.9216000015
1.040399998 0.9604000015
0.9999999985 1.000000002
0.9603999985 1.040400002
0.9215999985 1.081600002
0.8835999986 1.123600002
0.8463999986 1.166400002
0.8099999986 1.210000002
0.7743999987 1.254400002
0.7395999987 1.299600002
0.7055999987 1.345600002
0.6723999987 1.392400002
0.6399999988 1.440000002
0.6083999988 1.488400002
0.5775999988 1.537600002
0.5475999989 1.587600002
0.5183999989 1.638400002
0.4899999989 1.690000002
0.462399999 1.742400002
0.435599999 1.795600002
0.409599999 1.849600002
0.3843999991 1.904400002
0.3599999991 1.960000002
0.3363999991 2.016400002
0.3135999991 2.073600002
0.2915999992 2.131600002
0.2703999992 2.190400002
0.2499999992 2.250000002
56
0.2303999993 2.310400002
0.2115999993 2.371600002
0.1935999993 2.433600002
0.1763999994 2.496400002
0.1599999994 2.560000002
0.1443999994 2.624400002
0.1295999994 2.689600003
0.1155999995 2.755600003
0.1023999995 2.822400003
0.08999999954 2.890000003
0.07839999957 2.958400003
0.0675999996 3.027600003
0.05759999963 3.097600003
0.04839999966 3.168400003
0.03999999969 3.240000003
0.03239999972 3.312400003
0.02559999976 3.385600003
0.01959999979 3.459600003
0.01439999982 3.534400003
0.009999999847 3.610000003
0.006399999878 3.686400003
0.003599999908 3.763600003
0.001599999939 3.841600003
0.00039999996 3.920400003
5.8445980e-019 4.000000003
9.9999984e-005 3.960100003
0.000899999951 3.880900003
0.002499999924 3.802500003
0.004899999893 3.724900003
0.008099999862 3.648100003
0.01209999983 3.572100003
0.0168999998 3.496900003
0.02249999977 3.422500003
0.02889999974 3.348900003
0.03609999971 3.276100003
0.04409999968 3.204100003
0.05289999965 3.132900003
0.06249999962 3.062500003
0.07289999959 2.992900003
0.08409999956 2.924100003
0.09609999953 2.856100003
57
0.1088999995 2.788900003
0.1224999995 2.722500003
0.1368999994 2.656900002
0.1520999994 2.592100002
0.1680999994 2.528100002
0.1848999993 2.464900002
0.2024999993 2.402500002
0.2208999993 2.340900002
0.2400999993 2.280100002
0.2600999992 2.220100002
0.2808999992 2.160900002
0.3024999992 2.102500002
0.3248999991 2.044900002
0.3480999991 1.988100002
0.3720999991 1.932100002
0.396899999 1.876900002
0.422499999 1.822500002
0.448899999 1.768900002
0.4760999989 1.716100002
0.5040999989 1.664100002
0.5328999989 1.612900002
0.5624999989 1.562500002
0.5928999988 1.512900002
0.6240999988 1.464100002
0.6560999988 1.416100002
0.6888999987 1.368900002
0.7224999987 1.322500002
0.7568999987 1.276900002
0.7920999986 1.232100002
0.8280999986 1.188100002
0.8648999986 1.144900002
0.9024999985 1.102500002
0.9408999985 1.060900002
0.9800999985 1.020100002
1.020099998 0.9801000015
1.060899998 0.9409000015
1.102499998 0.9025000015
1.144899998 0.8649000014
1.188099998 0.8281000014
1.232099998 0.7921000014
1.276899998 0.7569000013
58
1.322499998 0.7225000013
1.368899998 0.6889000013
1.416099998 0.6561000012
1.464099998 0.6241000012
1.512899998 0.5929000012
1.562499998 0.5625000011
1.612899998 0.5329000011
1.664099998 0.5041000011
1.716099998 0.4761000011
1.768899998 0.448900001
1.822499998 0.422500001
1.876899998 0.396900001
1.932099998 0.3721000009
1.988099998 0.3481000009
2.044899998 0.3249000009
2.102499998 0.3025000008
2.160899998 0.2809000008
2.220099998 0.2601000008
2.280099998 0.2401000007
2.340899998 0.2209000007
2.402499998 0.2025000007
2.464899998 0.1849000007
2.528099998 0.1681000006
2.592099998 0.1521000006
2.656899998 0.1369000006
2.722499997 0.1225000005
2.788899997 0.1089000005
2.856099997 0.09610000047
2.924099997 0.08410000044
2.992899997 0.07290000041
3.062499997 0.06250000038
3.132899997 0.05290000035
3.204099997 0.04410000032
3.276099997 0.03610000029
3.348899997 0.02890000026
3.422499997 0.02250000023
3.496899997 0.0169000002
3.572099997 0.01210000017
3.648099997 0.008100000138
3.724899997 0.004900000107
3.802499997 0.002500000076
60
Anexo 2. ZDT1: datos para frente de Pareto real
Objetivo 1 Objetivo2
0.0000000000000 1.0000000000000
0.0020040080160 0.9552338518964
0.0040080160321 0.9366911062167
0.0060120240481 0.9224627570254
0.0080160320641 0.9104677037928
0.0100200400802 0.8998998497496
0.0120240480962 0.8903457793964
0.0140280561122 0.8815599049636
0.0160320641283 0.8733822124334
0.0180360721443 0.8657015556892
0.0200400801603 0.8584370099202
0.0220440881764 0.8515274834309
0.0240480961924 0.8449255140509
0.0260521042084 0.8385933576075
0.0280561122244 0.8325004112708
0.0300601202405 0.8266214539210
0.0320641282565 0.8209354075857
0.0340681362725 0.8154244429169
0.0360721442886 0.8100733186501
0.0380761523046 0.8048688843249
0.0400801603206 0.7997996994991
0.0420841683367 0.7948557377437
0.0440881763527 0.7900281534284
0.0460921843687 0.7853090957475
0.0480961923848 0.7806915587927
0.0501002004008 0.7761692594821
0.0521042084168 0.7717365372714
0.0541082164329 0.7673882710763
0.0561122244489 0.7631198099273
0.0581162324649 0.7589269146816
0.0601202404810 0.7548057087105
0.0621242484970 0.7507526359277
0.0641282565130 0.7467644248668
0.0661322645291 0.7428380577748
0.0681362725451 0.7389707438905
0.0701402805611 0.7351598962371
0.0721442885772 0.7314031113785
61
0.0741482965932 0.7276981516897
0.0761523046092 0.7240429297713
0.0781563126253 0.7204354946971
0.0801603206413 0.7168740198405
0.0821643286573 0.7133567920614
0.0841683366733 0.7098822020741
0.0861723446894 0.7064487358409
0.0881763527054 0.7030549668619
0.0901803607214 0.6996995492487
0.0921843687375 0.6963812114880
0.0941883767535 0.6930987508114
0.0961923847695 0.6898510281018
0.0981963927856 0.6866369632749
0.1002004008016 0.6834555310835
0.1022044088176 0.6803057572967
0.1042084168337 0.6771867152150
0.1062124248497 0.6740975224861
0.1082164328657 0.6710373381891
0.1102204408818 0.6680053601611
0.1122244488978 0.6650008225416
0.1142284569138 0.6620229935131
0.1162324649299 0.6590711732196
0.1182364729459 0.6561446918457
0.1202404809619 0.6532429078419
0.1222444889780 0.6503652062824
0.1242484969940 0.6475109973432
0.1262525050100 0.6446797148909
0.1282565130261 0.6418708151713
0.1302605210421 0.6390837755904
0.1322645290581 0.6363180935789
0.1342685370741 0.6335732855343
0.1362725450902 0.6308488858338
0.1382765531062 0.6281444459118
0.1402805611222 0.6254595333983
0.1422845691383 0.6227937313110
0.1442885771543 0.6201466373002
0.1462925851703 0.6175178629395
0.1482965931864 0.6149070330604
0.1503006012024 0.6123137851272
0.1523046092184 0.6097377686498
0.1543086172345 0.6071786446303
62
0.1563126252505 0.6046360850425
0.1583166332665 0.6021097723410
0.1603206412826 0.5995993989982
0.1623246492986 0.5971046670677
0.1643286573146 0.5946252877711
0.1663326653307 0.5921609811082
0.1683366733467 0.5897114754874
0.1703406813627 0.5872765073772
0.1723446893788 0.5848558209745
0.1743486973948 0.5824491678912
0.1763527054108 0.5800563068567
0.1783567134269 0.5776770034359
0.1803607214429 0.5753110297607
0.1823647294589 0.5729581642755
0.1843687374749 0.5706181914951
0.1863727454910 0.5682909017741
0.1883767535070 0.5659760910883
0.1903807615230 0.5636735608251
0.1923847695391 0.5613831175854
0.1943887775551 0.5591045729937
0.1963927855711 0.5568377435170
0.1983967935872 0.5545824502928
0.2004008016032 0.5523385189642
0.2024048096192 0.5501057795223
0.2044088176353 0.5478840661564
0.2064128256513 0.5456732171099
0.2084168336673 0.5434730745429
0.2104208416834 0.5412834844009
0.2124248496994 0.5391042962888
0.2144288577154 0.5369353633504
0.2164328657315 0.5347765421526
0.2184368737475 0.5326276925753
0.2204408817635 0.5304886777047
0.2224448897796 0.5283593637317
0.2244488977956 0.5262396198545
0.2264529058116 0.5241293181844
0.2284569138277 0.5220283336560
0.2304609218437 0.5199365439406
0.2324649298597 0.5178538293632
0.2344689378758 0.5157800728225
0.2364729458918 0.5137151597142
63
0.2384769539078 0.5116589778569
0.2404809619238 0.5096114174210
0.2424849699399 0.5075723708606
0.2444889779559 0.5055417328470
0.2464929859719 0.5035194002059
0.2484969939880 0.5015052718554
0.2505010020040 0.4994992487478
0.2525050100200 0.4975012338124
0.2545090180361 0.4955111319007
0.2565130260521 0.4935288497337
0.2585170340681 0.4915542958504
0.2605210420842 0.4895873805594
0.2625250501002 0.4876280158906
0.2645290581162 0.4856761155495
0.2665330661323 0.4837315948731
0.2685370741483 0.4817943707868
0.2705410821643 0.4798643617629
0.2725450901804 0.4779414877810
0.2745490981964 0.4760256702887
0.2765531062124 0.4741168321648
0.2785571142285 0.4722148976823
0.2805611222445 0.4703197924743
0.2825651302605 0.4684314434990
0.2845691382766 0.4665497790079
0.2865731462926 0.4646747285130
0.2885771543086 0.4628062227570
0.2905811623246 0.4609441936825
0.2925851703407 0.4590885744036
0.2945891783567 0.4572392991781
0.2965931863727 0.4553963033795
0.2985971943888 0.4535595234714
0.3006012024048 0.4517288969818
0.3026052104208 0.4499043624779
0.3046092184369 0.4480858595426
0.3066132264529 0.4462733287506
0.3086172344689 0.4444667116464
0.3106212424850 0.4426659507217
0.3126252505010 0.4408709893942
0.3146292585170 0.4390817719872
0.3166332665331 0.4372982437089
0.3186372745491 0.4355203506333
64
0.3206412825651 0.4337480396810
0.3226452905812 0.4319812586004
0.3246492985972 0.4302199559504
0.3266533066132 0.4284640810822
0.3286573146293 0.4267135841229
0.3306613226453 0.4249684159585
0.3326653306613 0.4232285282182
0.3346693386774 0.4214938732586
0.3366733466934 0.4197644041483
0.3386773547094 0.4180400746534
0.3406813627255 0.4163208392229
0.3426853707415 0.4146066529747
0.3446893787575 0.4128974716819
0.3466933867735 0.4111932517595
0.3486973947896 0.4094939502515
0.3507014028056 0.4077995248181
0.3527054108216 0.4061099337237
0.3547094188377 0.4044251358245
0.3567134268537 0.4027450905570
0.3587174348697 0.4010697579269
0.3607214428858 0.3993990984974
0.3627254509018 0.3977330733788
0.3647294589178 0.3960716442178
0.3667334669339 0.3944147731872
0.3687374749499 0.3927624229761
0.3707414829659 0.3911145567794
0.3727454909820 0.3894711382891
0.3747494989980 0.3878321316845
0.3767535070140 0.3861975016229
0.3787575150301 0.3845672132312
0.3807615230461 0.3829412320969
0.3827655310621 0.3813195242598
0.3847695390782 0.3797020562035
0.3867735470942 0.3780887948475
0.3887775551102 0.3764797075393
0.3907815631263 0.3748747620466
0.3927855711423 0.3732739265498
0.3947895791583 0.3716771696347
0.3967935871743 0.3700844602851
0.3987975951904 0.3684957678761
0.4008016032064 0.3669110621671
65
0.4028056112224 0.3653303132948
0.4048096192385 0.3637534917672
0.4068136272545 0.3621805684565
0.4088176352705 0.3606115145934
0.4108216432866 0.3590463017607
0.4128256513026 0.3574849018874
0.4148296593186 0.3559272872426
0.4168336673347 0.3543734304300
0.4188376753507 0.3528233043823
0.4208416833667 0.3512768823552
0.4228456913828 0.3497341379230
0.4248496993988 0.3481950449722
0.4268537074148 0.3466595776972
0.4288577154309 0.3451277105948
0.4308617234469 0.3435994184594
0.4328657314629 0.3420746763781
0.4348697394790 0.3405534597263
0.4368737474950 0.3390357441624
0.4388777555110 0.3375215056238
0.4408817635271 0.3360107203222
0.4428857715431 0.3345033647395
0.4448897795591 0.3329994156231
0.4468937875752 0.3314988499822
0.4488977955912 0.3300016450832
0.4509018036072 0.3285077784462
0.4529058116232 0.3270172278407
0.4549098196393 0.3255299712817
0.4569138276553 0.3240459870263
0.4589178356713 0.3225652535695
0.4609218436874 0.3210877496411
0.4629258517034 0.3196134542017
0.4649298597194 0.3181423464392
0.4669338677355 0.3166744057658
0.4689378757515 0.3152096118143
0.4709418837675 0.3137479444347
0.4729458917836 0.3122893836914
0.4749498997996 0.3108339098595
0.4769539078156 0.3093815034220
0.4789579158317 0.3079321450669
0.4809619238477 0.3064858156838
0.4829659318637 0.3050424963613
66
0.4849699398798 0.3036021683838
0.4869739478958 0.3021648132289
0.4889779559118 0.3007304125648
0.4909819639279 0.2992989482469
0.4929859719439 0.2978704023160
0.4949899799599 0.2964447569949
0.4969939879760 0.2950219946864
0.4989979959920 0.2936020979703
0.5010020040080 0.2921850496012
0.5030060120240 0.2907708325061
0.5050100200401 0.2893594297818
0.5070140280561 0.2879508246925
0.5090180360721 0.2865450006678
0.5110220440882 0.2851419413001
0.5130260521042 0.2837416303426
0.5150300601202 0.2823440517071
0.5170340681363 0.2809491894614
0.5190380761523 0.2795570278278
0.5210420841683 0.2781675511808
0.5230460921844 0.2767807440448
0.5250501002004 0.2753965910925
0.5270541082164 0.2740150771425
0.5290581162325 0.2726361871577
0.5310621242485 0.2712599062433
0.5330661322645 0.2698862196448
0.5350701402806 0.2685151127463
0.5370741482966 0.2671465710685
0.5390781563126 0.2657805802673
0.5410821643287 0.2644171261315
0.5430861723447 0.2630561945815
0.5450901803607 0.2616977716675
0.5470941883768 0.2603418435678
0.5490981963928 0.2589883965869
0.5511022044088 0.2576374171547
0.5531062124248 0.2562888918237
0.5551102204409 0.2549428072685
0.5571142284569 0.2535991502839
0.5591182364729 0.2522579077831
0.5611222444890 0.2509190667965
0.5631262525050 0.2495826144704
0.5651302605210 0.2482485380652
67
0.5671342685371 0.2469168249542
0.5691382765531 0.2455874626220
0.5711422845691 0.2442604386635
0.5731462925852 0.2429357407821
0.5751503006012 0.2416133567888
0.5771543086172 0.2402932746005
0.5791583166333 0.2389754822391
0.5811623246493 0.2376599678298
0.5831663326653 0.2363467196002
0.5851703406814 0.2350357258791
0.5871743486974 0.2337269750948
0.5891783567134 0.2324204557745
0.5911823647295 0.2311161565428
0.5931863727455 0.2298140661207
0.5951903807615 0.2285141733243
0.5971943887776 0.2272164670637
0.5991983967936 0.2259209363420
0.6012024048096 0.2246275702544
0.6032064128257 0.2233363579865
0.6052104208417 0.2220472888140
0.6072144288577 0.2207603521010
0.6092184368737 0.2194755372996
0.6112224448898 0.2181928339483
0.6132264529058 0.2169122316714
0.6152304609218 0.2156337201780
0.6172344689379 0.2143572892606
0.6192384769539 0.2130829287950
0.6212424849699 0.2118106287383
0.6232464929860 0.2105403791289
0.6252505010020 0.2092721700851
0.6272545090180 0.2080059918042
0.6292585170341 0.2067418345620
0.6312625250501 0.2054796887114
0.6332665330661 0.2042195446820
0.6352705410822 0.2029613929789
0.6372745490982 0.2017052241821
0.6392785571142 0.2004510289456
0.6412825651303 0.1991987979965
0.6432865731463 0.1979485221345
0.6452905811623 0.1967001922306
0.6472945891784 0.1954537992269
68
0.6492985971944 0.1942093341355
0.6513026052104 0.1929667880376
0.6533066132265 0.1917261520831
0.6553106212425 0.1904874174897
0.6573146292585 0.1892505755423
0.6593186372745 0.1880156175920
0.6613226452906 0.1867825350556
0.6633266533066 0.1855513194150
0.6653306613226 0.1843219622163
0.6673346693387 0.1830944550692
0.6693386773547 0.1818687896464
0.6713426853707 0.1806449576827
0.6733466933868 0.1794229509749
0.6753507014028 0.1782027613804
0.6773547094188 0.1769843808172
0.6793587174349 0.1757678012630
0.6813627254509 0.1745530147545
0.6833667334669 0.1733400133870
0.6853707414830 0.1721287893138
0.6873747494990 0.1709193347454
0.6893787575150 0.1697116419490
0.6913827655311 0.1685057032480
0.6933867735471 0.1673015110215
0.6953907815631 0.1660990577034
0.6973947895792 0.1648983357823
0.6993987975952 0.1636993378006
0.7014028056112 0.1625020563540
0.7034068136273 0.1613064840913
0.7054108216433 0.1601126137134
0.7074148296593 0.1589204379731
0.7094188376754 0.1577299496745
0.7114228456914 0.1565411416724
0.7134268537074 0.1553540068719
0.7154308617234 0.1541685382279
0.7174348697395 0.1529847287448
0.7194388777555 0.1518025714755
0.7214428857715 0.1506220595215
0.7234468937876 0.1494431860319
0.7254509018036 0.1482659442035
0.7274549098196 0.1470903272798
0.7294589178357 0.1459163285511
69
0.7314629258517 0.1447439413534
0.7334669338677 0.1435731590686
0.7354709418838 0.1424039751236
0.7374749498998 0.1412363829902
0.7394789579158 0.1400703761843
0.7414829659319 0.1389059482659
0.7434869739479 0.1377430928384
0.7454909819639 0.1365818035483
0.7474949899800 0.1354220740847
0.7494989979960 0.1342638981791
0.7515030060120 0.1331072696048
0.7535070140281 0.1319521821765
0.7555110220441 0.1307986297502
0.7575150300601 0.1296466062224
0.7595190380762 0.1284961055301
0.7615230460922 0.1273471216502
0.7635270541082 0.1261996485992
0.7655310621242 0.1250536804328
0.7675350701403 0.1239092112456
0.7695390781563 0.1227662351709
0.7715430861723 0.1216247463798
0.7735470941884 0.1204847390816
0.7755511022044 0.1193462075228
0.7775551102204 0.1182091459873
0.7795591182365 0.1170735487956
0.7815631262525 0.1159394103046
0.7835671342685 0.1148067249078
0.7855711422846 0.1136754870339
0.7875751503006 0.1125456911477
0.7895791583166 0.1114173317487
0.7915831663327 0.1102904033716
0.7935871743487 0.1091649005856
0.7955911823647 0.1080408179940
0.7975951903808 0.1069181502344
0.7995991983968 0.1057968919777
0.8016032064128 0.1046770379283
0.8036072144289 0.1035585828238
0.8056112224449 0.1024415214345
0.8076152304609 0.1013258485631
0.8096192384770 0.1002115590446
0.8116232464930 0.0990986477461
70
0.8136272545090 0.0979871095660
0.8156312625251 0.0968769394346
0.8176352705411 0.0957681323128
0.8196392785571 0.0946606831927
0.8216432865731 0.0935545870969
0.8236472945892 0.0924498390782
0.8256513026052 0.0913464342197
0.8276553106212 0.0902443676342
0.8296593186373 0.0891436344641
0.8316633266533 0.0880442298810
0.8336673346693 0.0869461490858
0.8356713426854 0.0858493873079
0.8376753507014 0.0847539398056
0.8396793587174 0.0836598018654
0.8416833667335 0.0825669688018
0.8436873747495 0.0814754359575
0.8456913827655 0.0803851987025
0.8476953907816 0.0792962524343
0.8496993987976 0.0782085925777
0.8517034068136 0.0771222145844
0.8537074148297 0.0760371139328
0.8557114228457 0.0749532861278
0.8577154308617 0.0738707267008
0.8597194388778 0.0727894312090
0.8617234468938 0.0717093952356
0.8637274549098 0.0706306143896
0.8657314629259 0.0695530843053
0.8677354709419 0.0684768006422
0.8697394789579 0.0674017590849
0.8717434869739 0.0663279553430
0.8737474949900 0.0652553851506
0.8757515030060 0.0641840442662
0.8777555110220 0.0631139284726
0.8797595190381 0.0620450335767
0.8817635270541 0.0609773554093
0.8837675350701 0.0599108898247
0.8857715430862 0.0588456327009
0.8877755511022 0.0577815799390
0.8897795591182 0.0567187274634
0.8917835671343 0.0556570712213
0.8937875751503 0.0545966071828
71
0.8957915831663 0.0535373313404
0.8977955911824 0.0524792397090
0.8997995991984 0.0514223283260
0.9018036072144 0.0503665932506
0.9038076152305 0.0493120305639
0.9058116232465 0.0482586363688
0.9078156312625 0.0472064067897
0.9098196392786 0.0461553379724
0.9118236472946 0.0451054260838
0.9138276553106 0.0440566673120
0.9158316633267 0.0430090578659
0.9178356713427 0.0419625939752
0.9198396793587 0.0409172718901
0.9218436873747 0.0398730878812
0.9238476953908 0.0388300382394
0.9258517034068 0.0377881192758
0.9278557114228 0.0367473273212
0.9298597194389 0.0357076587264
0.9318637274549 0.0346691098619
0.9338677354709 0.0336316771174
0.9358717434870 0.0325953569023
0.9378757515030 0.0315601456451
0.9398797595190 0.0305260397932
0.9418837675351 0.0294930358132
0.9438877755511 0.0284611301903
0.9458917835671 0.0274303194284
0.9478957915832 0.0264006000499
0.9498997995992 0.0253719685956
0.9519038076152 0.0243444216245
0.9539078156313 0.0233179557137
0.9559118236473 0.0222925674583
0.9579158316633 0.0212682534712
0.9599198396794 0.0202450103830
0.9619238476954 0.0192228348420
0.9639278557114 0.0182017235137
0.9659318637275 0.0171816730812
0.9679358717435 0.0161626802446
0.9699398797595 0.0151447417211
0.9719438877756 0.0141278542450
0.9739478957916 0.0131120145672
0.9759519038076 0.0120972194555
72
0.9779559118236 0.0110834656941
0.9799599198397 0.0100707500838
0.9819639278557 0.0090590694417
0.9839679358717 0.0080484206012
0.9859719438878 0.0070388004117
0.9879759519038 0.0060302057387
0.9899799599198 0.0050226334635
0.9919839679359 0.0040160804833
0.9939879759519 0.0030105437108
0.9959919839679 0.0020060200743
0.9979959919840 0.0010025065177
1.0000000000000 0.0000000000000
73
Anexo 3. Fórmulas de métricas utilizadas.
Distancia generacional.
𝐺𝐷 = (∑ 𝑑𝑖
𝑝)𝑁𝑖=1
1𝑝⁄
|𝑃𝐹𝑘𝑛𝑜𝑤𝑛|
Donde 𝑃𝐹𝑘𝑛𝑜𝑤𝑛 es el número de vectores que se encuentran en el PFKnow. Esta
métrica permite determinar qué tan lejanos, en promedio, se encuentran PFKnow
de PFTrue. Ver a Coello (Coello, Lamont, & Van Veldhuizen, 2007) para un mayor
detalle.
Divergencia.
∆ = 𝑑𝑓 + 𝑑𝑙 + ∑ |𝑑𝑖 − �̅�|𝑁
𝑖=1
𝑑𝑓 + 𝑑𝑙 + (𝑁 − 1) ∗ �̅�
Donde 𝑑𝑓 y 𝑑𝑙 son las distancias euclidianas entre las soluciones extremas del
PFKnow y las del PFTrue. Permite determinar qué tan buena es la distribución de
todas las soluciones encontradas a lo largo del PFTrue. Para un mayor detalle se
puede consultar el artículo de Deb et al. (Deb, Pratap, Agarwal, & Meyarivan,
2002)
Convergencia.
𝛾 = ∑ 𝑑𝑖
𝑁𝑖=1
𝑁