Introducción
El algoritmo evolutivo es una estrategia heurística que permite resolver problemas de optimización a partir de la iteración de tres etapas (Michalewicz, 1996). En la evaluación, la población (soluciones) se genera aleatoriamente y luego se compara con sus valores fitness. En la etapa de selección, se mantienen las soluciones con mayor fitness, y en la etapa de reproducción se generan nuevos hijos con poca probabilidad de cambios (etapa de mutación).
Los algoritmos de computación evolutiva se introdujeron por primera vez en 1956 (Friedman) y 1958 (Bremermann), convirtiéndose en una de las técnicas más utilizadas para los problemas de optimización. Algunos de los algoritmos evolutivos más utilizados son: algoritmos genéticos (GA), optimización de enjambre de partículas (PSO), colonia de hormigas (AC), recocido simulado (SA), evolución diferencial (DE), algoritmos inmunes (IA), colonia de abejas artificial (ABC), algoritmo de luciérnaga (FA) y evolución diferencial (DE). Las aplicaciones DE incluyen optimización de funciones para un solo objetivo y múltiples objetivos, entrenamiento de redes neuronales, agrupamiento y clasificación de microarrays para ADN (Plagianakos, Tasoulis y Vrahatis, 2008). En la investigación de Wang y Sobey (2020), los autores revisan las aplicaciones de los algoritmos evolutivos, específicamente los genéticos, encontrando que el 56% de los estudios aplicados utilizan este método.
En cuanto a los algoritmos de optimización, es importante evitar un mínimo local y una convergencia rápida, para mejorar el rendimiento del método. En Triana, Bucheli y García (2020b) se comprobó que, en una estrategia basada en la selección de individuos guiados por redes complejas de pequeño mundo, se puede superar la estrategia original del algoritmo de DE propuesto por Storn (1996). Otros estudios (Zelinka et al., 2011, 2010, 2014; Zelinka, 2011) encontraron relación entre las redes complejas y los algoritmos evolutivos. En Zelinka, Tomaszek y Snasel (2015) se analizaron las propiedades de la red desde el punto de vista matemático, descubriéndose redes complejas para DE.
Dos redes complejas conocidas son redes de pequeño mundo y redes libres de escala (Sheng et al., 2016); es fundamental estudiar ambos tipos de redes cuando se aplican en algoritmos evolutivos. Metlicka y Davendra (2017) estudiaron el uso de redes complejas con el algoritmo Firefly para evitar la convergencia en mínimos locales. Mientras que Kadavy et al. (2017) estudiaron la dinámica del algoritmo Fireworks con redes complejas en el problema de optimización de parámetros y Yinghui et al. (2018) propusieron un modelo dinámico de redes complejas en el que se evidencia que las propiedades de este tipo de redes cambian de iteración a iteración, por lo tanto, es difícil estudiar las relaciones entre nodos. Para resolver otros problemas de optimización como el vendedor viajero, en Triana, Bucheli y García (2020a) se propone un algoritmo evolutivo guiado por redes complejas de pequeño mundo. Asimismo, en Pizzuti (2018) se presentó una búsqueda bibliográfica sobre el uso de algoritmos evolutivos en la detección de grupos en series de datos que se comportan como redes complejas, esto permitió identificar la relación entre las dos áreas de investigación.
Con base en el trabajo de Triana, Bucheli y García (2020a), se presenta un modelo basado en redes complejas libre de escala, que pretende mejorar la tasa de convergencia y el rendimiento del algoritmo de computación evolutiva tradicional y las redes complejas de pequeño mundo, a partir de diferentes experimentos que definen el número de repeticiones, la razón de mutación y el número de generaciones.
El documento está organizado de la siguiente forma, en la sección de metodología se explican la propuesta y el enfoque que se definieron para evaluar el desempeño. Luego en los resultados se presentan los experimentos que se llevaron a cabo para evaluar el algoritmo evolutivo en los problemas de optimización. Al final se encuentran las conclusiones.
Metodología
Existen dos enfoques para evaluar qué tan óptimo es un algoritmo evolutivo: uno teórico y el otro empírico (Fogel, 2005). El enfoque teórico estudia el rigor matemático del algoritmo y el empírico estudia el desempeño con base en indicadores estadísticos. La metodología propuesta en este trabajo sigue un enfoque empírico basado en Triana, Bucheli y García (2020b), en el que la relación entre las soluciones y la mutación del algoritmo propuesto está guiada por una red compleja libre de escala, que pretende dar respuesta a la pregunta de investigación: ¿Cuáles son las dinámicas de la población de un algoritmo evolutivo tradicional basado en redes complejas libres de escala?
En la red propuesta cada nodo representa una solución al problema de optimización; cada enlace (edge) representa la generación descendiente. La generación i ejecuta el algoritmo evolutivo para generar otros individuos en la red. Una repetición de j se completa cuando se ha generado un número dado de generaciones, de modo que en cada generación se promedian 50 valores (j = 50) para obtener la última generación de i. Este procedimiento se repite con 100 valores (j = 100) y cada generación resultó de los mejores promedios de los 50 y 100 valores, los promedios son necesarios porque permiten obtener un mayor significado estadístico de los resultados.
Se compararon cinco algoritmos evolutivos: evolutivo tradicional (Evolutive); evolutivo tradicional guiado por redes de pequeño mundo (Evolutive-SW) y guiado por redes de pequeño mundo con elección del mejor vecino (Evolutive-SW Best) (Triana, Bucheli y García, 2020b); evolutivo tradicional guiado por redes libres de escala (Evolutive-SF) y guiado por redes libres de escala con elección del mejor vecino (Evolutive-SF Best). Los dos últimos algoritmos son los que se proponen en este artículo.
El método propuesto consistió en obtener el fitness más bajo de las 50 y 100 repeticiones para cada algoritmo, y luego compararlos entre sí con el fin de identificar la tasa de convergencia de cada algoritmo. La Tabla 1 muestra los parámetros utilizados en el experimento para todos los algoritmos.
Funciones de optimización
El experimento se llevó a cabo con cuatro funciones de optimización: Ackley, Beale, Camel y Sphere (Back, 1996). Estas funciones (Figura 1) tienen mínimos globales y en algunos casos mínimos locales, lo cual es muy útil para pruebas de algoritmos evolutivos. El modelo de las figuras mencionadas se explica a continuación.
Función Ackley
La función Ackley se caracteriza por tener un espacio bidimensional, con mínimos locales y un mínimo global en f(0, ..., 0) = 0. Fue propuesta por Ackley (1987) y está definida por:
Función Beale
Función Camel
La función Camel es un espacio bidimensional, tiene seis mínimos locales, dos de los cuales son globales. Esta función se define como:
Función Sphere
Algoritmos utilizados
Algoritmo evolutivo
El algoritmo evolutivo que se utilizó fue el DE propuesto por Storn (1996). Se diferencia de otros métodos evolutivos porque las operaciones de mutación y cruzamiento no son separables. Además, utiliza vectores para aplicar las operaciones, lo que hace que la convergencia sea más rápida. Comienza con una población aleatoria de individuos (NP), cada individuo se denota como X iG donde i = 0,1,2 ... NP-1 será un vector de características en un espacio D con una distribución normal. Posteriormente se seleccionan aleatoriamente tres vectores para crear un vector u, que pertenece a la siguiente generación, de acuerdo con la ecuación:
Con 1G, 2G, R3G (0, NP-1) entero, elegidos al azar y mutuamente diferentes y F > 0F es un factor constante que controla la amplificación de la variación diferencial. El vector u que pertenece a la siguiente generación viene dado por la Figura 7. El componente j del vector u será igual al componente j del vector v si un número aleatorio generado por cada componente entre 0 y 1 es menor o igual a CR. Si el número aleatorio es mayor que CR, el componente j de u es igual al componente j del vector X 1G , con CR (0,1). Además, debe asegurarse que al menos uno de los componentes j seleccionados al azar del vector u sea igual al componente j del vector v. Esto se realiza de esa manera con el objetivo de que el vector u no sea idéntico al vector X 1G , en caso de que el número aleatorio sea mayor que CR, para todos los componentes.
Proponemos una variación a este método, debido a que no se crearán nuevos individuos en cada generación, sino que el padre será reemplazado por el hijo con mejor fitness.
Evolutivo-SW
Este método sigue el mismo algoritmo que el evolutivo propuesto, pero esta vez los individuos creados inicialmente son nodos dentro de una red compleja de pequeño mundo, cuyas propiedades se estudiaron primero en Milgram (1967). Cada uno de los nodos o individuos está relacionado con otro, pero esta vez la selección se limitará a los individuos vecinos. En la Figura 2 (a) se puede visualizar una red de pequeño mundo que se caracteriza porque la mayoría de sus nodos se pueden encontrar dentro de una distancia relativamente corta, aunque no sean vecinos. El modelo utilizado para generar esta red fue propuesto en Watts y Strogatz (1998).
Evolutivo-SW Best
Sigue el mismo algoritmo que se muestra en Evolutivo-SW, con la diferencia de que ahora los individuos se eligen al azar, favoreciendo aquellos con la mejor puntuación en la generación correspondiente.
Evolutivo-SF Barabási
Este método sigue el mismo algoritmo evolutivo, pero esta vez los individuos creados inicialmente son nodos dentro de una red compleja libre de escala. Cada uno de los nodos o individuos está relacionado con otro, pero esta vez la selección no será aleatoria, sino que se limitará a los individuos vecinos. En la Figura 2 (b) se muestra una visualización de una red libre de escala. Este tipo de red fue estudiada por (Barabási y Albert, 1999) y tiene una gran cantidad de nodos con pocas conexiones y pocos nodos con muchas conexiones, que se denominan “hubs”. Además, tiene una conexión preferencial entre sus nodos, generando una distribución de calificaciones que mejora la tasa de convergencia y el rendimiento.
Evolutivo-SF Barabási Best
Sigue el mismo algoritmo que se muestra en Evolutivo-SF Barabási, con la diferencia que ahora los individuos se eligen al azar, favoreciendo aquellos con la mejor puntuación en la generación dada.
Generación de individuos
El proceso comienza creando una población de individuos con la estrategia evolutiva. Luego se crea una red compleja libre de escala con el mismo número de nodos que el tamaño de la población. Se realiza una asociación pseudoaleatoria de un individuo de la población con un nodo de red para iniciar la iteración del algoritmo, donde cada individuo de la población selecciona un nodo vecino asociado para la reproducción. De esta manera, la reproducción del individuo está guiada por la red compleja libre de escala. Si el individuo recién generado tiene un mejor desempeño que el padre seleccionado, se realiza un reemplazo; así se mantiene el tamaño de la población. Este principio permite uniformidad y garantiza que la red tenga la misma estructura, preservando las propiedades de la red compleja libre de escala.
Recableado
Para agregar dinamismo a la red y evitar una convergencia prematura, ya que su topología no cambia de una generación a la siguiente, en Triana, Bucheli y García (2020b) se propone realizar un recableado, que consiste en elegir aleatoriamente dos pares de nodos a-b y c-d conectados entre ellos. Las conexiones entre estos nodos se redefinen aleatoriamente, por ejemplo, a-c y b-d. Si alguna de estas conexiones ya existe, el proceso se cancela y se intenta con otro par. Este método asegura que la distribución de grados de la red no cambie para que no se pierdan las propiedades de cada uno de los tipos utilizados.
Resultados
Los experimentos se llevaron a cabo con el fin de evaluar el algoritmo evolutivo para los problemas de optimización (problemas de minimización): funciones de Ackley, Beale, Camel y Sphere. Se estudiaron los algoritmos evolutivos identificando la mejor solución de los problemas de optimización según los criterios de rendimiento y calidad.
El algoritmo evolutivo tradicional se comparó con los algoritmos evolutivos: pequeño mundo (SW), pequeño mundo best (SW Best), redes libres de escala (Barabási) y redes libres de escala best (Barabási Best). En este trabajo proponemos los algoritmos evolutivos libres de escala (Barabási) y libres de escala best (Barabási Best). Realizamos el experimento con los algoritmos propuestos para una población con 50 individuos, se generaron diferentes iteraciones (50, 100, 500, 100 y 5000) con el fin de observar y analizar el rendimiento de los algoritmos, su dinámica y el resultado mínimo.
Para obtener los resultados más confiables, utilizamos los mejores promedios de solución en cada iteración. De esta forma, traemos la mejor solución y la evolución del modelo a lo largo del tiempo. Los resultados solo incluyen los mejores promedios para 50 y 100 iteraciones (ver las Tablas 2, 3, 4, 5 y 6). En las siguientes líneas se presentan los resultados obtenidos para las funciones Ackley, Beale, Camel y Sphere.
Función Ackley
La Tabla 2 presenta los cinco mejores promedios encontrados en orden descendente para 50 y 100 iteraciones. El algoritmo con mejor desempeño en las 50 iteraciones es Barabási, con un promedio final de 0.059073. Pero en 100 iteraciones el mejor resultado promedio es Barabási Best con 0.058757. Sin embargo, para ambos casos, los valores más altos se obtienen mediante el algoritmo evolutivo tradicional, con 0.132497 para 50 iteraciones y 0.126067 en 100 iteraciones.
La Figura 4 muestra una gráfica logarítmica de la minimización de la función de Ackley. Las figuras presentan resultados para 50 iteraciones (a) y 100 iteraciones (b), respectivamente. La figura (a) muestra que el algoritmo Barabási Best (línea azul) obtiene las mejores soluciones. Desde las primeras iteraciones Barabási Best muestra los resultados promedio más bajos, pero en las últimas iteraciones es superado por el algoritmo Barabási (línea amarilla). La figura (b) muestra el algoritmo Barabási Best con los mejores promedios en todas las iteraciones. Sin embargo, en ambas figuras observamos que el algoritmo evolutivo tradicional (línea verde) tiene los valores más altos en todas las iteraciones.
Función Beale
La Tabla 3 presenta los cinco mejores promedios dispuestos en orden descendente para 50 y 100 iteraciones. El algoritmo con mejor desempeño en ambos casos es Barabási, con una solución mínima de 0.010118 (50 iteraciones) y 0.012057 (100 iteraciones). Además, al igual que la función Ackley, el algoritmo evolutivo tradicional tiene las soluciones más altas: 0.035203 (50 iteraciones) y 0.058131 (100 iteraciones).
La Figura 5 muestra una gráfica logarítmica de la minimización de la función de Beale. Las figuras presentan resultados para 50 iteraciones (a) y 100 iteraciones (b), respectivamente. Las figuras (a) y (b) muestran el algoritmo Barabási (línea amarilla) con los mejores promedios en todas las iteraciones. El algoritmo evolutivo tradicional (línea verde) tiene los valores más altos en todas las iteraciones en ambas figuras y confirma que el enfoque novedoso tiene mejores resultados que el algoritmo evolutivo tradicional.
Función Camel
La Tabla 4 presenta los mejores resultados promedio en orden descendente para 50 y 100 iteraciones respectivamente. El algoritmo con mejor desempeño en las 50 iteraciones es Barabási 0.000043. Sin embargo, cuando llega a 100 iteraciones el mejor resultado promedio es Barabási Best 0.000032. Por otro lado, para ambos casos, los valores más altos se calculan mediante el algoritmo evolutivo tradicional con 0,000120 (50 iteraciones) y 0,000109 (100 iteraciones).
La Figura 6 muestra una gráfica logarítmica de la minimización de la función Camel. Las figuras presentan resultados para 50 iteraciones (a) y 100 iteraciones (b), respectivamente. La figura (a) muestra que el algoritmo de Barabási (línea amarilla) obtiene las mejores soluciones. La figura (b) muestra el algoritmo Barabási Best (línea azul) con los mejores promedios en todas las iteraciones. La función Camel presenta un comportamiento similar con las funciones Ackley y Beale, confirmando que el mecanismo guiado por las redes Barabási son mejores que el algoritmo evolutivo.
Función Sphere
La Tabla 5 presenta los mejores resultados promedio en una forma similar a las tablas anteriores. El algoritmo con mejor desempeño en ambos casos es Barabási Best, con un valor mínimo de 0.000014 para 50 y 100 iteraciones. El algoritmo evolutivo tradicional tiene las soluciones más altas: 0.000096 (50 iteraciones) y 0.000064 (100 iteraciones).
La Figura 7 muestra una gráfica logarítmica de la minimización de la función de Beale. Las figuras presentan resultados para 50 iteraciones (a) y 100 iteraciones (b), respectivamente. Las figuras (a) y (b) muestran el algoritmo Barabási Best (línea azul) con las mejores puntuaciones. Por el contrario, el algoritmo evolutivo tradicional (línea verde) tiene los valores más altos en todas las iteraciones.
Los resultados se encuentran resumidos en la Tabla 6, se observa que los mejores promedios se obtienen con los algoritmos propuestos, es decir, los resultados alcanzados en las redes Barabási y Barabási Best superaron en todas las pruebas a los resultados del algoritmo evolutivo tradicional. También se puede observar que los resultados son consistentes en las funciones de optimización: Ackley, Beale, Camel y Sphere. Los problemas de optimización de la función de prueba se minimizan con el enfoque propuesto, en el que Barabási Best fue el mejor algoritmo para las funciones Ackley, Camel y Sphere con los siguientes promedios: 0.058757, 0.000032 y 0.000014. No obstante, el mejor rendimiento del algoritmo Barabási lo tiene la función Beale con 0.012057.
Conclusiones
La computación evolutiva tradicional es un algoritmo iterativo que resuelve problemas de optimización y los individuos se combinan para obtener una mejor solución. Estos individuos generan nuevas soluciones que permiten resolver el problema de manera óptima. Según Amara et al. (2006), las redes de pequeño mundo han contribuido a los problemas de optimización al usarlas como mecanismo de control en combinaciones de individuos. Las distancias entre los vértices tienden a ser más cortas que las redes aleatorias, y todos los elementos fuertemente relacionados entre sí permiten obtener el valor óptimo en menos tiempo. En Triana, Bucheli y García (2020 b) , se utilizó el algoritmo evolutivo tradicional y una red de pequeño mundo para comparar cuatro funciones de optimización: Ackley, Beale, Camel y Sphere. Los resultados muestran que la generación de individuos (soluciones) mejoró con la adición de la red de pequeño mundo, porque el modelo desarrollado minimizó los promedios en menos iteraciones que el algoritmo tradicional.
El documento de Triana, Bucheli y García (2020b) propone dos variantes de la selección del vecino a los encontrados en la literatura. El primero, llamado pequeño mundo, generó una selección aleatoria del vecino para mejorar la combinación de soluciones. El segundo, denominado pequeño mundo best, consistió en seleccionar al vecino mediante el método de la ruleta para favorecer el mejor rendimiento (fitness). En los resultados se observó que las dos variantes generaron mejores promedios en comparación con la estrategia evolutiva tradicional para los parámetros: tamaño de la población (100 individuos), tasa de mutación (10 %) y criterio de parada (50 iteraciones).
Este trabajo se desarrolló a partir del trabajo propuesto por Triana, Bucheli y García (2020b). En comparación con las literaturas encontradas, la contribución de este trabajo se basa en agregar una red libre de escala o Barabási al proceso de combinación de soluciones (Barabási y Albert, 1999). Los problemas de optimización que se estudiaron fueron: Ackley, Beale, Camel y Sphere. Los resultados de los algoritmos propuestos se compararon con la estrategia de computación evolutiva tradicional y el algoritmo evolutivo redes de pequeño mundo. En el experimento se utilizaron los mismos parámetros que en Triana, Bucheli y García (2020b), es decir: la misma selección de individuos, recableado, criterios de parada, tamaño de población y tasa de mutación. Sin embargo, los algoritmos se ejecutaron para 50 y 100 iteraciones (criterios de parada). En todas las pruebas realizadas se observó que los algoritmos propuestos en este trabajo (red Barabási) presentan mejores promedios en comparación con la computación evolutiva tradicional, pequeño mundo y pequeño mundo best, para las 50 y 100 iteraciones. Este resultado confirma el trabajo desarrollado por Triana, Bucheli y García (2020b), encontrando que, para 100 iteraciones, los resultados se mantienen. De esta forma se pueden corroboran los resultados y se mejora la propuesta realizada en Triana, Bucheli y García (2020) agregando una red Barabási y obteniendo mejores promedios en el proceso de optimización. El trabajo propuesto utiliza un mecanismo de conexión preferencial entre sus nodos, generando una distribución de grados de ley de potencia de los nodos (Adamic et al., 2001), asociándose con individuos. Además, guía la combinación de individuos (soluciones), mejorando la tasa de convergencia y el rendimiento del algoritmo evolutivo en general.
Se observó que los algoritmos propuestos presentan mejores resultados que las funciones de optimización (minimización) Ackley, Beale, Camel y Sphere. Así, para la función Sphere con pequeño mundo se obtiene 0,000025, mientras que Barabási Best mejoró los valores en 0,000006, pasando de 0,000020 a 0,000014. De los resultados observados en la función de Ackley, se obtiene 0.065348 en pequeño mundo, mientras que Barabási Best mejoró los valores en 0.013461, pasando de 0.072218 a 0.058757. En la función Camel se obtiene 0.000081 con pequeño mundo. Sin embargo, Barabási Best mejoró los promedios en 0,000026, pasando de 0,000058 a 0,000032. Estos resultados nos permiten concluir que el rendimiento de los algoritmos evolutivos mejora con alguna versión de la red libre de escala (Barabási o Barabási Best). En general, la red Barabási como mecanismo de control de combinación de soluciones es mejor que el algoritmo evolutivo tradicional o el algoritmo evolutivo guiado por redes de pequeño mundo.
Como trabajo futuro se propone implementar algoritmos evolutivos con un mecanismo de control guiado por redes Barabási al problema de optimización combinatoria del vendedor viajero (TSP) y al problema de la mochila (KP). El primer problema busca identificar la ruta óptima (la distancia más corta entre ciudades), visitando cada ciudad exactamente una vez, pero regresando a la ciudad de origen. En el otro problema se modelan diferentes soluciones en el llenado de la mochila, maximizando el total de los objetos sin exceder el peso definido. Los dos problemas se utilizan ampliamente en el mundo real y la contribución de incluir una red libre de escala permitiría encontrar la solución más óptima en menos tiempo.