<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>0123-7799</journal-id>
<journal-title><![CDATA[TecnoLógicas]]></journal-title>
<abbrev-journal-title><![CDATA[TecnoL.]]></abbrev-journal-title>
<issn>0123-7799</issn>
<publisher>
<publisher-name><![CDATA[Instituto Tecnológico Metropolitano - ITM]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S0123-77992014000100002</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[Arquitectura heterogénea para el procesamiento de los algoritmos de enjambres]]></article-title>
<article-title xml:lang="en"><![CDATA[Heterogeneous architecture to process swarm optimization algorithms]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Dávila-Guzmán]]></surname>
<given-names><![CDATA[Maria A.]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Alfonso-Morales]]></surname>
<given-names><![CDATA[Wilfredo]]></given-names>
</name>
<xref ref-type="aff" rid="A02"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Caicedo-Bravo]]></surname>
<given-names><![CDATA[Eduardo F.]]></given-names>
</name>
<xref ref-type="aff" rid="A03"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Universidad del Valle Grupo de investigación en percepción y sistemas inteligentes PSI ]]></institution>
<addr-line><![CDATA[Cali ]]></addr-line>
<country>Colombia</country>
</aff>
<aff id="A02">
<institution><![CDATA[,Universidad del Valle Grupo de investigación en percepción y sistemas inteligentes PSI ]]></institution>
<addr-line><![CDATA[Cali ]]></addr-line>
<country>Colombia</country>
</aff>
<aff id="A03">
<institution><![CDATA[,Universidad del Valle Grupo de investigación en percepción y sistemas inteligentes PSI ]]></institution>
<addr-line><![CDATA[Cali ]]></addr-line>
<country>Colombia</country>
</aff>
<pub-date pub-type="pub">
<day>15</day>
<month>01</month>
<year>2014</year>
</pub-date>
<pub-date pub-type="epub">
<day>15</day>
<month>01</month>
<year>2014</year>
</pub-date>
<volume>17</volume>
<numero>32</numero>
<fpage>11</fpage>
<lpage>20</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_arttext&amp;pid=S0123-77992014000100002&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_abstract&amp;pid=S0123-77992014000100002&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_pdf&amp;pid=S0123-77992014000100002&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[Desde años recientes, el paralelismo hace parte de la arquitectura de las computadoras personales al incluir unidades de co-procesamiento como las unidades de procesamiento gráfico, para conformar así una arquitectura heterogénea. Este artículo presenta la implementación de algoritmos de enjambres sobre esta arquitectura para resolver problemas de optimización de funciones, destacando su estructura inherentemente paralela y sus propiedades de control distribuido. En estos algoritmos se paralelizan los individuos de la población y las dimensiones del problema gracias a la granuralidad del sistema de procesamiento, que además proporciona una baja latencia de comunicaciones entre los individuos debido al procesamiento embebido. Para evaluar las potencialidades de los algoritmos de enjambres sobre la plataforma heterogénea, son implementados dos de ellos: el algoritmo de enjambre de partículas y el algoritmo de enjambre de bacterias. Se utiliza la aceleración como métrica para contrastar los algoritmos en la arquitectura heterogénea compuesta por una GPU NVIDIA GTX480 y una unidad de procesamiento secuencial, donde el algoritmo de enjambre de partículas obtiene una aceleración de hasta 36,82x y el algoritmo de enjambre de bacterias logra una aceleración de hasta 9,26x. Además, se evalúa el efecto al incrementar el tamaño en las poblaciones donde la aceleración es significativamente diferenciable pero con riesgos en la calidad de las soluciones.]]></p></abstract>
<abstract abstract-type="short" xml:lang="en"><p><![CDATA[Since few years ago, the parallel processing has been embedded in personal computers by including co-processing units as the graphics processing units resulting in a heterogeneous platform. This paper presents the implementation of swarm algorithms on this platform to solve several functions from optimization problems, where they highlight their inherent parallel processing and distributed control features. In the swarm algorithms, each individual and dimension problem are parallelized by the granularity of the processing system which also offer low communication latency between individuals through the embedded processing. To evaluate the potential of swarm algorithms on graphics processing units we have implemented two of them: the particle swarm optimization algorithm and the bacterial foraging optimization algorithm. The algorithms’ performance is measured using the acceleration where they are contrasted between a typical sequential processing platform and the NVIDIA GeForce GTX480 heterogeneous platform; the results show that the particle swarm algorithm obtained up to 36.82x and the bacterial foraging swarm algorithm obtained up to 9.26x. Finally, the effect to increase the size of the population is evaluated where we show both the dispersion and the quality of the solutions are decreased despite of high acceleration performance since the initial distribution of the individuals can converge to local optimal solution.]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[Algoritmos de enjambre]]></kwd>
<kwd lng="es"><![CDATA[algoritmo de enjambre de bacterias]]></kwd>
<kwd lng="es"><![CDATA[algoritmo de enjambre de partículas]]></kwd>
<kwd lng="es"><![CDATA[GPU]]></kwd>
<kwd lng="es"><![CDATA[paralelo]]></kwd>
<kwd lng="en"><![CDATA[Swarm intelligence algorithm]]></kwd>
<kwd lng="en"><![CDATA[bacterial foraging optimization]]></kwd>
<kwd lng="en"><![CDATA[particle swarm optimization]]></kwd>
<kwd lng="en"><![CDATA[graphic processing unit]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[   <font size="2" face="verdana">     <p align="right"><b>Art&iacute;culo de investigaci&oacute;n/Research article</b></p>      <p align="center"><font size="4" face="verdana"><b>Arquitectura  heterog&eacute;nea para el procesamiento de los algoritmos de enjambres</b></font></p>     <p align="center"><font size="3" face="verdana"><b>Heterogeneous architecture to process swarm  optimization algorithms</b></font></p>      <p><b>Maria A.  D&aacute;vila-Guzm&aacute;n<sup>1</sup>, Wilfredo Alfonso-Morales<sup>2</sup>, Eduardo F.  Caicedo-Bravo<sup>3</sup></b></p>     <p><sup>1</sup>M.Sc en ingenier&iacute;a con &eacute;nfasis en  electr&oacute;nica, Grupo de investigaci&oacute;n en percepci&oacute;n y sistemas inteligentes PSI,  Universidad del Valle, Cali-Colombia, <a href="mailto:maria.a.davila@correounivalle.edu.co">maria.a.davila@correounivalle.edu.co</a></p>     <p><sup>2</sup>M.Sc en ingenier&iacute;a con &eacute;nfasis en  electr&oacute;nica, Grupo de investigaci&oacute;n en percepci&oacute;n y sistemas inteligentes PSI,  Universidad del Valle, Cali-Colombia, <a href="mailto:wilfredo.alfonso@correounivalle.edu.co">wilfredo.alfonso@correounivalle.edu.co</a></p>     <p><sup>3</sup>Ph.D Inform&aacute;tica Industrial, Grupo de  investigaci&oacute;n en percepci&oacute;n y sistemas inteligentes PSI, Universidad del Valle,  Cali-Colombia, <a href="mailto:eduardo.caicedo@correounivalle.edu.co">eduardo.caicedo@correounivalle.edu.co</a></p>      <p></p>     <p align="center">Fecha de recepci&oacute;n: 07 de marzo de 2013 / Fecha de aceptaci&oacute;n: 26 de noviembre de 2013</p> <hr>     ]]></body>
<body><![CDATA[<p>Como citar</p> M. A.  D&aacute;vila-Guzm&aacute;n, W. Alfonso-Morales y E. F. Caicedo-Bravo, &ldquo;Arquitectura  heterog&eacute;nea para el procesamiento de los algoritmos de enjambres&rdquo;, <i>Tecno L&oacute;gicas</i>, vol. 17, no. 32, pp. 11-20,  2014. <hr>      <p><font size="3"><b>Resumen</b></font></p>     <p>Desde a&ntilde;os  recientes, el paralelismo hace parte de la arquitectura de las computadoras  personales al incluir unidades de co-procesamiento como las unidades de  procesamiento gr&aacute;fico, para conformar as&iacute; una arquitectura heterog&eacute;nea. Este  art&iacute;culo presenta la implementaci&oacute;n de algoritmos de enjambres sobre esta  arquitectura para resolver problemas de optimizaci&oacute;n de funciones, destacando  su estructura inherentemente paralela y sus propiedades de control distribuido.  En estos algoritmos se paralelizan los individuos de la poblaci&oacute;n y las  dimensiones del problema gracias a la granuralidad del sistema de  procesamiento, que adem&aacute;s proporciona una baja latencia de comunicaciones entre  los individuos debido al procesamiento embebido. Para evaluar las  potencialidades de los algoritmos de enjambres sobre la plataforma heterog&eacute;nea,  son implementados dos de ellos: el algoritmo de enjambre de part&iacute;culas y el  algoritmo de enjambre de bacterias. Se utiliza la aceleraci&oacute;n como m&eacute;trica para  contrastar los algoritmos en la arquitectura heterog&eacute;nea compuesta por una GPU  NVIDIA GTX480 y una unidad de procesamiento secuencial, donde el algoritmo de  enjambre de part&iacute;culas obtiene una aceleraci&oacute;n de hasta 36,82x y el algoritmo  de enjambre de bacterias logra una aceleraci&oacute;n de hasta 9,26x. Adem&aacute;s, se  eval&uacute;a el efecto al incrementar el tama&ntilde;o en las poblaciones donde la  aceleraci&oacute;n es significativamente diferenciable pero con riesgos en la calidad  de las soluciones.</p>      <p><b>Palabras clave: </b>Algoritmos de enjambre,  algoritmo de enjambre de bacterias, algoritmo de enjambre de part&iacute;culas, GPU,  paralelo.</p> <hr>      <p><font size="3"><b>Abstract</b></font></p>     <p>Since few years ago, the parallel processing has been  embedded in personal computers by including co-processing units as the graphics  processing units resulting in a heterogeneous platform. This paper presents the  implementation of swarm algorithms on this platform to solve several functions  from optimization problems, where they highlight their inherent parallel  processing and distributed control features. In the swarm algorithms, each  individual and dimension problem are parallelized by the granularity of the  processing system which also offer low communication latency between  individuals through the embedded processing. To evaluate the potential of swarm  algorithms on graphics processing units we have implemented two of them: the  particle swarm optimization algorithm and the bacterial foraging optimization  algorithm. The algorithms&rsquo; performance is measured using the acceleration where  they are contrasted between a typical sequential processing platform and the  NVIDIA GeForce GTX480 heterogeneous platform; the results show that the  particle swarm algorithm obtained up to 36.82x and the bacterial foraging swarm  algorithm obtained up to 9.26x. Finally, the effect to increase the size of the  population is evaluated where we show both the dispersion and the quality of  the solutions are decreased despite of high acceleration performance since the  initial distribution of the individuals can converge to local optimal solution.</p>      <p><b>Keywords: </b>Swarm intelligence algorithm, bacterial foraging  optimization, particle swarm optimization, and graphic processing unit.</p> <hr>      <p></p>     <p><font size="3"><b>1. Introducci&oacute;n</b></font></p>      <p>Los sistemas de c&oacute;mputo convencional han  evolucionado a sistemas de procesamiento paralelo para realizar operaciones de  c&oacute;mputo intensivo y mejorar la velocidad de procesamiento. En las computadoras  personales el paralelismo hace parte de la arquitectura incluyendo  instrucciones vectoriales (SIMD), procesadores multin&uacute;cleo y unidades de  co-procesamiento como las <i>many-core </i>y  las FPGAs &#91;2&#93;; este conjunto es el que recibe el nombre de arquitectura  heterog&eacute;nea. Cada uno de los procesadores de la arquitectura heterog&eacute;nea puede  manejar una carga de c&oacute;mputo diferente, que distribuida de forma adecuada,  puede ejecutar las aplicaciones de forma eficiente.</p>     ]]></body>
<body><![CDATA[<p>Estas nuevas capacidades de procesamiento  permiten eliminar parte de incompatibilidad de los algoritmos enjambre con el  c&oacute;mputo convencional, donde, las caracter&iacute;sticas heredadas de la computaci&oacute;n  natural son modeladas de forma cualitativa y no cuantitativa sobre ordenadores  cl&aacute;sicos como se muestra en la <a href="#Tabla1">Tabla 1</a>.</p>      <p align="center"><a name="Tabla1"></a><img src="/img/revistas/teclo/v17n32/v17n32a02tab01.jpg"></p>      <p>Por ello, se ha generado una tendencia  creciente al cambio de tecnolog&iacute;a de procesamiento, enfoc&aacute;ndose principalmente  en las caracter&iacute;sticas paralelas y de control distribuido de estos algoritmos.</p>     <p>Para exaltar el paralelismo de los  algoritmos de enjambres se ha optado por plataformas <i>many-core</i> como las unidades de procesamiento gr&aacute;fico (GPU), FPGAs y  clusters de computadoras. En estos sistemas se tiene mayor capacidad de  procesamiento y se busca obtener una mayor velocidad en las rutinas a procesar.</p>     <p>Las GPUs se han convertido en una  plataforma atractiva para el procesamiento por su comparativo bajo costo. Sobre  &eacute;sta se ha evaluado el algoritmo de enjambre de part&iacute;culas &#91;3&#93;-&#91;9&#93; y el  algoritmo de hormigas &#91;10&#93;-&#91;15&#93;. Sobre un cl&uacute;ster de computadoras y FPGA se ha  implementado el algoritmo de part&iacute;culas &#91;16&#93;, y solo sobre FPGAs variantes los  algoritmos de hormigas &#91;17&#93;, &#91;18&#93;. Estas implementaciones demuestran  aceleraci&oacute;n y, a pesar de ser parte de una misma familia de algoritmos, las  implementaciones paralelas de cada variante son presentadas de forma aislada.  Cuando se tiene mayor capacidad de procesamiento, en el caso de PSO, el aumento  desmedido de los par&aacute;metros de poblaci&oacute;n es presentado en t&eacute;rminos de la  aceleraci&oacute;n, sin tomar en cuenta las capacidades del algoritmo para dar soluci&oacute;n  al problema de optimizaci&oacute;n.</p>     <p>Este art&iacute;culo presenta un planteamiento de  los algoritmos de enjambres, donde se busca maximizar las prestaciones de  procesamiento haciendo uso de una plataforma paralela, realizando un an&aacute;lisis  de las arquitecturas m&aacute;s usadas para destacar las caracter&iacute;sticas inherentes de  estos algoritmos.</p>     <p>Usando una arquitectura heterog&eacute;nea  conformada por una CPU que aloja una GPU, son implementados el algoritmo PSO,  uno de los m&aacute;s populares y el algoritmo BFO reconocido por la calidad de las  soluciones en problemas de aplicaci&oacute;n y alta carga computacional &#91;19&#93;, &#91;20&#93;. Se  eval&uacute;a el rendimiento que produce el cambio de tecnolog&iacute;a, determinado por las  ganancias en tiempo de procesamiento de estos algoritmos usando como m&eacute;trica la  aceleraci&oacute;n entre los sistemas CPU-GPU y la CPU. Se analizan las variaciones de  la aceleraci&oacute;n con la cantidad de dimensiones del problema y el tama&ntilde;o de la  poblaci&oacute;n y as&iacute;, mostrar las ventajas con sistemas de bajo costo como las  arquitecturas heterog&eacute;neas.</p>     <p></p>      <p><font size="3"><b>2. Algoritmos de enjambres</b></font></p>      <p>Entre  los animales sociales se pueden distinguir las bandadas de aves, los  card&uacute;menes, e insectos como las hormigas, abejas, avispas, termitas, entre  otros. Estos animales resuelven problemas de su vida diaria como la consecuci&oacute;n  de comida, construcci&oacute;n de nidos, divisi&oacute;n de labores y m&aacute;s, que tienen su  equivalente en problemas cient&iacute;ficos y de ingenier&iacute;a &#91;21&#93;. Individuos con poca  inteligencia y capacidades limitadas y un bajo nivel de comunicaci&oacute;n con sus  vecinos, exhiben un comportamiento colectivo inteligente y auto-organizado de  car&aacute;cter global donde t&iacute;picamente no se sigue a un l&iacute;der, o un plan global &#91;22&#93;,  &#91;23&#93;.</p>     ]]></body>
<body><![CDATA[<p>La inteligencia de enjambres toma las  caracter&iacute;sticas de estos animales sociales como inspiraci&oacute;n para resolver  problemas, donde surgen los algoritmos de enjambres. Comparados con las  t&eacute;cnicas tradicionales para la resoluci&oacute;n de problemas de optimizaci&oacute;n,  proporcionan mejoras en la robustez y efectividad &#91;22&#93;. Se caracterizan por las  estrategias de intensificaci&oacute;n y diversificaci&oacute;n, resumidas en la <a href="#Tabla2">Tabla 2</a>, que  permite al algoritmo encontrar soluciones de alta calidad y moverse por &aacute;reas  sin exploraci&oacute;n del espacio de b&uacute;squeda.</p>      <p align="center"><a name="Tabla2"></a><img src="/img/revistas/teclo/v17n32/v17n32a02tab02.jpg"></p>      <p>Una descripci&oacute;n general de alto nivel de  los algoritmos de enjambres se presenta en el Algoritmo 1. Basados en este  esquema, se plantean los algoritmos como capas de niveles iterativos como se  muestra en la <a href="#Figura1">Fig. 1</a>. En la capa interna, cada individuo es procesado de forma  independiente, cuya informaci&oacute;n es compartida entre todos los individuos. El  mecanismo de comunicaci&oacute;n produce la emergencia de un comportamiento colectivo  que conforma la capa del enjambre.</p>      <p align="center"><a name="Figura1001"></a><img src="/img/revistas/teclo/v17n32/v17n32a02fig1001.jpg"></p>      <p align="center"><a name="Figura1"></a><img src="/img/revistas/teclo/v17n32/v17n32a02fig01.jpg"></p>      <p>El enjambre puede estar conformado por  todos los individuos o un subconjunto de estos que, finalmente, est&aacute; sometido a  una condici&oacute;n de parada que puede ser el trascurso del tiempo, un m&aacute;ximo error  permitido para la soluci&oacute;n, un n&uacute;mero de iteraciones fijo o cualquier otra  estrategia que emule el comportamiento natural y permita soluciones &oacute;ptimas.</p>     <p>Tal como se observa en la <a href="#Figura1">Fig. 1</a>, en cada  nivel se tienen componentes que se pueden procesar de forma independiente; sin  embargo, los algoritmos de enjambres han sido usualmente implementados como  simulaciones seriales de procesos paralelos &#91;24&#93;.</p>      <p></p>     <p><font size="3"><b>3. Plataformas paralelas</b></font></p>      <p>El factor econ&oacute;mico es una de las  referencias a la hora de proponer plataformas para el desarrollo e  investigaci&oacute;n. El costo de un equipo de c&oacute;mputo adem&aacute;s de su precio en el  mercado, se debe establecer por las prestaciones que se pueden obtener o por la  cantidad de usuarios que pueden acceder a este.</p>     ]]></body>
<body><![CDATA[<p>Para mejorar los tiempos de procesamiento en  los algoritmos se puede optar por la implementaci&oacute;n en plataformas con mayor  potencia de c&aacute;lculo como las supercomputadoras o <i>mainframe</i>, que permiten seguir el esquema cl&aacute;sico de implementaci&oacute;n  de los algoritmos, pero los costos de estos equipos son elevados, lo que  dificulta su acceso en ciertas comunidades cient&iacute;ficas.</p>     <p>En la taxonom&iacute;a Flynn los sistemas de  procesamiento paralelo son clasificados en MIMD (<i>Multiple instruction, multiple data</i>) y SIMD (<i>Single instruction, multiple data</i>). Entre las plataformas paralelas  m&aacute;s comunes se encuentran las arquitecturas con memoria distribuida como el  c&oacute;mputo en malla y en la nube, los sistemas multin&uacute;cleo,<i> many-core</i> y los procesadores sist&oacute;licos. </p>     <p>La computaci&oacute;n en la nube se presenta como  un sucesor de los sistemas distribuidos, donde, de forma virtual los recursos  de c&oacute;mputo son compartidos a trav&eacute;s de la web. Es considerada econ&oacute;mica para el  procesamiento, aunque tener acceso a este sistema podr&iacute;a acarrear problemas de  seguridad, adem&aacute;s que se est&aacute; expuesto a la latencia de la red de datos y la  heterogeneidad de los sistemas, introduciendo en los procesos componentes de  desempe&ntilde;o adicional dif&iacute;ciles de predecir. Por ello, se opta por las mallas de  c&oacute;mputo, que tambi&eacute;n comparten recursos a trav&eacute;s de la red, que en la realidad  se encuentran en el mismo sitio para obtener la m&aacute;xima velocidad de  comunicaci&oacute;n (<i>cl&uacute;ster</i>).</p>     <p>Por otra parte, cuando se tiene un sistema  integrado, las latencias de las trasferencias internas y la sincronizaci&oacute;n de  los datos son, en general, peque&ntilde;as fracciones de tiempo, que pueden ser  despreciadas dependiendo de la estructura del proceso. En el campo de los  dispositivos integrados para el procesamiento paralelo se pueden mencionar los  procesadores multin&uacute;cleo, las FPGAs (<i>Field  Programmable Gates Arrays</i>) y los procesadores <i>many-core</i>.</p>     <p>Los procesadores multin&uacute;cleo son  representados por procesadores de prop&oacute;sito general, cada n&uacute;cleo ejecuta las  instrucciones de forma independiente y los recursos son administrados por medio  de un sistema operativo. Son dispositivos que se encuentran incluidos en las  CPUs, que al ser comerciales y de uso general son asequibles con mayor  facilidad &#91;25&#93;. Usan gran parte de los transistores y la potencia en  operaciones no-computacionales como la l&oacute;gica de control y cach&eacute;, es por esto  que se ha optado por combinar los sistemas de procesamiento introduciendo  n&uacute;cleos de aceleraci&oacute;n para maximizar el desempe&ntilde;o. Estos co-procesadores  pueden ser plataformas como los procesadores <i>many-core.</i></p>     <p>Los procesadores <i>many-core,</i> representados por las unidades de procesamiento gr&aacute;fico  (GPU), han sido dise&ntilde;adas para el tratamiento de im&aacute;genes, con especial inter&eacute;s  en el mercado de los v&iacute;deo juegos y adaptadas para el procesamiento de  prop&oacute;sito general GPGPU (General-Purpose computing on Graphics Processing  Unit). Por su composici&oacute;n de cientos de n&uacute;cleos elementales y la competencia de  las GPUs en el mercado dado su comparativo bajo costo y disponibilidad en las  computadoras personales las convierten en una alternativa atractiva para el procesamiento  de datos en paralelo. Cada n&uacute;cleo permite la ejecuci&oacute;n de cientos de hilos de  procesamiento, presentan un control de flujo menor que las plataformas  multin&uacute;cleo enfocando m&aacute;s &aacute;rea de transistores en las unidades de  procesamiento.</p>     <p>Por &uacute;ltimo, las FPGAs permiten reconfigurar  los recursos de procesamiento y su programaci&oacute;n, realizada por medio de una  CPU, es de prop&oacute;sito espec&iacute;fico siendo vers&aacute;til y usada principalmente para el  prototipado de dispositivo. Adem&aacute;s, es eficiente en potencia y velocidad de  procesamiento &#91;26&#93;.</p>     <p>Realizar una comparaci&oacute;n de desempe&ntilde;o y  capacidades entre las arquitecturas expuestas puede ser dif&iacute;cil. Desde el punto  de vista de dispositivos integrados, las GPUs son vistas como rivales de las  FPGAs y estudios comparativos muestran que el precio de las FPGAs es m&aacute;s  elevado y con desempe&ntilde;os en tiempo, en algunos casos, inferior al demostrado  por la GPU &#91;27&#93;. En cuanto a las arquitecturas multin&uacute;cleo actualmente son  vistas como complementarias con las GPUs y FPGAs m&aacute;s que competidores &#91;25&#93;.</p>      <p></p>     <p><font size="3"><b>4. Implementaci&oacute;n sobre la plataforma heterog&eacute;nea</b></font></p>      ]]></body>
<body><![CDATA[<p>Tener un mejor desempe&ntilde;o de los algoritmos  puede referirse al costo computacional que implica la velocidad, el consumo de  hardware y el precio del mismo, o el desempe&ntilde;o propio del algoritmo reflejado  en la calidad de la soluci&oacute;n. En esta b&uacute;squeda, los algoritmos de enjambres se  presentan como un candidato natural para mejorar las prestaciones en tiempo de  procesamiento y una alternativa para lograrlo es implementarlo sobre una  plataforma de procesamiento paralela.</p>     <p>Los algoritmos de enjambres en su capa  externa (ver <a href="#Figura1">Fig. 1</a>) son enteramente secuenciales, por tanto, el paralelismo en  esta etapa es irrelevante. Pero en la capa interna est&aacute;n compuestos por un  conjunto de individuos simples que cooperan para hallar una soluci&oacute;n. Estos  individuos requieren de una alta comunicaci&oacute;n entre los procesos para conservar  su estructura original. En consecuencia, para logar un buen desempe&ntilde;o sobre una  plataforma paralela se requiere una baja latencia de comunicaci&oacute;n, como la  suministrada por plataformas totalmente embebidas.</p>     <p>La  estructura de individuos de los algoritmos de enjambre permite pensar en el  paralelismo masivo que se puede lograr sobre unidades como las GPUs, que pueden  procesar de forma simult&aacute;nea el n&uacute;cleo del algoritmo representado por los  individuos. En cuanto a la arquitectura heterog&eacute;nea, debido a que las  transferencias en la memoria interna de la GPU comparadas con las realizadas a  la CPU son hasta 28 veces m&aacute;s r&aacute;pidas, se evitan estas transferencias, lo que  mejora la aceleraci&oacute;n de los algoritmo &#91;5&#93;, &#91;6&#93;.</p>     <p>Gracias a la granularidad que proporciona  la GPU con arquitectura CUDA &#91;28&#93;. La paralelizaci&oacute;n es realizada a nivel de la  capa del individuo, donde la unidad m&iacute;nima de procesamiento del sistema o hilo  se encarga de cada una de las <i>n</i> dimensiones del problema y el individuo  est&aacute; conformado por un bloque de procesamiento compuesto por <i>n</i> hilos. El  l&iacute;mite de los bloques de procesamiento est&aacute; dado por dos factores: primero, la  asignaci&oacute;n de memoria, donde la memoria compartida genera mayores prestaciones  por la capacidad y el ancho de banda; y segundo, el manejador de instrucciones,  que define la cantidad de hilos por bloque. </p>     <p>Para evaluar algunas de las caracter&iacute;sticas  de los algoritmos de enjambres, usamos una plataforma de procesamiento GPU  NVIDIA GTX480 compuesta por 480 n&uacute;cleos con arquitectura CUDA, donde se  implementan el algoritmo de enjambre de part&iacute;culas (PSO) &#91;29&#93; y el algoritmo de  enjambre de bacterias (BFO) &#91;30&#93; totalmente embebido sobre la GPU. Los  resultados son obtenidos de 6 problemas de minimizaci&oacute;n num&eacute;rica sin  restricciones mostradas en la <a href="#Tabla3">Tabla 3</a> del benchmark CEC 2005 &#91;31&#93;. Dada la baja  dispersi&oacute;n de los tiempos medidos en una etapa de experimentaci&oacute;n inicial, con  un m&aacute;ximo de 1,13%, para variaciones del par&aacute;metro de dimensiones y poblaciones  con 50 muestras, para el experimento donde se var&iacute;an las dimensiones se  obtienen de una &uacute;nica muestra; y en el segundo experimento donde se analiza la  variaci&oacute;n de la poblaci&oacute;n, se realiza con base a 25 muestras.</p>      <p align="center"><a name="Tabla3"></a><img src="/img/revistas/teclo/v17n32/v17n32a02tab03.jpg"></p>      <p>Para obtener la aceleraci&oacute;n es implementado  el equivalente secuencial de los algoritmos en lenguaje C sobre la CPU con  procesador Intel Xeon X5660, memoria RAM de 12GB y sistema operativo Linux  Ubuntu 10.04, donde reside la GPU. Para el algoritmo PSO se configuran los  par&aacute;metros con peso inercial <i>w</i> y  factores cognitivo c1 y social c2 constantes (w=0,729, c1=c2=1,496) &#91;32&#93;, 20  part&iacute;culas en un intervalo de 3 a 1024 dimensiones y 100000 iteraciones, donde  se obtienen las aceleraciones de la <a href="#Figura2">Fig. 2</a>.</p>      <p align="center"><a name="Figura2"></a><img src="/img/revistas/teclo/v17n32/v17n32a02fig02.jpg"></p>      <p>El algoritmo BFO es configurado con los  par&aacute;metros dados por &#91;30&#93;. Se define el movimiento de las bacterias con unas  componentes: atractivas wa y da, repelentes wr y hr, el tama&ntilde;o del paso c y la  probabilidad de eliminaci&oacute;n-dispersi&oacute;n P (wa=0,2, wr=10,0, da=hr=0,1, c=0,1 y  P=0,25). Este requiere m&aacute;s recursos de c&oacute;mputo que el algoritmo PSO, por ello  el intervalo de evaluaci&oacute;n est&aacute; entre 3 y 544 dimensiones con un n&uacute;mero de  pasos reproductivos Nre=12, numero de eventos de eliminaci&oacute;n dispersi&oacute;n Ned=10,  n&uacute;mero de eventos quimiotacticos Nc=300 y n&uacute;mero de pasos quimiotacticos Ns=12.  La aceleraci&oacute;n para este algoritmo se muestra en la <a href="#Figura3">Fig. 3</a>.</p>      <p align="center"><a name="Figura3"></a><img src="/img/revistas/teclo/v17n32/v17n32a02fig03.jpg"></p>      ]]></body>
<body><![CDATA[<p>Tal como se observa en las <a href="#Figura2">Fig. 2</a> y <a href="#Figura3">3</a>, por  debajo de las 30 dimensiones el algoritmo secuencial es superior a la  implementaci&oacute;n sobre la GPU. Sin embargo, una vez el n&uacute;mero de dimensiones  supera este umbral, la GPU tiene una mayor ocupaci&oacute;n de recursos de c&oacute;mputo  haci&eacute;ndolo superior hasta en 36,82x para el algoritmo PSO y 9,26x para el  algoritmo BFO. En cuanto a la calidad de la soluci&oacute;n, los resultados son  equivalentes al de la implementaci&oacute;n secuencial porque se conserva la  estructura original del algoritmo.</p>     <p>Hasta  el momento se ha demostrado el comportamiento de la velocidad del algoritmo  variando las dimensiones del problema de minimizaci&oacute;n, pero factores como la  cantidad de individuos que conforman la poblaci&oacute;n, afectan la carga  computacional del algoritmo y generan comportamientos diferentes en los  resultados de la optimizaci&oacute;n, pero en general no son evaluados sobre las CPUs  cl&aacute;sicas por la carga que ello implica.</p>     <p>En t&eacute;rminos biol&oacute;gicos, mantener la  diversidad (variedad y abundancia) de la poblaci&oacute;n se asocia directamente a la  capacidad de exploraci&oacute;n, que significa encontrar nuevas soluciones en el  espacio de b&uacute;squeda, ben&eacute;fico para evitar la convergencia prematura. Debido a  las limitaciones de memoria de las plataformas de procesamiento y la reducci&oacute;n  de la velocidad por las m&uacute;ltiples evaluaciones de la funci&oacute;n objetivo, incrementar  el n&uacute;mero de agentes en los algoritmos de enjambres es descartado.</p>     <p>Una de las preocupaciones al tener un  enjambre de gran tama&ntilde;o es el tiempo de procesamiento que se requiere, ya que  por cada individuo adicional, se incrementa en aproximadamente <i>I X P</i> veces el tiempo de procesamiento, donde <i>I</i> representa la cantidad de iteraciones y <i>P</i> el tiempo total de las instrucciones que  ejecuta cada individuo. Esta preocupaci&oacute;n en tiempo deja de ser cr&iacute;tica en las  plataformas paralelas, dado que cada individuo representar&aacute; una unidad de  procesamiento que, te&oacute;ricamente, se ejecuta de forma simult&aacute;nea como enjambre.</p>     <p>De forma experimental se determina el  comportamiento de los algoritmos con el incremento de la poblaci&oacute;n en 20, 80, 140  y 200 individuos y <i>n</i>=30. Se realizan  25 muestras por cada funci&oacute;n para PSO y BFO. En la <a href="#Figura4">Fig. 4</a> se presentan los  resultados del tiempo de procesamiento para el algoritmo PSO con 1000  iteraciones y BFO con Nre=8, Ned=4, Nc=200 y Ns=8.</p>      <p align="center"><a name="Figura4"></a><img src="/img/revistas/teclo/v17n32/v17n32a02fig04.jpg"></p>      <p>Por otra parte, demasiados agentes puede  hacer el sistema poco robusto al ruido y producirse el sobreajuste (<i>overfitting</i>). Para el algoritmo PSO un  tama&ntilde;o de poblaci&oacute;n mayor produce un desequilibrio en el algoritmo generando  mayor dispersi&oacute;n en algunos casos y soluciones alejadas del &oacute;ptimo en otros,  requiriendo m&aacute;s iteraciones &#91;33&#93;; en el caso de la funci&oacute;n F1, en el diagrama  de cajas de la <a href="#Figura5">Fig. 5</a> se presentan los dos casos: mayor dispersi&oacute;n en la  soluci&oacute;n y soluciones sub-&oacute;ptimas con 1000 iteraciones. </p>      <p align="center"><a name="Figura5"></a><img src="/img/revistas/teclo/v17n32/v17n32a02fig05.jpg"></p>      <p>En cambio, para el algoritmo BFO con el  incremento del tama&ntilde;o de la poblaci&oacute;n se obtienen mejoras en la calidad de la  soluci&oacute;n y en la dispersi&oacute;n de los resultados, los resultados obtenidos para F1  son presentados en el diagrama de cajas de la <a href="#Figura6">Fig. 6</a>.</p>      <p align="center"><a name="Figura6"></a><img src="/img/revistas/teclo/v17n32/v17n32a02fig06.jpg"></p>      ]]></body>
<body><![CDATA[<p></p>     <p><font size="3"><b>5. Conclusiones</b></font></p>      <p>Los algoritmos de enjambres con  procedimientos de intensificaci&oacute;n y diversificaci&oacute;n implican operaciones  complejas y/o matriciales, por esta raz&oacute;n su implementaci&oacute;n sobre plataformas  paralelas -como las que se encuentran en arquitecturas heterog&eacute;neas- se ve  favorecida. Esto permite extender su aplicaci&oacute;n en &aacute;reas donde el desempe&ntilde;o en  tiempo es un factor determinante para su aplicaci&oacute;n en problemas de  optimizaci&oacute;n. Adem&aacute;s, se puede evaluar el sistema en mayor cantidad de  iteraciones, que en la mayor&iacute;a de los algoritmos de enjambres permite explorar  mucho m&aacute;s el espacio de b&uacute;squeda y encontrar soluciones de mayor calidad,  minimizando los impactos del tiempo de procesamiento.</p>     <p>Dada la estructura simple que conforma cada  individuo en estos algoritmos, el uso de procesadores elementales generan un  mejor desempe&ntilde;o en cuanto a tiempo de procesamiento comparado con el  equivalente secuencial como en el algoritmo PSO con una aceleraci&oacute;n m&aacute;xima de  36,82x y en el algoritmo BFO de 9,26x en una implementaci&oacute;n realizada sobre una  plataforma GPU GTX480 con arquitectura CUDA. La aceleraci&oacute;n de las  implementaciones del algoritmo PSO y BFO es significativa cuando las  dimensiones del problema son superiores a 50 dimensiones. Mostrando que los  beneficios de este tipo de plataformas dependen en gran medida de par&aacute;metros  como las dimensiones del problema, la cantidad de individuos que conforman la  poblaci&oacute;n y la capacidad del hardware.</p>     <p>Finalmente, como trabajo futuro se propone  generar estrategias y metodolog&iacute;as que permitan reducir los tiempos de  implementaci&oacute;n y mejorar la experiencia del programador para compartir las  experiencias con la comunidad de investigaci&oacute;n con el fin de estimular la  migraci&oacute;n de plataforma dado los buenos desempe&ntilde;os obtenidos y la asequibilidad  de las arquitecturas heterog&eacute;neas como computadoras personales.</p>      <p></p>     <p><font size="3" face="verdana"><b>Referencias</b></font></p>      <!-- ref --><p>&#91;1&#93; P. J. Bentley, "Systemic  computation: A model of interacting systems with natural characteristics," <i>Int.  J. Parallel, Emergent Distrib. Syst.</i>, vol. 22, no. 2, pp. 103-121, Apr.  2007.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000080&pid=S0123-7799201400010000200001&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;2&#93; M. McCool, J. Reinders, and A.  Robison, <i>Structured Parallel Programming: Patterns for Efficient Computation</i>.  Morgan Kaufmann, 2012, p. 406.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000082&pid=S0123-7799201400010000200002&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;3&#93; D. L. Souza, G. D. Monteiro, T.  C. Martins, V. A. Dmitriev, and O. N. Teixeira, "PSO-GPU: accelerating particle  swarm optimization in CUDA-based graphics processing units," in <i>Proceedings  of the 13th annual conference companion on Genetic and evolutionary computation</i>,  2011, pp. 837-838.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000084&pid=S0123-7799201400010000200003&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;4&#93; M. Cardenas-Montes, M. a.  Vega-Rodriguez, J. J. Rodriguez-Vazquez, and A. Gomez-Iglesias, "Accelerating  Particle Swarm Algorithm with GPGPU," in <i>2011 19th International Euromicro  Conference on Parallel, Distributed and Network-Based Processing</i>, 2011, pp.  560-564.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000086&pid=S0123-7799201400010000200004&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;5&#93; IBISlab, "CUDA-PSO 2.0."  Intelligent Bio-Inspired Systems Laboratory, Universita&#039; degli Studi di Parma,  Italy, p. 67, 2011.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000088&pid=S0123-7799201400010000200005&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;6&#93; L.  Mussi, F. Daolio, and S. Cagnoni, "Evaluation of parallel particle swarm  optimization algorithms within the CUDATM architecture," <i>Inf.  Sci. (Ny).</i>, vol. 181, no. 20, pp. 4642-4657, Oct. 2011.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000090&pid=S0123-7799201400010000200006&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;7&#93; L. D. P. Veronese and R. A.  Krohling, "Swarm&#039;s flight: Accelerating the particles using C-CUDA," in <i>2009  IEEE Congress on Evolutionary Computation</i>, 2009, pp. 3264-3270.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000092&pid=S0123-7799201400010000200007&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;8&#93; Y. Zhou and Y. Tan, "GPU-based  parallel particle swarm optimization," in <i>2009 IEEE Congress on Evolutionary  Computation</i>, 2009, no. 1, pp. 1493-1500.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000094&pid=S0123-7799201400010000200008&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;9&#93; W. Zhu and J. Curry, "Particle  Swarm with graphics hardware acceleration and local pattern search on bound  constrained problems," in <i>2009 IEEE Swarm Intelligence Symposium</i>, 2009,  no. 0737173, pp. 1-8.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000096&pid=S0123-7799201400010000200009&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;10&#93; H. Bai, D. OuYang, X. Li, L. He,  and H. Yu, "MAX-MIN Ant System on GPU with CUDA," in <i>2009 Fourth  International Conference on Innovative Computing, Information and Control  (ICICIC)</i>, 2009, pp. 801-804.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000098&pid=S0123-7799201400010000200010&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;11&#93; J. Fu, L. Lei, and G. Zhou, "A  parallel Ant Colony Optimization algorithm with GPU-acceleration based on  All-In-Roulette selection," in <i>Third International Workshop on Advanced  Computational Intelligence</i>, 2010, no. 2, pp. 260-264.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000100&pid=S0123-7799201400010000200011&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;12&#93; W. Jiening, D. Jiankang, and Z.  Chunfeng, "Implementation of Ant Colony Algorithm Based on GPU," in <i>2009  Sixth International Conference on Computer Graphics, Imaging and Visualization</i>,  2009, pp. 50-53.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000102&pid=S0123-7799201400010000200012&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;13&#93; Y. You, "Parallel Ant System for  Traveling Salesman Problem on GPUs," in <i>GECCO 2009-Genetic and Evolutionary  Computation</i>, 2009, pp. 1-2.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000104&pid=S0123-7799201400010000200013&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;14&#93; J. M. Cecilia, J. M. Garc&iacute;a, A.  Nisbet, M. Amos, and M. Ujald&oacute;n, "Enhancing data parallelism for Ant Colony  Optimization on GPUs," <i>J. Parallel Distrib. Comput.</i>, vol. 73, no. 1, pp.  42-51, Jan. 2013.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000106&pid=S0123-7799201400010000200014&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;15&#93; A. Del&eacute;vacq, P. Delisle, M.  Gravel, and M. Krajecki, "Parallel Ant Colony Optimization on Graphics  Processing Units," <i>J. Parallel Distrib. Comput.</i>, vol. 73, no. 1, pp. 52-61,  Jan. 2013.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000108&pid=S0123-7799201400010000200015&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;16&#93; S.-A. Li, C.-C. Hsu, C.-C. Wong,  and C.-J. Yu, "Hardware/software co-design for particle swarm optimization  algorithm," <i>Inf. Sci. (Ny).</i>, vol. 181, no. 20, pp. 4582-4596, Oct. 2011.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000110&pid=S0123-7799201400010000200016&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;17&#93; B. Scheuermann, K. So, M.  Guntsch, M. Middendorf, O. Diessel, H. ElGindy, and H. Schmeck, "FPGA implementation  of population-based ant colony optimization," <i>Appl. Soft  Comput.</i>, vol. 4, no. 3, pp. 303-322, Aug. 2004.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000112&pid=S0123-7799201400010000200017&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;18&#93;  M. A. D&aacute;vila, W. Alfonso, and E. Caicedo, "Implementaci&oacute;n de un algoritmo  basado en colonia de hormigas usando el software DSPBuilder," B.Sc Thesis, Ing.  Electr&oacute;nica, Universidad del Valle,  Cali-Colombia, 2010.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000114&pid=S0123-7799201400010000200018&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;19&#93; B. Niu, Y. Fan, L. Tan, J. Rao,  and L. Li, "A Review of Bacterial Foraging Optimization Part I: Background and  Development," <i>Adv. Intell. Comput. Theor. Appl.</i>, vol. 93, pp. 535-543,  2010.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000116&pid=S0123-7799201400010000200019&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;20&#93; B. Niu, Y. Fan, L. Tan, J. Rao,  and L. Li, "A Review of Bacterial Foraging Optimization Part II: Applications  and Challenges," <i>Adv. Intell. Comput. Theor. Appl.</i>, vol. 93, pp. 544-550,  2010.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000118&pid=S0123-7799201400010000200020&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;21&#93; A. Abraham, H. Guo, and H. Liu,  "Swarm Intelligence: Foundations Perspectives and Applications," in <i>Swarm  Intelligent Systems</i>, N. Nedjah and L. de Macedo, Eds. Springer Berlin  Heidelberg, 2006, pp. 3-25.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000120&pid=S0123-7799201400010000200021&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;22&#93; E. Bonabeau, G. Theraulaz, and  M. Dorigo, <i>Swarm Intelligence: From Natural to Artificial Systems</i>.  Oxford University Press, USA, 1999, p. 307.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000122&pid=S0123-7799201400010000200022&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;23&#93; Y. F. Zhu and X. M. Tang,  "Overview of swarm intelligence," in <i>2010 International Conference on  Computer Application and System Modeling (ICCASM 2010)</i>, 2010, pp. V9-400-V9-403.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000124&pid=S0123-7799201400010000200023&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;24&#93; M. Rouhipour, P. J. Bentley, and  H. Shayani, "Fast bio-inspired computation using a GPU-based systemic  computer," <i>Parallel Comput.</i>, vol. 36, no. 10-11, pp. 591-617, Oct. 2010.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000126&pid=S0123-7799201400010000200024&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;25&#93; F. J. Esteban, D. D&iacute;az, P.  Hern&aacute;ndez, J. a. Caballero, G. Dorado, and S. G&aacute;lvez, "Direct approaches to  exploit many-core architecture in bioinformatics," <i>Futur. Gener. Comput.  Syst.</i>, vol. 29, no. 1, pp. 15-26, Jan. 2013.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000128&pid=S0123-7799201400010000200025&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;26&#93; A. Brodtkorb, C. Dyken, and T.  Hagen, "State-of-the-art in heterogeneous computing," <i>Sci. Program.</i>,  vol. 18, no. 1, pp. 1-33, 2010.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000130&pid=S0123-7799201400010000200026&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;27&#93; D. H. Jones, A. Powell, C.-S.  Bouganis, and P. Y. K. Cheung, "GPU Versus FPGA for High Productivity  Computing," in <i>2010 International Conference on Field Programmable Logic and  Applications</i>, 2010, pp. 119-124.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000132&pid=S0123-7799201400010000200027&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;28&#93; NVIDIA, "CUDA C, Programming  Guide." p. 185, 2010.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000134&pid=S0123-7799201400010000200028&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;29&#93; J. Kennedy and R. Eberhart,  "Particle swarm optimization," in <i>Proceedings of ICNN&#039;95 - International  Conference on Neural Networks</i>, 1995, vol. 4, pp. 1942-1948.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000136&pid=S0123-7799201400010000200029&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;30&#93; K. M. Passino, "Biomimicry of  bacterial foraging for distributed optimization and control," <i>IEEE Control  Syst. Mag.</i>, vol. 22, no. 3, pp. 52-67, Jun. 2002.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000138&pid=S0123-7799201400010000200030&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;31&#93; P. N. Suganthan, N. Hansen, J.  J. Liang, K. Deb, A. Auger, and S. Tiwari, "Problem Definitions and Evaluation  Criteria for the CEC 2005 Special Session on Real-Parameter Optimization,"  2005.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000140&pid=S0123-7799201400010000200031&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;32&#93; I. C. Trelea, "The particle  swarm optimization algorithm: convergence analysis and parameter selection," <i>Inf. Process. Lett.</i>, vol. 85, no. 6, pp. 317-325,  Mar. 2003.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000142&pid=S0123-7799201400010000200032&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;33&#93;  Y. Noa, "Estrategias para mejorar el Balance entre Exploraci&oacute;n y Explotaci&oacute;n en  Optimizaci&oacute;n de Enjambre de Part&iacute;culas," M.Sc Thesis, Facultad de Matem&aacute;tica y  Computaci&oacute;n, Universidad de La Habana, La Habana-Cuba, 2011.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000144&pid=S0123-7799201400010000200033&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>  </font>      ]]></body><back>
<ref-list>
<ref id="B1">
<label>1</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Bentley]]></surname>
<given-names><![CDATA[P. J.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Systemic computation: A model of interacting systems with natural characteristics]]></article-title>
<source><![CDATA[Int. J. Parallel, Emergent Distrib. Syst.]]></source>
<year>Apr.</year>
<month> 2</month>
<day>00</day>
<volume>22</volume>
<numero>2</numero>
<issue>2</issue>
<page-range>103-121</page-range></nlm-citation>
</ref>
<ref id="B2">
<label>2</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[McCool]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
<name>
<surname><![CDATA[Reinders]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
<name>
<surname><![CDATA[Robison]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
</person-group>
<source><![CDATA[Structured Parallel Programming: Patterns for Efficient Computation]]></source>
<year>2012</year>
<page-range>406</page-range><publisher-name><![CDATA[Morgan Kaufmann]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B3">
<label>3</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Souza]]></surname>
<given-names><![CDATA[D. L.]]></given-names>
</name>
<name>
<surname><![CDATA[Monteiro]]></surname>
<given-names><![CDATA[G. D.]]></given-names>
</name>
<name>
<surname><![CDATA[Martins]]></surname>
<given-names><![CDATA[T. C.]]></given-names>
</name>
<name>
<surname><![CDATA[Dmitriev]]></surname>
<given-names><![CDATA[V. A.]]></given-names>
</name>
<name>
<surname><![CDATA[Teixeira]]></surname>
<given-names><![CDATA[O. N.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[PSO-GPU: accelerating particle swarm optimization in CUDA-based graphics processing units]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ Proceedings of the 13th annual conference companion on Genetic and evolutionary computation]]></conf-name>
<conf-date>2011</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B4">
<label>4</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Cardenas-Montes]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
<name>
<surname><![CDATA[Vega-Rodriguez]]></surname>
<given-names><![CDATA[M. a.]]></given-names>
</name>
<name>
<surname><![CDATA[Rodriguez-Vazquez]]></surname>
<given-names><![CDATA[J. J.]]></given-names>
</name>
<name>
<surname><![CDATA[Gomez-Iglesias]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Accelerating Particle Swarm Algorithm with GPGPU]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ 2011 19th International Euromicro Conference on Parallel, Distributed and Network-Based Processing]]></conf-name>
<conf-date>2011</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B5">
<label>5</label><nlm-citation citation-type="book">
<collab>IBISlab</collab>
<source><![CDATA["CUDA-PSO 2.0." Intelligent Bio-Inspired Systems Laboratory]]></source>
<year>2011</year>
<publisher-name><![CDATA[Universita&#039; degli Studi di Parma]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B6">
<label>6</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Mussi]]></surname>
<given-names><![CDATA[L.]]></given-names>
</name>
<name>
<surname><![CDATA[Daolio]]></surname>
<given-names><![CDATA[F.]]></given-names>
</name>
<name>
<surname><![CDATA[Cagnoni]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Evaluation of parallel particle swarm optimization algorithms within the CUDATM architecture]]></article-title>
<source><![CDATA[Inf. Sci. (Ny).]]></source>
<year>Oct.</year>
<month> 2</month>
<day>01</day>
<volume>181</volume>
<numero>20</numero>
<issue>20</issue>
<page-range>4642-4657</page-range></nlm-citation>
</ref>
<ref id="B7">
<label>7</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Veronese]]></surname>
<given-names><![CDATA[L. D. P.]]></given-names>
</name>
<name>
<surname><![CDATA[Krohling]]></surname>
<given-names><![CDATA[R. A.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Swarm&#039;s flight: Accelerating the particles using C-CUDA]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ 2009 IEEE Congress on Evolutionary Computation]]></conf-name>
<conf-date>2009</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B8">
<label>8</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Zhou]]></surname>
<given-names><![CDATA[Y.]]></given-names>
</name>
<name>
<surname><![CDATA[Tan]]></surname>
<given-names><![CDATA[Y.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[GPU-based parallel particle swarm optimization]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[1 2009 IEEE Congress on Evolutionary Computation]]></conf-name>
<conf-date>2009</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B9">
<label>9</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Zhu]]></surname>
<given-names><![CDATA[W.]]></given-names>
</name>
<name>
<surname><![CDATA[Curry]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Particle Swarm with graphics hardware acceleration and local pattern search on bound constrained problems]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[0737173 2009 IEEE Swarm Intelligence Symposium]]></conf-name>
<conf-date>2009</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B10">
<label>10</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Bai]]></surname>
<given-names><![CDATA[H.]]></given-names>
</name>
<name>
<surname><![CDATA[OuYang]]></surname>
<given-names><![CDATA[D.]]></given-names>
</name>
<name>
<surname><![CDATA[Li]]></surname>
<given-names><![CDATA[X.]]></given-names>
</name>
<name>
<surname><![CDATA[He]]></surname>
<given-names><![CDATA[L.]]></given-names>
</name>
<name>
<surname><![CDATA[Yu]]></surname>
<given-names><![CDATA[H.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[MAX-MIN Ant System on GPU with CUDA]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ 2009 Fourth International Conference on Innovative Computing, Information and Control (ICICIC)]]></conf-name>
<conf-date>2009</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B11">
<label>11</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Fu]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
<name>
<surname><![CDATA[Lei]]></surname>
<given-names><![CDATA[L.]]></given-names>
</name>
<name>
<surname><![CDATA[Zhou]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[A parallel Ant Colony Optimization algorithm with GPU-acceleration based on All-In-Roulette selection]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[2 Third International Workshop on Advanced Computational Intelligence]]></conf-name>
<conf-date>2010</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B12">
<label>12</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Jiening]]></surname>
<given-names><![CDATA[W.]]></given-names>
</name>
<name>
<surname><![CDATA[Jiankang]]></surname>
<given-names><![CDATA[D.]]></given-names>
</name>
<name>
<surname><![CDATA[Chunfeng]]></surname>
<given-names><![CDATA[Z.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Implementation of Ant Colony Algorithm Based on GPU]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ 2009 Sixth International Conference on Computer Graphics, Imaging and Visualization]]></conf-name>
<conf-date>2009</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B13">
<label>13</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[You]]></surname>
<given-names><![CDATA[Y.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Parallel Ant System for Traveling Salesman Problem on GPUs]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ GECCO 2009-Genetic and Evolutionary Computation]]></conf-name>
<conf-date>2009</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B14">
<label>14</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Cecilia]]></surname>
<given-names><![CDATA[J. M.]]></given-names>
</name>
<name>
<surname><![CDATA[García]]></surname>
<given-names><![CDATA[J. M.]]></given-names>
</name>
<name>
<surname><![CDATA[Nisbet]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
<name>
<surname><![CDATA[Amos]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
<name>
<surname><![CDATA[Ujaldón]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Enhancing data parallelism for Ant Colony Optimization on GPUs]]></article-title>
<source><![CDATA[J. Parallel Distrib. Comput.]]></source>
<year>Jan.</year>
<month> 2</month>
<day>01</day>
<volume>73</volume>
<numero>1</numero>
<issue>1</issue>
<page-range>42-51</page-range></nlm-citation>
</ref>
<ref id="B15">
<label>15</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Delévacq]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
<name>
<surname><![CDATA[Delisle]]></surname>
<given-names><![CDATA[P.]]></given-names>
</name>
<name>
<surname><![CDATA[Gravel]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
<name>
<surname><![CDATA[Krajecki]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Parallel Ant Colony Optimization on Graphics Processing Units]]></article-title>
<source><![CDATA[J. Parallel Distrib. Comput.]]></source>
<year>Jan.</year>
<month> 2</month>
<day>01</day>
<volume>73</volume>
<numero>1</numero>
<issue>1</issue>
<page-range>52-61</page-range></nlm-citation>
</ref>
<ref id="B16">
<label>16</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Li]]></surname>
<given-names><![CDATA[S.-A.]]></given-names>
</name>
<name>
<surname><![CDATA[Hsu]]></surname>
<given-names><![CDATA[C.-C.]]></given-names>
</name>
<name>
<surname><![CDATA[Wong]]></surname>
<given-names><![CDATA[C.-C.]]></given-names>
</name>
<name>
<surname><![CDATA[Yu]]></surname>
<given-names><![CDATA[C.-J.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Hardware/software co-design for particle swarm optimization algorithm]]></article-title>
<source><![CDATA[Inf. Sci. (Ny).]]></source>
<year>Oct.</year>
<month> 2</month>
<day>01</day>
<volume>181</volume>
<numero>20</numero>
<issue>20</issue>
<page-range>4582-4596</page-range></nlm-citation>
</ref>
<ref id="B17">
<label>17</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Scheuermann]]></surname>
<given-names><![CDATA[B.]]></given-names>
</name>
<name>
<surname><![CDATA[So]]></surname>
<given-names><![CDATA[K.]]></given-names>
</name>
<name>
<surname><![CDATA[Guntsch]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
<name>
<surname><![CDATA[Middendorf]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
<name>
<surname><![CDATA[Diessel]]></surname>
<given-names><![CDATA[O.]]></given-names>
</name>
<name>
<surname><![CDATA[ElGindy]]></surname>
<given-names><![CDATA[H.]]></given-names>
</name>
<name>
<surname><![CDATA[Schmeck]]></surname>
<given-names><![CDATA[H.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[FPGA implementation of population-based ant colony optimization]]></article-title>
<source><![CDATA[Appl. Soft Comput.]]></source>
<year>Aug.</year>
<month> 2</month>
<day>00</day>
<volume>4</volume>
<numero>3</numero>
<issue>3</issue>
<page-range>303-322</page-range></nlm-citation>
</ref>
<ref id="B18">
<label>18</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Dávila]]></surname>
<given-names><![CDATA[M. A.]]></given-names>
</name>
<name>
<surname><![CDATA[Alfonso]]></surname>
<given-names><![CDATA[W.]]></given-names>
</name>
<name>
<surname><![CDATA[Caicedo]]></surname>
<given-names><![CDATA[E.]]></given-names>
</name>
</person-group>
<source><![CDATA[Implementación de un algoritmo basado en colonia de hormigas usando el software DSPBuilder]]></source>
<year></year>
</nlm-citation>
</ref>
<ref id="B19">
<label>19</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Niu]]></surname>
<given-names><![CDATA[B.]]></given-names>
</name>
<name>
<surname><![CDATA[Fan]]></surname>
<given-names><![CDATA[Y.]]></given-names>
</name>
<name>
<surname><![CDATA[Tan]]></surname>
<given-names><![CDATA[L.]]></given-names>
</name>
<name>
<surname><![CDATA[Rao]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
<name>
<surname><![CDATA[Li]]></surname>
<given-names><![CDATA[L.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[A Review of Bacterial Foraging Optimization Part I: Background and Development]]></article-title>
<source><![CDATA[Adv. Intell. Comput. Theor. Appl.]]></source>
<year>2010</year>
<volume>93</volume>
<page-range>535-543</page-range></nlm-citation>
</ref>
<ref id="B20">
<label>20</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Niu]]></surname>
<given-names><![CDATA[B.]]></given-names>
</name>
<name>
<surname><![CDATA[Fan]]></surname>
<given-names><![CDATA[Y.]]></given-names>
</name>
<name>
<surname><![CDATA[Tan]]></surname>
<given-names><![CDATA[L.]]></given-names>
</name>
<name>
<surname><![CDATA[Rao]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
<name>
<surname><![CDATA[Li]]></surname>
<given-names><![CDATA[L.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[A Review of Bacterial Foraging Optimization Part II: Applications and Challenges]]></article-title>
<source><![CDATA[Adv. Intell. Comput. Theor. Appl.]]></source>
<year>2010</year>
<volume>93</volume>
<page-range>544-550</page-range></nlm-citation>
</ref>
<ref id="B21">
<label>21</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Abraham]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
<name>
<surname><![CDATA[Guo]]></surname>
<given-names><![CDATA[H.]]></given-names>
</name>
<name>
<surname><![CDATA[Liu]]></surname>
<given-names><![CDATA[H.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Swarm Intelligence: Foundations Perspectives and Applications]]></article-title>
<person-group person-group-type="editor">
<name>
<surname><![CDATA[Nedjah]]></surname>
<given-names><![CDATA[N.]]></given-names>
</name>
<name>
<surname><![CDATA[de Macedo]]></surname>
<given-names><![CDATA[L.]]></given-names>
</name>
</person-group>
<source><![CDATA[Swarm Intelligent Systems]]></source>
<year>2006</year>
<page-range>3-25</page-range><publisher-name><![CDATA[Eds. Springer Berlin Heidelberg]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B22">
<label>22</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Bonabeau]]></surname>
<given-names><![CDATA[E.]]></given-names>
</name>
<name>
<surname><![CDATA[Theraulaz]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
<name>
<surname><![CDATA[Dorigo]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
</person-group>
<source><![CDATA[Swarm Intelligence: From Natural to Artificial Systems]]></source>
<year>1999</year>
<page-range>307</page-range><publisher-name><![CDATA[Oxford University Press]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B23">
<label>23</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Zhu]]></surname>
<given-names><![CDATA[Y. F.]]></given-names>
</name>
<name>
<surname><![CDATA[Tang]]></surname>
<given-names><![CDATA[X. M.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Overview of swarm intelligence]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ 2010 International Conference on Computer Application and System Modeling (ICCASM 2010)]]></conf-name>
<conf-date>2010</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B24">
<label>24</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Rouhipour]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
<name>
<surname><![CDATA[Bentley]]></surname>
<given-names><![CDATA[P. J.]]></given-names>
</name>
<name>
<surname><![CDATA[Shayani]]></surname>
<given-names><![CDATA[H.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Fast bio-inspired computation using a GPU-based systemic computer]]></article-title>
<source><![CDATA[Parallel Comput.]]></source>
<year>Oct.</year>
<month> 2</month>
<day>01</day>
<volume>36</volume>
<numero>10-11</numero>
<issue>10-11</issue>
<page-range>591-617</page-range></nlm-citation>
</ref>
<ref id="B25">
<label>25</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Esteban]]></surname>
<given-names><![CDATA[F. J.]]></given-names>
</name>
<name>
<surname><![CDATA[Díaz]]></surname>
<given-names><![CDATA[D.]]></given-names>
</name>
<name>
<surname><![CDATA[Hernández]]></surname>
<given-names><![CDATA[P.]]></given-names>
</name>
<name>
<surname><![CDATA[Caballero]]></surname>
<given-names><![CDATA[J. a.]]></given-names>
</name>
<name>
<surname><![CDATA[Dorado]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
<name>
<surname><![CDATA[Gálvez]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Direct approaches to exploit many-core architecture in bioinformatics]]></article-title>
<source><![CDATA[Futur. Gener. Comput. Syst.]]></source>
<year>Jan.</year>
<month> 2</month>
<day>01</day>
<volume>29</volume>
<numero>1</numero>
<issue>1</issue>
<page-range>15-26</page-range></nlm-citation>
</ref>
<ref id="B26">
<label>26</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Brodtkorb]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
<name>
<surname><![CDATA[Dyken]]></surname>
<given-names><![CDATA[C.]]></given-names>
</name>
<name>
<surname><![CDATA[Hagen]]></surname>
<given-names><![CDATA[T.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[State-of-the-art in heterogeneous computing]]></article-title>
<source><![CDATA[Sci. Program.]]></source>
<year>2010</year>
<volume>18</volume>
<numero>1</numero>
<issue>1</issue>
<page-range>1-33</page-range></nlm-citation>
</ref>
<ref id="B27">
<label>27</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Jones]]></surname>
<given-names><![CDATA[D. H.]]></given-names>
</name>
<name>
<surname><![CDATA[Powell]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
<name>
<surname><![CDATA[Bouganis]]></surname>
<given-names><![CDATA[C.-S.]]></given-names>
</name>
<name>
<surname><![CDATA[Cheung]]></surname>
<given-names><![CDATA[P. Y. K.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[GPU Versus FPGA for High Productivity Computing]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ 2010 International Conference on Field Programmable Logic and Applications]]></conf-name>
<conf-date>2010</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B28">
<label>28</label><nlm-citation citation-type="">
<collab>NVIDIA</collab>
<source><![CDATA[CUDA C, Programming Guide]]></source>
<year>2010</year>
<page-range>185</page-range></nlm-citation>
</ref>
<ref id="B29">
<label>29</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Kennedy]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
<name>
<surname><![CDATA[Eberhart]]></surname>
<given-names><![CDATA[R.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Particle swarm optimization]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ Proceedings of ICNN&#039;95 - International Conference on Neural Networks]]></conf-name>
<conf-date>1995</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B30">
<label>30</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Passino]]></surname>
<given-names><![CDATA[K. M.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Biomimicry of bacterial foraging for distributed optimization and control]]></article-title>
<source><![CDATA[IEEE Control Syst. Mag.]]></source>
<year>Jun.</year>
<month> 2</month>
<day>00</day>
<volume>22</volume>
<numero>3</numero>
<issue>3</issue>
<page-range>52-67</page-range></nlm-citation>
</ref>
<ref id="B31">
<label>31</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Suganthan]]></surname>
<given-names><![CDATA[P. N.]]></given-names>
</name>
<name>
<surname><![CDATA[Hansen]]></surname>
<given-names><![CDATA[N.]]></given-names>
</name>
<name>
<surname><![CDATA[Liang]]></surname>
<given-names><![CDATA[J. J.]]></given-names>
</name>
<name>
<surname><![CDATA[Deb]]></surname>
<given-names><![CDATA[K.]]></given-names>
</name>
<name>
<surname><![CDATA[Auger]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
<name>
<surname><![CDATA[Tiwari]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
</person-group>
<source><![CDATA[Problem Definitions and Evaluation Criteria for the CEC 2005 Special Session on Real-Parameter Optimization]]></source>
<year>2005</year>
</nlm-citation>
</ref>
<ref id="B32">
<label>32</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Trelea]]></surname>
<given-names><![CDATA[I. C.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[The particle swarm optimization algorithm: convergence analysis and parameter selection]]></article-title>
<source><![CDATA[Inf. Process. Lett.]]></source>
<year>Mar.</year>
<month> 2</month>
<day>00</day>
<volume>85</volume>
<numero>6</numero>
<issue>6</issue>
<page-range>317-325</page-range></nlm-citation>
</ref>
<ref id="B33">
<label>33</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Noa]]></surname>
<given-names><![CDATA[Y.]]></given-names>
</name>
</person-group>
<source><![CDATA[Estrategias para mejorar el Balance entre Exploración y Explotación en Optimización de Enjambre de Partículas]]></source>
<year></year>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
