Nuevas Heurı́sticas Inspiradas en la Naturaleza para Optimización Numérica Efrén Mezura-Montes1, Omar Cetina-Domı́nguez1 y Betania Hernández-Ocaña2 1 2 Laboratorio Nacional de Informática Avanzada (LANIA A.C.) Rébsamen 80, Centro, Xalapa, Veracruz, 91000 MEXICO emezura@lania.mx,omarcetina@hotmail.com Universidad Juárez Autónoma de Tabasco División Académica de Informática y Sistemas Km. 1 Carr. Cunduacán-Jalpa de Méndez betania h o@hotmail.com Resumen En este capı́tulo se presenta una introducción a las heurı́sticas inspiradas en fenómenos de forrajeo. Se presenta un panorama general de este tipo de propuestas para resolver problemas de optimización y posteriormente se introducen sus elementos principales. Después de ello, dos algoritmos bio-inspirados son detallados: La Colonia Artificial de Abejas (ABC) y la versión mejorada de la Optimización Mediante el Forrajeo de Bacterias (MBFOA). Se explica la forma en que ambos algoritmos representan las soluciones de un problema, la manera de escoger las mejores soluciones para guiar a las demás en el proceso de búsqueda, los operadores que permiten generar nuevas soluciones a partir de las ya existentes y los mecanismos de eliminación para mantener aquellas soluciones más competitivas. El uso de ejemplos numéricos sencillos apoyan el entendimiento de ambos algoritmos que, en esencia, son muy simples de implementar y usar. 1. Introducción Dentro del quehacer humano se encuentra la resolución de problemáticas complejas. Entre ellas, se encuentran los problemas de optimización, que consisten en buscar, en un conjunto de soluciones posibles para el problema en cuestión, aquella que satisfaga de mejor manera una serie de condiciones planteadas. Los problemas de optimización pueden clasificarse en dos tipos: 1. Problemas de optimización numérica: Se busca un conjunto de valores para las variables del problema de manera que al sustituirse en la función objetivo se maximice o minimice el valor de esta función. Un ejemplo de este problema puede ser el diseño de una pieza mecánica donde se buscan valores óptimos de sus dimensiones para minimizar su costo de fabricación. 2 Mezura-Montes, Cetina-Domı́nguez y Hernández-Ocaña 2. Problemas de optimización combinatoria: Se busca encontrar el ordenamiento de un conjunto de elementos de manera que se maximice o minimice el valor de la función objetivo. Un ejemplo de este tipo de problemas es el del agente viajero, que debe recorrer un conjunto de ciudades, pasando por ellas sólo una vez, de manera que regrese a su punto de salida y se minimice el costo del viaje. Aquı́ se desea encontrar el orden óptimo de recorrido de las ciudades. Este capı́tulo se centra en el primer tipo de problemas, conocido como el problema general de programación no lineal, que se define, sin pérdida de generalidad, como: Encontrar x que minimiza f (x) (1) gi (x) ≤ 0, i = 1, . . . , m (2) hj (x) = 0, j = 1, . . . , p (3) sujeta a: donde x ∈ IRn es un vector de n variables de decisión x = [x1 , x2 , . . . , xn ]T y cada xi , i = 1, ..., n está acotado por lı́mites inferiores y superiores Li ≤ xi ≤ Ui , los cuales definen el espacio de búsqueda S, F es el conjunto de todas las soluciones que satisfacen las restricciones del problema y se le llama zona factible, siendo claro que F ∈ S, m es el número de restricciones de desigualdad y p es el número de restricciones de igualdad. Las restricciones y la función objetivo pueden ser lineales y no lineales. En este problema se pretende encontrar una solución que minimice una cierta medida de calidad, conocida como función objetivo (1) que además debe satisfacer un conjunto de restricciones asociadas al problema (2)-(3). Detallando el ejemplo propuesto anteriormente sobre el diseño de la pieza mecánica, se quiere encontrar su costo mı́nimo de construcción, el cual se modela mediante una función (no lineal tal vez) y que depende de variables como el largo y el ancho de la pieza, ası́ como el grosor del material. Además, pueden existir restricciones de espacio, de manera que la pieza no puede ser ni muy grande ni muy chica, pues debe incorporarse a un mecanismo más grande. 1.1. Técnicas de Optimización La Investigación de Operaciones (IO) es el área dentro de las matemáticas dedicada al estudio, entre otros temas, de técnicas para la resolución de problemas de optimización. La IO plantea la determinación del mejor curso de acción de un problema de decisión con la restricción de productos limitados [1]. Deb [2] clasifica las técnicas para resolver problemas de optimización numérica en las siguientes categorı́as: Nuevas Heurı́sticas para Optimización Numérica 3 1. Métodos tradicionales Técnicas de variable simple: Divididas en métodos directos (utilizan la función a optimizar para guiar la búsqueda) y de gradiente (utilizan información del gradiente para guiar la búsqueda). Técnicas multivariable: Divididas en métodos directos y de gradiente. Realizan búsquedas en múltiples dimensiones, valiéndose, en ocasiones, de técnicas de variable simple. Técnicas para problemas con restricciones: Realizan búsquedas en espacios restringidos, usualmente utilizando técnicas multivariable y/o de variable simple de manera iterativa. Técnicas especializadas: Métodos para problemas particulares como programación entera (variables que sólo toman valores enteros). 2. Métodos no tradicionales. Métodos que incorporan conceptos heurı́sticos para mejorar la búsqueda. Este capı́tulo se centrará precisamente en dos propuestas novedosas que forman parte de los métodos no tradicionales para resolver problemas de optimización numérica. 1.2. Métodos no tradicionales (heurı́sticas) Dada la existencia de múltiples formas de resolver el problema de optimización numérica en su forma más general, una pregunta justa es ¿Por qué recurrir a métodos no tradicionales? La justificación para utilizar métodos heurı́sticos puede basarse en las caracterı́sticas de los problemas del mundo real, que pueden ser tan particulares que hacen difı́cil (y a veces imposible) el aplicar los métodos tradicionales en su resolución. Por otro lado, existen problemas donde estos métodos pueden ser aplicados, sin embargo los resultados y/o el tiempo requerido para obtener una solución no son los esperados por quien resuelve el problema. Se pueden distinguir fuentes de dificultad al tratar de resolver problemas de optimización [3]: El número de posibles soluciones (espacio de búsqueda) es demasiado grande. El problema es tan complicado que, con la intención de obtener alguna solución, se deben utilizar modelos simplificados del mismo y por ende la solución es poco útil. La función de evaluación que describe la calidad de cada solución en el espacio de búsqueda varı́a con el tiempo y/o tiene ruido. Las soluciones posibles están altamente restringidas, lo cual dificulta incluso la generación de al menos una solución factible (es decir, que cumpla con las restricciones del problema). Los métodos tradicionales siempre deben considerarse como la primera opción para resolver un problema de optimización, dado que pueden garantizar la convergencia al óptimo global (la mejor de todas las posibles soluciones) 4 Mezura-Montes, Cetina-Domı́nguez y Hernández-Ocaña bajo ciertas condiciones. Sin embargo, si la aplicación del método tradicional es compleja, el costo computacional es alto y/o los resultados son buenos pero no los esperados (óptimas locales, soluciones buenas en una cierta zona del espacio de búsqueda, pero que no son mejores que el óptimo global), entonces puede considerarse el uso de un método no tradicional, una heurı́stica. Los métodos heurı́sticos no pueden garantizar el encontrar la mejor solución de un problema, sin embargo, devolverán una solución aceptable en un tiempo razonable; de ahı́ la importancia de su estudio. De hecho, existe en la literatura especializada una gran cantidad de publicaciones donde se destacan casos de éxito del uso de métodos no tradicionales en la solución de problemas complejos [4, 5, 6]. Heurı́sticas con probado éxito en la resolución de problemas numéricos y combinatorios son, por ejemplo, el recocido simulado [7], que basa su funcionamiento en el proceso fı́sico del tratamiento térmico de materiales, donde el material es calentado inicialmente a altas temperaturas y después, mediante una variación de temperatura muy puntual, es enfriado. La intención es que el material obtenga caracterı́sticas particulares en el proceso. Esta idea ha sido utilizada para resolver problemas de optimización (numérica principalmente) agregando una temperatura inicial y un horario de enfriamiento que permite disminuirla gradualmente de manera que el algoritmo de búsqueda seleccione una nueva solución aunque no mejore el valor de calidad de la solución que se tenga en ese momento. Con ello, se agrega un aspecto estocástico al proceso de búsqueda con la intención de evitar óptimos locales. Otra heurı́stica, que en su propuesta original no agrega aspectos aleatorios, pero que pueden ser incluidos, es la Búsqueda Tabú [8], la cual utiliza una “memoria” para almacenar movimientos (soluciones) previamente realizados (encontradas) y evitar realizarlos (recorrerlas) de nuevo. Las estructuras de memoria pueden tener diferente vigencia (corto, mediando o largo plazo) dependiendo de la complejidad del problema a resolver. De ahı́ que la implementación de la Búsqueda Tabú puede requerir de mecanismos adicionales de búsqueda y estructuras de datos adecuadas para realizar un recorrido eficaz y eficiente de la memoria y evitar que este manejo sea aún más costoso que la optimización misma. La búsqueda Tabú se ha aplicado principalmente en problemas de optimización combinatoria. Dentro de los métodos heurı́sticos (o no tradicionales) se tiene un grupo que basa su funcionamiento en fenómenos “inteligentes” encontrados en la naturaleza y conocidos como heurı́sticas bio-inspiradas [9] o algoritmos bioinspirados. Dos sub-grupos se distinguen de acuerdo con el tipo de fenómeno natural en el que se basan: 1. Algoritmos evolutivos [10] 2. Inteligencia colectiva [9] Los algoritmos evolutivos basan su funcionamiento en la teorı́a de la evolución de las especies, la supervivencia del más apto y la transmisión de caracterı́sticas de padres a hijos [11]. Por otro lado, la inteligencia colectiva toma Nuevas Heurı́sticas para Optimización Numérica 5 comportamientos de seres vivos que interactuan de manera local con su ambiente, y de esa interacción surgen comportamientos sociales que permiten a estos seres, simples de manera individual, resolver problemáticas complejas de manera conjunta (parvadas de aves, bancos de peces, cúmulos de insectos, hormigas, bacterias, entre otros) [9]. En este capı́tulo se analizarán dos heurı́sticas bio-inspiradas basadas en inteligencia colectiva: 1. La colonia artificial de abejas. 2. La optimización mediante el forrajeo de bacterias. Este capı́tulo está organizado como sigue: En la Sección 2 se presentan los componentes de un algoritmo bio-inspirado. Posteriormente la Sección 3 presenta a la colonia artificial de abejas y la optimización mediante el forrajeo de bacterias se detalla en la Sección 4. Finalmente, las conclusiones se resumen en la Sección 5. 2. Componentes de un algoritmo bio-inspirado Los algoritmos evolutivos y de inteligencia colectiva, de manera general, trabajan de la siguiente manera, véase la Figura 1: 1. Generar un conjunto (población) de soluciones (individuos) al problema. 2. Evaluar cada solución en la función objetivo a optimizar (1). 3. Seleccionar las mejores soluciones de la población con base en su valor en la función objetivo (1). 4. Generar nuevas soluciones a partir de las mejores soluciones utilizando operadores de variación. 5. Evaluar las nuevas soluciones. 6. Escoger las soluciones que formarán parte de la siguiente iteración (generación). Aunque existen diferencias especı́ficas entre los diversos algoritmos evolutivos y aquellos de inteligencia colectiva, tienen componentes comunes, los cuales se enumeran a continuación: Representación de soluciones: Las soluciones se pueden representar de diferentes formas (cadenas binarias, números enteros). Para el caso de la optimización numérica, la representación más adecuada es utilizar números reales, puesto que las variables en este tipo de problemas suelen tomar precisamente este tipo de valores. Por ende, cada solución consistirá de un vector de números reales. Mecanismo de selección: La guı́a de la búsqueda se realiza mediante este mecanismo o en el reemplazo (explicado más adelante). La intención es escoger un subconjunto de soluciones de la población que tengan caracterı́sticas sobresalientes, de manera que puedan generar nuevas soluciones 6 Mezura-Montes, Cetina-Domı́nguez y Hernández-Ocaña aún mejores. El criterio para escoger depende del valor de la función objetivo (1) de cada solución. Operadores de variación: Los operadores de variación son los que permiten generar nuevas soluciones a partir de las soluciones existentes (aquellas escogidas con los mecanismos de selección). Los operadores emulan comportamientos como la reproducción (cruzas), variaciones aleatorias a nivel genético (mutaciones) o movimientos cooperativos (giros, nados, vuelos). Mecanismos de reemplazo: Una vez que se tienen, tanto al conjunto de soluciones actuales además de las recién generadas, se utilizan mecanismos para escoger aquellas que formarán parte de la población para la siguiente generación. Este proceso puede basarse en la calidad de cada solución (1), en la “edad” de las soluciones, o tomando en cuenta aspectos estocásticos. Inicio Poblacion Fin Seleccion Reemplazo Nuevas Soluciones Soluciones seleccionadas Operadores de variacion Figura 1. Esquema general de un algoritmo bio-inspirado. Con base en los componentes antes descritos se presentarán dos algoritmos heurı́sticos de la inteligencia colectiva: La Colonia Artificial de Abejas (ABC) y la Optimización Mediante el Forrajeo de Bacterias (BFOA). 3. La Colonia Artificial de Abejas El proceso de búsqueda de néctar en las flores por parte de abejas melı́feras ha sido visto como un proceso de optimización. La forma en la que este tipo de insectos sociales logran centrar esfuerzos en zonas con altas cantidades de fuentes de alimento se ha modelado como una heurı́stica para optimización. A pesar de que existen diversos modelos basados en abejas [12], para efectos de este trabajo la explicación se basará en el modelo propuesto por Karaboga Nuevas Heurı́sticas para Optimización Numérica 7 [13] que resuelve problemas de optimización numérica mediante dos comportamientos: El reclutamiento de abejas en una fuente de alimento y el abandono de una fuente. El modelo biológico de recolección de alimento en abejas melı́feras consta de los siguientes elementos mı́nimos [13]: Fuentes de alimento: El valor de una fuente de alimento depende de muchos factores, como lo son la cercanı́a a la colmena, la concentración de alimento y la facilidad para extraerlo. Por simplicidad es posible representar la rentabilidad de una fuente en un solo valor numérico. Recolectoras empleadas: Estas abejas están asociadas con una fuente particular de alimento la cual están explotando, es decir, están empleadas para con ella. Las abejas empleadas comparten la información sobre su fuente de alimento, como la ubicación y rentabilidad hacia las abejas recolectoras. Recolectoras desempleadas: Están constantemente buscando una fuente de alimento a la cual explotar. Hay dos tipos de recolectora desempleada: la exploradora, que busca en las cercanı́as de la colmena por nuevas fuentes de alimento y la observadora, que espera en la colmena y elige una fuente de alimento con base en la información compartida por una recolectora empleada. La información sobre las fuentes de alimento es compartida por las recolectoras empleadas por medio de una danza cuya duración indica la rentabilidad de la fuente, el ángulo con respecto al sol indica la dirección de la fuente y el número de movimientos en zig-zag durante la danza indica la distancia. Dado que las danzas de las fuentes más rentables son de mayor duración, existe una mayor probabilidad de ser observada por recolectoras desempleadas, aumentando la probabilidad de que una recolectora elija dicha fuente de alimento. Cuando una fuente de alimento se agota, la abeja o abejas empleadas en ellas se convierten en abejas desempleadas y tendrán que decidir entre convertirse en abejas exploradoras o regresar a la colmena como abejas observadoras. En el algoritmo ABC la colonia de abejas artificiales se compone también de 3 grupos de abejas: abejas empleadas, abejas observadoras y abejas exploradoras. El número de abejas empleadas es usualmente igual al número de fuentes de alimento y se asignará una abeja empleada a cada una de las fuentes. Al llegar a dicha fuente, la abeja calculará una nueva solución (volará hacia otra fuente de alimento cercana) a partir de ésta y conservará la mejor solución. El número de abejas observadoras es también usualmente igual al de abejas empleadas y se asignarán a una fuente de alimento con base en la aptitud de éstas, al igual que las abejas empleadas, calculará una nueva solución a partir de su fuente de alimento. Cuando una fuente no mejora después de un cierto número de iteraciones se abandona, siendo reemplazado por aquella encontrada por una abeja exploradora, lo cual implica calcular una nueva solución aleatoriamente. Una de las ventajas de este algoritmo es el bajo número de parámetros que requiere como puede verse en la Tabla 1. 8 Mezura-Montes, Cetina-Domı́nguez y Hernández-Ocaña Tabla 1. Parámetros del ABC. Nombre Sı́mbolo Descripción Número de soluciones SN Número de soluciones (fuentes de alimento) Número de ciclos M CN Número total de ciclos (iteraciones) que ejecutará el ABC Lı́mite limit Número de ciclos que se conservará una solución sin mejora antes de ser reemplazada por una nueva generada por una abeja exploradora 3.1. Elementos del ABC Representación de soluciones La representación de las soluciones se lleva a cabo mediante fuentes de alimento, que no son más que vectores de D-dimensiones (donde D es el número de variables del problema). La representación gráfica se muestra en la Figura 2 y la representación vectorial de la solución i en el ciclo g es la presentada en (4): xi,g , i = 1, . . . , SN, g = 1, . . . , M CN 2.1 2.9 10.1 (4) 7.0 Figura 2. Representación de una solución asumiendo 4 variables con números reales. Cada una de las variables que forma parte de la solución está asociada a un rango (Li ≤ xi ≤ Ui ), el cual se debe de tomar en cuenta al momento de generar de manera aleatoria, con una distribución uniforme, las soluciones (fuentes de alimento) iniciales. Mecanismos de selección La forma en que se seleccionan las mejores soluciones es mediante la comunicación entre abejas empleadas y abejas observadoras, de manera que aquellas fuentes de comida con mejor calidad serán más visitadas. El detalle de este funcionamiento se verá más adelante. Nuevas Heurı́sticas para Optimización Numérica 9 Operadores de variación (las abejas) En el ABC, las abejas son vistas como operadores de variación, pues cuando una de ellas llega a una fuente de alimento, calcula una nueva solución candidata vi,g utilizando la fórmula dada en (5). En donde xi,g representa la solución en la que la abeja se encuentra en ese momento, xk,g es una fuente de alimento aleatoria (y distinta de xi,g ), g es el número de ciclo actual del programa y φ es un número real aleatorio en el intervalo [-1,1]. vi,g = xi,g + φ · (xi,g − xk,g ) (5) En la Figura 3 puede verse un ejemplo gráfico de este cálculo. En primer lugar se observa en la Figura 3(a) el vector que es generado mediante la diferencia entre xi y xk . Posteriormente se genera la solución candidata utilizando (5) en la Figura 3(b). Se nota que v y v ′ se generaron utilizando el mismo valor de φ pero con signo opuesto. Ésto es posible porque el intervalo de φ lo permite ([-1,1]). Y Y xk xk xi− xk v xi xi v’ X (a) X (b) Figura 3. (a) El vector generado por la diferencia entre xi y xk . (b) Dos posibles soluciones candidatas generadas utilizando (5) y el mismo valor φ con signo opuesto. Mecanismos de reemplazo La forma de eliminar soluciones (fuentes de comida) es mediante las abejas exploradoras, que dado el abandono de fuentes de comida no mejoradas en varios ciclos del algoritmo, generan nuevas fuentes de comida de manera totalmente aleatoria. 3.2. Pasos del algoritmo ABC A continuación se detalla el funcionamiento del algoritmo ABC, que puede observarse en la Figura 4. Se comienza inicializando las soluciones que representarán las fuentes de alimento iniciales, siendo SN el número de soluciones 10 Mezura-Montes, Cetina-Domı́nguez y Hernández-Ocaña (uno de los parámetros del algoritmo). Se evalúan estas soluciones y se procede con un ciclo que se repetirá M CN veces, dónde M CN es el número de ciclos máximo. Dentro de este ciclo se comienza con enviar a las abejas empleadas a las fuentes de alimento y calcular nuevas soluciones candidatas utilizando (5), posteriormente se utiliza una selección ambiciosa en la cual se conserva la mejor solución entre la fuente de alimento y su respectiva solución candidata. Con base en la aptitud de las fuentes de alimento que se conserven después del paso anterior se determina cuáles soluciones serán visitadas por abejas observadoras. Las abejas observadoras visitarán estas soluciones y generarán soluciones candidatas utilizando (5). Posteriormente se realizará una selección ambiciosa entre las soluciones candidatas y la solución respectiva (de manera similar que con las abejas empleadas). 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Begin Inicializar la población de soluciones xi,0 , i = 1, . . . , SN Evaluar la población g=1 Repeat Producir nuevas soluciones vi,g para las abejas empleadas utilizando (5) y evaluarlas Conservar la mejor solución entre la actual y la candidata Seleccionar las soluciones que serán visitadas por una abeja observadora según su aptitud Producir nuevas soluciones vi,g para las abejas observadoras utilizando (5) y evaluarlas Conservar la mejor solución entre la actual y la candidata Determinar si existe una fuente abandonada y reemplazarla utilizando una abeja exploradora Memorizar la mejor solución encontrada hasta este momento g =g+1 Until g = M CN End Figura 4. Algoritmo Colonia Artificial de Abejas (ABC) Posteriormente se determina si existe alguna solución abandonada; ésto sucede cuando una solución no es mejorada (no es reemplazada por una solución candidata), durante el número de ciclos establecido por la variable Lı́mite. Lı́mite esta dada por la fórmula (SN ∗ D) donde SN es el número de soluciones y D es el número de variables del problema. De encontrarse alguna fuente abandonada se reemplaza con una nueva encontrada por una abeja exploradora, que en este caso es una nueva solución calculada aleatoriamente dentro del espacio de búsqueda. Nuevas Heurı́sticas para Optimización Numérica 11 Finalmente la mejor solución encontrada durante el ciclo se compara con la mejor solución en memoria y si tiene una mejor aptitud la reemplazará. Se repite el ciclo M CN veces. 3.3. Ejemplo de funcionamiento A continuación se presenta un ejemplo de funcionamiento del ABC aplicado a una función conocida como la esfera, detallada en (6): Minimizar: f (x1 , x2 ) = x21 + x22 (6) Los intervalos para las variables se muestran en (7): −5 ≤ x1 ≤ 5 −5 ≤ x2 ≤ 5 x1 , x2 ∈ R (7) Los valores de los parámetros del ABC para este ejemplo se muestran en la Tabla 2. Tabla 2. Parámetros de ABC empleados en la función de la esfera. Parámetro Valor SN 5 M CN 2 limit 10 Siguiendo el algoritmo mostrado en la Figura 4, primero se inicializa el contador de generaciones con el valor de 0, posteriormente se crea población inicial de manera aleatoria (la cual está dentro del rango especificado en la Tabla 2) y se muestra en la Tabla 3. Tabla 3. Población inicial, el valor de la función para cada individuo se encuentra en la cuarta columna. Fuente 1 (x1,0 ) 2 (x2,0 ) 3 (x3,0 ) 4 (x4,0 ) 5 (x5,0 ) x1 0.5 -0.2 -0.4 0.2 0.1 x2 0.3 0.1 -0.7 0.05 0.9 f (xi ) 0.34 0.05 0.65 0.0425 0.82 Posteriormente se tiene que evaluar cada una de las fuentes de alimento en la función objetivo. Estos valores se muestran en la cuarta columna de la Tabla 3. 12 Mezura-Montes, Cetina-Domı́nguez y Hernández-Ocaña Se inician ahora los ciclos del algoritmo donde el primer paso es enviar las abejas empleadas a las fuentes de alimento y generar nuevas soluciones candidatas, para ello se utilizan los siguientes valores aleatorios que pueden verse en la Tabla 4. Tabla 4. Valores aleatorios para las abejas empleadas en el ciclo 1. Empleada 1 2 3 4 5 k 3 1 5 2 1 φ1 -0.1 0.2 0.7 -0.5 0.3 φ2 0.2 0.5 -0.3 0.7 -0.1 Para la primera abeja empleada se calcula la nueva solución candidata utilizando la fórmula definida por el algoritmo (5) v11 = (0.5) + (−0.1 ∗ (0.5 − (−0.4))) = 0.41 y de la misma forma v12 = (0.3) + (0.2 ∗ (0.3 − (−0.7))) = 0.5, resultando en un valor de la función objetivo de 0.4181. Para la abeja empleada 2 se tiene v21 = (−0.2) + (0.2 ∗ (−0.2 − (0.5))) = −0.34 y v22 = (0.1) + (0.5 ∗ (0.1 − (0.3))) = 0 y un valor de la función objetivo de 0.1156. Para la abeja empleada 3 se tiene v31 = (−0.4) + (0.7 ∗ (−0.4 − (0.1))) = −0.75 y v32 = (−0.7)+(−0.3∗(−0.7−(0.9))) = −0.22 y un valor de la función objetivo de 0.6109. Para la abeja empleada 4 se tiene v41 = (0.2) + (−0.5 ∗ (0.2 − (−0.2))) = 0 y v42 = (0.05) + (0.7 ∗ (0.05 − (0.1))) = 0.015 y un valor de la función objetivo de 0.000225. Para la abeja empleada 5 se tiene v51 = (0.1) + (0.3 ∗ (0.1 − (0.5))) = −0.02 y v52 = (0.9) + (−0.1 ∗ (0.9 − (0.3))) = 0.84 y un valor de la función objetivo de 0.706. Se compara el valor de la fuente de alimento con el de la solución candidata calculada a partir de ella y se conserva la mejor solución, quedando por lo tanto como soluciones hasta el momento los que se muestran en la Tabla 5. Tabla 5. Fuentes de alimento después de la primera ronda de abejas empleadas. Fuente 1 (x1,1a ) 2 (x2,1a ) 3 (x3,1a ) 4 (x4,1a ) 5 (x5,1a ) x1 0.5 -0.2 -0.75 0 -0.02 x2 0.3 0.1 -0.22 0.015 0.84 f (x) 0.34 0.05 0.6109 0.000225 0.706 Nuevas Heurı́sticas para Optimización Numérica 13 El siguiente paso es enviar las abejas observadoras a las mejores fuentes de alimento (con base en su aptitud), utilizando algún mecanismo de selección proporcional. Por motivos de simplicidad, para este ejemplo se determinó enviar tres abejas observadoras a la mejor solución (fuente de alimento 4) y las dos restantes a la segunda mejor (fuente 2). Los valores aleatorios para calcular las soluciones candidatas pueden verse en la Tabla 6. Tabla 6. Valores aleatorios para las abejas observadoras en el ciclo 1. Observadora Fuente elegida 1 4 2 4 3 4 4 2 5 2 k 3 2 5 4 1 φ1 0.2 -0.16 -0.3 0.23 -0.1 φ2 -0.15 0.2 0.12 -0.02 0.3 Se calculan las soluciones candidatas para las abejas observadoras a partir de la fuente seleccionada. Para la observadora 1 v11 = 0.1725, v12 = 0.0103 y f (x) = 0.02986234. La observadora 2 v21 = 0.046, v22 = 0.0167 y f (x) = 0.00239489. Para la observadora 3 v31 = 0.0046, v32 = 0.0315 y f (x) = 0.00101341. En la observadora 4 encontramos v41 = −0.168, v42 = 0.117 y f (x) = 0.041913. Para la observadora 5 v51 = −0.088, v52 = 0.06 y f (x) = 0.011344. Se verifica si alguna de las soluciones candidatas mejora su respectiva fuente de alimento. Ésto sucede para la abeja observadora 5 y la fuente de alimento 2. Realizando el reemplazo las fuentes de alimento al final del ciclo 1 quedan como se muestra en la Tabla 7. Tabla 7. Fuentes de alimento después de la primera ronda de abejas observadoras. Fuente 1 (x1,1 ) 2 (x2,1 ) 3 (x3,1 ) 4 (x4,1 ) 5 (x5,1 ) x1 0.5 -0.088 -0.75 0 -0.02 x2 0.3 0.06 -0.22 0.015 0.84 f (x) 0.34 0.011344 0.6109 0.000225 0.706 El ciclo 2 inicia con el cálculo de soluciones candidatas para cada fuente de alimento, es decir, con las abejas empleadas. A continuación se presenta la tabla con los valores aleatorios utilizados para el cálculo en la Tabla 8. La empleada 1 da los siguientes resultados v11 = 0.5588, v12 = 0.084 y f (x) = 0.31931344. La empleada 2: v21 = −0.0616, v22 = 0.07125 y f (x) = 0.008871123. Empleada 3: v31 = −1.042, v3,2 = 0.0662 y f (x) = 1.09014644. 14 Mezura-Montes, Cetina-Domı́nguez y Hernández-Ocaña Tabla 8. Valores aleatorios para las abejas empleadas en el ciclo 2. Empleada 1 2 3 4 5 k 2 4 5 2 3 φ1 0.1 -0.3 0.4 -0.05 0.3 φ2 -0.9 0.25 -0.27 0.2 -0.1 Empleada 4: v41 = −0.0044, v42 = 0.006 y f (x) = 5.536E-05. Empleada 5: v51 = 0.199, v52 = 0.734 y f (x) = 0.578357. Las fuentes de alimento que son mejoradas por una solución candidata son reemplazadas y se presentan los resultados a continuación en la Tabla 9. Tabla 9. Fuentes de alimento después de la segunda ronda de abejas empleadas. Fuente 1 (x1,2a ) 2 (x2,2a ) 3 (x3,2a ) 4 (x4,2a ) 5 (x5,2a ) x1 0.5588 -0.0616 -0.75 -0.0044 0.199 x2 0.084 0.07125 -0.22 0.006 0.734 f (x) 0.31931344 0.008871123 0.6109 5.536E-05 0.578357 Para las abejas observadoras nuevamente se utilizan tres abejas en la mejor solución (fuente 4) y dos abejas en la segunda mejor (fuente 2) con la intención de representar una selección proporcional con base en la aptitud de la fuente de alimento. Los valores aleatorios utilizados se muestran en la Tabla 10. Tabla 10. Valores aleatorios para las abejas observadoras en el ciclo 2. Observadora Fuente elegida 1 4 2 4 3 4 4 2 5 2 k 1 2 3 5 4 φ1 0.2 -0.51 -0.3 0.01 -0.1 φ2 -0.15 0.2 0.12 0.9 0.3 Se calculan las soluciones candidatas para las abejas observadoras a partir de la fuente seleccionada. Para la observadora 1 v11 = −0.010032, v12 = −0.0642 y f (x) = 0.004222281. La observadora 2 v21 = −0.003828, v22 = −0.052725 y f (x) = 0.002794579. Para la observadora 3 v31 = 0.003056, v32 = 0.2094 y f (x) = 0.043857699. En la observadora 4 se tiene v41 = 0.071306, Nuevas Heurı́sticas para Optimización Numérica 15 v42 = −0.0613 y f (x) = 0.008842236. Para la observadora 5 v51 = −0.032428, v52 = 0.0843 y f (x) = 0.008158065. Se verifica si alguna solución candidata mejora una fuente de alimento y es claro que ésto se cumple con la observadora 5 y la fuente de alimento 2, después de realizar el reemplazo el resultado final después del ciclo 2 se presenta a continuación en la Tabla 11 Tabla 11. Fuentes de alimento después de la segunda ronda de abejas observadoras. Fuente 1 (x1,2 ) 2 (x2,2 ) 3 (x3,2 ) 4 (x4,2 ) 5 (x5,2 ) x1 0.5588 -0.032428 -0.75 -0.0044 0.199 x2 0.084 0.0843 -0.22 0.006 0.734 f (x) 0.31931344 0.008158065 0.6109 5.536E-05 0.578357 La solución a reportar será la fuente 4, con x1 = −0.0044, x2 = 0.006 y f (x) = 5.536E-05 Como datos adicionales, el mı́nimo global de esta función se encuentra en el punto [0,0], en donde f (x) = 0. En este ejemplo la variable lı́mite y las abejas exploradoras no fueron utilizadas ya que el número de ciclos era menor al valor de lı́mite que está definido por el número de fuentes de alimento por el número de variables del problema a resolver (5 ∗ 2 = 10). 4. Optimización Mediante el Forrajeo de Bacterias (BFOA) El BFOA original, fue propuesto por K.M. Passino [14], el cual simula el proceso completo de forrajeo de la bacteria E. Coli: Chemotaxis o paso quimiotáctico (movimientos de giro y nado), reproducción y eliminacióndispersión. El modelado de la búsqueda de alimento (concentración de nutrientes óptima) que realizan las bacterias contempla las siguientes etapas: Inicialmente, las bacterias son distribuidas al azar sobre el mapa de nutrientes. En una primera etapa las bacterias (E. Coli) se mueven hacia los puntos de concentración de nutrientes (dentro de esta generación ocurre una eliminación y dispersión, algunas bacterias se encuentran en puntos malos (sustancias nocivas), después ocurre la reproducción y posteriormente casi todas las bacterias se colocan en puntos de concentración de nutrientes. En una segunda etapa las bacterias han encontrado los puntos de concentración de nutrientes, aunque no todos estos puntos son óptimos, es decir, los más altos de concentración de nutrientes. Sin embargo, se agrupan utilizando una comunicación mediante segregación de atrayentes. 16 Mezura-Montes, Cetina-Domı́nguez y Hernández-Ocaña En una tercera etapa las bacterias encuentran el punto más alto de concentración de nutrientes. En una cuarta etapa las bacterias permanecen en ese punto y la búsqueda de alimento ha terminado; se dispersan nuevamente y buscan una nueva fuente de nutrientes (las etapas se repiten). Durante estas etapas las bacterias se enfrentan a varias problemáticas en la búsqueda de sus alimentos, por ejemplo: Ambientes nocivos que deben detectar y evitar en su viaje pues causan la eliminación y dispersión (para ello estas bacterias se agrupan y son capaces de producir y segregar sustancias quı́micas que son usadas como mecanismos de señalización y comunicación entre ellas), el tiempo de vida de las bacterias y finalmente el recorrido que tienen que hacer para encontrar el punto óptimo de concentración de nutrientes, entre otros. Debido a que el algoritmo de Passino (BFOA) requiere de muchos parámetros y su costo computacional es alto, la versión modificada del BFOA, propuesta en [15] y llamada MBFOA es la utilizada en este capı́tulo. 4.1. Elementos del MBFOA Representación de soluciones La representación de las soluciones, al igual que para el caso del ABC, se lleva a cabo mediante vectores de números reales llamados bacterias y representados en (8) por la letra θ, donde θi (j, G) representa la bacteria i, en su ciclo quimiotáctico j, en la generación G y Sb es el número total de bacterias en la población. La representación gráfica es similar a la de las soluciones del ABC en la Figura 2. θi (j, G), ∀i = 1, . . . , Sb (8) Mecanismos de selección Para el caso de las bacterias, el proceso de selección se realiza dentro del paso quimiotáctico, donde cada bacteria se moverá de manera constante en una misma dirección, generada de manera aleatoria, hacia una nueva posición siempre y cuando sea de mejor calidad que la previa. A este proceso dentro del ciclo quimiotáctico se le conoce como nado. Si al pasar a una nueva posición y ésta es de menor calidad, la bacteria realizará un giro para buscar una nueva dirección de búsqueda siempre buscando mejorar la calidad de su posición. Operadores de variación Existen dos operadores a utilizar en MBFOA, el nado-giro (mencionado anteriormente) y el swarming. El nado giro consiste en generar una dirección aleatoria mediante un vector normalizado usando (9): Nuevas Heurı́sticas para Optimización Numérica ∆(i) φ(i) = p ∆(i)T ∆(i) 17 (9) donde ∆(i) es un vector del mismo número de dimensiones que las variables del problema a resolver y generado aleatoriamente con sus elementos dentro del intervalo: [−1, 1]. A este paso se le conoce como giro. Después de ello, cada bacteria θi (j, G) modifica su posición mediante el nado como se indica en (10). θi (j + 1, G) = θi (j, G) + Cnew (i)φ(i) (10) donde θi (j + 1, G) es la nueva posición de la bacteria i, θi (j, G) es la posición actual de la bacteria i, φ(i) es el vector de dirección aleatoria calculado en (9) y Cnew (i) es el tamaño de paso (la “longitud de movimiento” de la bacteria calculada mediante (11)). √ Cnew (i) = R ∗ ∆xi / n (11) donde ∆xi se calcula restando los lı́mites superior e inferior de cada variable i, Ui − Li , n es el número de variables del problema y R es el porcentaje de este tamaño de paso total a ser utilizado en el proceso de búsqueda (se sugiere 0.2 ≤ R ≤ 0.5. Estos tamaños de paso permanecen constantes durante todo el funcionamiento del algoritmo. El nado, representado en (10), se repite Ns veces si la nueva posición es mejor que la previa : f (θi (j + 1, G)) < f (θi (j, G)). El operador de swarming se lleva a cabo cuando la mejor bacteria de la población atrae hacia sı́ a las demás. Este proceso sucede a la mitad y al final de cada ciclo quimiotáctico (en los restantes pasos se usa el nado-giro) utilizando (12). i θi (j + 1, G) = θi (j, G) + β(θB (G) − θi (j, G)) (12) B donde θ (j + 1, G) es la nueva posición de la bacteria i, θ (G) es la posición actual de la mejor bacteria en la generación G y 0 ≤ β ≤ 1 es un factor de escalamiento que determina qué tan cerca estará la bacteria i de la mejor bacteria B. Mecanismos de reemplazo En MBFOA se tienen dos etapas de eliminación de soluciones: En el momento de la reproducción se mantiene sólamente a la mitad de la población de soluciones y se elimina a la otra mitad, sustituyéndolas por copias de las mejores bacterias (simulando la división de una bacteria en dos nuevas bacterias). Posteriormente, el proceso de eliminación-dispersión elimina la peor bacteria de la población. 18 Mezura-Montes, Cetina-Domı́nguez y Hernández-Ocaña 4.2. Pasos del algoritmo MBFOA Dados los operadores y mecanismos de selección y reemplazo, los operadores requeridos por MBFOA se resumen en la Tabla 12. Además, el pseudocódigo de este algoritmo heurı́stico se encuentra en la Figura 5. Tabla 12. Parámetros del MBFOA Nombre Bacterias Generaciones Sı́mbolo Descripción Sb Número de bacterias en la población. GMAX Número de generaciones que se ejecutará todo el procedimiento: Ciclo quimiotáctico, de reproducción y eliminación-dispersión. Ciclo quimiotáctico Nc Número de veces que cada bacteria en la población podrá nadar o girar. Reproducción Sr Número de bacterias a reproducirse. Escalamiento β Factor de escalamiento que determina cuánto avanzará una bacteria hacia la mejor bacteria de la población. Porcentaje del tamaño R Porcentaje del rango permitido para las de paso variables que se usará como tamaño de paso. Begin Inicializar la población de soluciones (bacterias) θi (0, 0) ∀i, i = 1, . . . , Sb Evaluar la población de bacterias f (θi (0, 0)) ∀i, i = 1, . . . , Sb For G=1 to GM AX Do For i=1 to Sb Do For j=1 to Nc Do Realizar el paso quimiotáctico (giro-nado y swarming) para la bacteria θi (j, G) usando (10) y (12) End For End For Realizar la reproducción eliminando las Sr peores bacterias y duplicando cada una de las (Sb − Sr ) mejores bacterias Eliminar la peor bacteria θw (j, G) en la población actual End For End Figura 5. Algoritmo del MBFOA De acuerdo al pseudocódigo en la Tabla 5, se describe el proceso que se realiza durante su ejecución al resolver un problema de optimización. Nuevas Heurı́sticas para Optimización Numérica 1. 2. 3. 4. 5. 6. 7. 8. 19 Se inicializan los parámetros del algoritmo (Tabla 12). Se genera la población inicial aleatoria de bacterias θi (0, 0)∀i, i = 1, ..., Sb . Se evalúa cada una de las bacterias f(θi (0, 0))∀i, i = 1, ...Sb . En cada generación, todas las bacterias llevarán a cabo su ciclo quimiotáctico Nc veces. Se ejecutará la fase de reproducción y la de eliminacióndispersión. En cada paso del ciclo quimiotáctico, las bacterias realizan su búsqueda, nadando y avanzando hacia una nueva posición o girando porque su avance no fue favorable en la búsqueda de nutrientes (el valor de la función objetivo no mejoró en el nuevo punto al cual se habı́an dirigido). En ambos casos se utilizan (9) y (10). En la parte intermedia y al final del ciclo quimiotáctico, en vez de realizar el nado y giro, se utiliza el operador de swarming (12), favoreciendo la comunicación entre bacterias y, a su vez, la convergencia del algoritmo. A continuación se realiza el proceso de reproducción, en el cual se duplican a las mejores Sr (usualmente la mitad) bacterias y se elimina al resto (la otra mitad). Finalmente se realiza el proceso de eliminación-dispersión en el cual se elimina únicamente a la peor bacteria de la población θw (j, G). 4.3. Ejemplo de funcionamiento Ahora, se presenta un ejemplo de funcionamiento del MBFOA aplicado al mismo problema que el ABC, la función de la esfera detallada en (6) y (7). Los valores de los parámetros de inicio del MBFOA se muestran en la Tabla 13. De acuerdo al pseudocódigo del MBFOA, primero se crea una población de bacterias de manera aleatoria, el número de bacterias es definido por Sb (dicha población está dentro del rango especificado), ver Tabla 14. Posteriormente se calculan los tamaños de paso utilizando (11), n = 2, R = 2.1E-2, L1 = L2 = −5 y U1 = U2 = 5, dando como resultado Cnew (1) = Cnew (2) = 0.1485. Tabla 13. Parámetros del MBFOA empleados en la función de la esfera Parámetro Valor Sb 3 Nc 3 GMAX 4 Sr 2 R 2.1E-2 β 0.44 A continuación, se tiene que evaluar cada una de las bacterias en la función objetivo, estos valores se muestran en la cuarta columna de la Tabla 14. 20 Mezura-Montes, Cetina-Domı́nguez y Hernández-Ocaña Tabla 14. Población inicial, el valor de la función para cada bacteria se encuentra en la cuarta columna Bacteria θ1i (0, 0) = x1 θ2i (0, 0) = x2 1 -1.728921 0.564320 2 1.595993 1.107934 3 1.082393 1.011439 f (θi (0, 0)) 3.307624 3.774711 2.194583 El siguiente paso consiste en inicializar el contador del número de generaciones (G), el contador del número de bacterias Sb y el contador del número de iteraciones del ciclo quimiotáctico Nc con el valor de 1. En el primer ciclo quimiotáctico, para la bacteria 1 θ1 (j, G) se aplica el operador de nado-giro, (9) y (10), recordando que a la mitad del ciclo quimiotáctico y al final del mismo se aplicará el swarming (12). Supóngase que los valores que se emplean para la dirección aleatoria son (9): φ1 (1) = −0.289841 φ2 (1) = −0.029217 Se calcula la nueva posición de la bacteria 1 usando el operador de nado (9) de la siguiente manera: Nc = 1 θ11 (1, 1) = −1.728921 + (0.1485 ∗ −0.289841) = −1.77190 θ21 (1, 1) = 0.564320 + (0.1485 ∗ −0.029217) = 0.55998 A continuación se evalúa la calidad de la nueva posición de la bacteria 1, quedando de la siguiente manera: f (θ1 (1, 1)) = (−1.77190)2 + (0.55998)2 = 3.45320 Ahora se determina si la bacteria continuará nadando en esa dirección definida por φ(i) o si tendrá que girar, generando nuevos valores para φ(i). Observando la función objetivo de la nueva posición de la bacteria 1 se nota que no se mejora el valor actual de la misma (3.307624), por lo tanto, se deberá generar una nueva dirección de búsqueda (un nuevo φ(i)) e intentar mejorar (nadar) en esa dirección. Dado que en este ejemplo el valor para el ciclo quimiotáctico es de Nc =3, las siguientes dos iteraciones se consideran la mitad y la final del proceso. Por ende, se aplicará el operador de swarming (12). Con base en la población actual de bacterias detallada en la Tabla 14, la mejor es la bacteria 3 (pues tiene el menor valor para la función objetivo). Utilizando entonces el operador de swarming (12), se genera una nueva posición para la bacteria 1 como sigue: Nuevas Heurı́sticas para Optimización Numérica 21 Nc = 2 θ11 (2, 1) = (−1.728921) + (0.44 ∗ (1.082393 − (−1.728921))) = −0.491942 θ21 (2, 1) = (0.564320) + (0.44 ∗ (1.011439 − (0.564320))) = 0.761052 A continuación se evalúa la nueva posición de la bacteria 1 después de acercarse a la mejor bacteria en la población actual, quedando de la siguiente manera: f (θ1 (2, 1)) = (−0.491942)2 + (0.761052)2 = 0.821207 En esta ocasión la nueva posición es mejor que la previa, por lo que la bacteria asumirá esta nueva posición y eliminará la anterior. Para el tercer paso del ciclo quimiotáctico de la bacteria 1, se aplica de nuevo el operador de swarming (12). Nc = 3 θ11 (3, 1) = (−0.491942) + (0.44 ∗ (1.082393 − (−0.491942))) = 0.200765 θ21 (3, 1) = (0.761052) + (0.44 ∗ (1.011439 − (0.761052))) = 0.871222 Se evalua la nueva posición de la bacteria 1 : f (θ1 (3, 1)) = (0.200765)2 + (0.871222)2 = 0.799334 Dada la nueva mejora de la posición con respecto a la previa (0.799334 < 0.821207). La bacteria tomará esta nueva posición: θ11 (3, 1) = 0.200765 θ21 (3, 1) = 0.871222 f (θ1 (3, 1)) = 0.799334 Los cálculos para el ciclo quimiotáctico de la segunda bacteria se resumen a continuación: Nc = 1 θ12 (1, 1) = (1.595993) + (0.1485 ∗ 0.825212) = 1.718537 θ22 (1, 1) = (1.107934) + (0.1485 ∗ −0.564822) = 1.024058 f (θ2 (1, 1)) = (1.718537)2 + (1.024058)2 = 4.002064 Nc = 2 θ12 (2, 1) = (1.595993) + (0.44 ∗ (1.082393 − 1.595993)) = 1.370009 θ22 (2, 1) = (1.107934) + (0.44 ∗ (1.011439 − (1.107934))) = 1.065476 f (θ2 (2, 1)) = (1.370009)2 + (1.065476)2 = 3.012164 Nc = 3 θ12 (3, 1) = (1.370009) + (0.44 ∗ (1.082393 − 1.370009)) = 1.243458 θ22 (3, 1) = (1.065476) + (0.44 ∗ (1.011439 − 1.065476)) = 1.041700 f (θ2 (3, 1)) = (1.243458)2 + (1.041700)2 = 2.631326 22 Mezura-Montes, Cetina-Domı́nguez y Hernández-Ocaña Los cálculos para la tercera bacteria se presentan a continuación: Nc = 1 θ13 (1, 1) = (1.082393) + (0.1485 ∗ −0.519574) = 1.005236 θ23 (1, 1) = (1.011439) + (0.1485 ∗ 0.854426) = 1.138321 f (θ3 (1, 1)) = (1.005236)2 + (1.138321)2 = 2.306275 Nc = 2 θ13 (2, 1) = (1.082393) + (0.44 ∗ (1.082393 − 1.082393)) = 1.082393 θ23 (2, 1) = (1.011439) + (0.44 ∗ (1.011439 − 1.011439)) = 1.011439 f (θ3 (2, 1)) = (1.082393)2 + (1.011439)2 = 2.194583 Nc = 3 θ13 (3, 1) = (1.082393) + (0.44 ∗ (1.082393 − 1.082393)) = 1.082393 θ23 (3, 1) = (1.011439) + (0.44 ∗ (1.011439 − 1.011439)) = 1.011439 f (θ3 (3, 1)) = (1.082393)2 + (1.011439)2 = 2.194583 Los valores para cada una de las bacterias después de haber pasado el proceso quimiotáctico es presentado a continuación en la Tabla 15 Tabla 15. Resultado de las bacterias después del proceso quimiotáctico Bacteria θ1i (0, 1) = x1 θ2i (0, 1) = x2 1 0.200765 0.871222 2 1.243458 1.041700 3 1.082393 1.011439 f (θi (0, 1)) 0.799334 2.631326 2.194583 Aquı́ se pueden observar dos comportamientos interesantes: La mejor bacteria de la población inicial (la número 3) guió a las otras dos bacterias hacia mejores zonas (mejores soluciones) ya que las direcciones aleatorias no reportaron mejoras para estas dos soluciones y, por otro lado, la mejor bacteria de la población inicial no fue capaz de mejorar su posición y no se movió, dado que esta mejor solución sólo puede mejorar mediante direcciones aleatorias de búsqueda y no mediante el operador de swarming. El siguiente proceso es la reproducción, el cual consiste en duplicar a las mejores bacterias (la mitad de la población con mejor valor en la función objetivo). La Tabla 16 muestra el resultado de la reproducción, donde la bacteria 2 fue eliminada y ahora una copia de la nueva mejor bacteria (posición 1), quien fue la única en reproducirse, tomó su lugar. El siguiente proceso es la eliminación y dispersión, en el cual se elimina a la peor bacteria de la población. La Tabla 17 refleja el resultado del proceso de eliminación, donde la bacteria en la posición 3 (curiosamente la mejor bacteria Nuevas Heurı́sticas para Optimización Numérica 23 Tabla 16. Resultados del proceso de reproducción Bacteria θ1i (0, 1) = x1 θ2i (0, 1) = x2 1 0.200765 0.871222 2 0.200765 0.871222 3 1.082393 1.011439 f (θi (0, 1)) 0.799334 0.799334 2.194583 de la población anterior) es eliminada y una nueva bacteria localizada en una posición aleatoria toma su lugar. Ésto favorece la exploración de nuevas soluciones y previene la convergencia en óptimos locales. Tabla 17. Resultados del proceso de eliminación-dispersión Bacteria θ1i (0, 1) = x1 θ2i (0, 1) = x2 1 0.200765 0.871222 2 0.200765 0.871222 3 1.546781 0.345621 f (θi (0, 1)) 0.799334 0.799334 2.511985 La primera generación del MBFOA termina después de la eliminacióndispersión. Los resultados finales después de 4 generaciones se reportan en la Tabla 18. Tabla 18. Población final y el valor de aptitud de cada bacteria. Bacteria θ1i (3, 4) = x1 θ2i (3, 4) = x2 1 -0.042711 -0.040718 2 -0.042711 -0.040718 3 0.496293 0.631932 f (θi (3, 4)) 0.003482 0.003482 0.645644 La solución a reportar será la bacteria 1 y 2 que tienen los mismo valores, con x1 = −0.042711, x2 = −0.040718 y f (x) = 0.003482. 5. Conclusiones En este capı́tulo se han presentado dos algoritmos heurı́sticos recientes de inteligencia colectiva, basados en comportamientos colaborativos encontrados en la naturaleza, ambos para resolver problemas de optimización numérica. Después de una introducción a la optimización en general, de centrarse en la 24 Mezura-Montes, Cetina-Domı́nguez y Hernández-Ocaña optimización en espacios continuos y de motivar el uso de heurı́sticas, se han presentado los elementos de las heurı́sticas bio-inspiradas. Dos algoritmos, la colonia artificial de abejas (ABC) y la versión mejorada de la optimización mediante el forrajeo de bacterias (MBFOA) fueron presentados y dos ejemplos numéricos en una función de prueba muy sencilla se incluyeron para apoyar al lector en el uso de estos algoritmos en algún problema en particular. Dado lo reciente en la aparición de estas dos heurı́sticas, se visualiza en el futuro cercano una gran cantidad de investigación al respecto, con la intención de generar versiones aún más robustas al resolver, sobre todo, problemas del mundo real. Finalmente, se destaca la sencillez de implementación y uso de ambos algoritmos bio-inspirados, caracterı́sticas que pueden ser atractivas para especialistas de otras áreas que requieran utilizarlos. Agradeciemientos El primer autor agradece al Consejo Nacional de Ciencia y Tecnologı́a (CONACyT) por el apoyo mediante el proyecto 79809-Y titulado: “Nuevos Modelos Bio-Inspirados en Optimización con Restricciones”. El segundo autor agradece el apoyo de CONACyT mediante una beca para cursar estudios de Maestrı́a en el Laboratorio Nacional de Informática Avanzada (LANIA A.C.). El tercer autor agradece a CONACyT por el apoyo otorgado mediante el proyecto 102299 titulado “Optimización con Restricciones Usando Modelos Basados en Bacterias”. Referencias 1. H.A. Taha. Investigación de Operaciones. Alfa Omega, second edition, 1991. 2. K. Deb. Optimization for Engineering Design Algorithms and Examples. Prentice Hall of India, fourth edition, 2000. 3. Z. Michalewicz and D.B. Fogel. How to Solve It: Modern Heuristics. SpringerVerlag, second edition, 2004. 4. E. Mezura-Montes, C.A. Coello Coello, and R. Landa-Becerra. Engineering Optimization Using a Simple Evolutionary Algorithm. In Proceedings of the Fiftheenth International Conference on Tools with Artificial Intelligence (ICTAI’2003), pages 149–156, Los Alamitos, CA, November 2003. Sacramento, California, IEEE Computer Society. 5. A. Angantyr and J.O. Aidanpää. A Pareto-Based Genetic Algorithm Search Approach to Handle Damped Natural Frequency Constraints in Turbo Generator Rotor System Design. Journal of Engineering for Gas Turbines and Power, 126(3):619–625, July 2004. 6. J. Alvarez-Gallegos, C.A. Cruz-Villar, and E.A. Portilla-Flores. Evolutionary Dynamic Optimization of a Continuously Variable Transmission for Mechanical Efficiency Maximization. In Alexander Gelbukh, Álvaro de Albornoz, and Hugo Terashima-Marı́n, editors, MICAI 2005: Advances in Artificial Intelligence, pages 1093–1102, Monterrey, México, November 2005. Springer. Lecture Notes in Artificial Intelligence Vol. 3789,. Nuevas Heurı́sticas para Optimización Numérica 25 7. S. Kirkpatrick, C. D. Gelatt Jr., and M. P. Vecchi. Optimization by Simulated Annealing. Science, 220(4598):671–680, May 1983. 8. F.W. Glover and M. Laguna. Tabu Search. Kluwer Academic Publishers, London, UK, 1997. 9. A.P. Engelbrecht. Fundamentals of Computational Swarm Ingelligence. John Wiley & Sons, Sussex, England, 2005. 10. A. E. Eiben and J. E. Smith. Introduction to Evolutionary Computing. Springer, first edition, 2003. 11. D.B. Fogel. An introduction to simulated evolutionary optimization. Neural Networks, IEEE Transactions on, 5:3–14, 1994. 12. A. Baykasoglu, L. Ozbakir, and P. Tapkan. Artificial bee colony algorithm and its application to generalized assignment problem. In Felix T.S. Chan and Manoj Kumar Tiwari, editors, Swarm Intelligence: Focus on Ant and Particle Swarm Optimization, pages 113–144. Itech Education and Pub., Vienna, Austria, 2007. ISBN 978-3-902613-09-7. 13. D. Karaboga and B. Basturk. A powerful and efficient algorithm for numerical function optimization: Artificial bee colony (ABC) algorithm. Journal of Global Optimization, 39(3):459–471, 2007. 14. K.M. Passino. Biomimicry of bacterial foraging for distributed optimization andcontrol. IEEE Control Systems Magazine, 22(3):52–67, 2002. 15. E. Mezura-Montes and B. Hernández-Ocaña. Bacterial foraging for engineering design problems: Preliminary results. In Arturo Hernández-Aguirre et al., editor, Fourth Mexican Conference on Evolutionary Computation (COMCEV’2008), pages 33–38, Guanajuato, Mexico, October 2008. CIMAT.