UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD DE...

75
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

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.

34

Figura 7: Actualización de posiciones de bacterias fuertes en BCMOA.

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

59

3.880899997 0.000900000045

3.960099997 0.000100000015

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

𝑁

74

El valor de esta métrica permite determinar el nivel de convergencia de los valores

el PFKnow respecto a PFTrue. Para un mayor detalle se puede consultar el

artículo de Deb et al. (Deb, Pratap, Agarwal, & Meyarivan, 2002)