ANÁLISIS DE LA EFICIENCIA DE LOS ALGORITMOS DE ESTIMACIÓN DE DISTRIBUCIONES Pablo Martín Muñoz1, Alejandro Sierra Urrecho Universidad Autónoma de Madrid Resumen. En este trabajo se compara el rendimiento de tres tipos de algoritmos evolutivos en la optimización de funciones discretas, y se presenta una variante innovadora de los algoritmos de estimación de distribuciones (en adelante, AED), consistente en la introducción del concepto de búsqueda direccional en el espacio de soluciones del problema a resolver. Palabras clave: algoritmos evolutivos, algoritmos de estimación de distribuciones INTRODUCCIÓN Algoritmos evolutivos Un algoritmo evolutivo es un proceso matemático que encuentra soluciones a problemas basándose en los principios de la evolución natural de las especies. A continuación se muestra la estructura básica de un algoritmo evolutivo. Procedimiento Algoritmo Evolutivo Comenzar tÅ0 Inicializar P(t) Evaluar P(t) Mientras (Condición parada = Falso) hacer Comenzar t Å t+1 Seleccionar P(t) de P(t-1) Alterar P(t) Evaluar P(t) Fin Este algoritmo trabaja con una población de n individuos P(t) para la iteración t : { P(t ) = x t , x t ,..., x t 1 2 n } La condición de parada suele ser alguna de las siguientes: se ha encontrado el individuo óptimo, no se aprecian mejoras significativas entre una población y la siguiente, se ha completado un número máximo de iteraciones. La función Alterar P(t) representa al conjunto de operadores que modifican los individuos, de una forma general. Una vez alcanzada la condición de parada, la población de individuos P(t) que resulta del proceso iterativo será mejor –en términos de la función Evaluar P(t)- que la población de partida P(0). Evaluar P(t) mide el grado de adaptación de los individuos al medio, es habitual denominarla función de fitness. La mejora de los individuos en las siguientes iteraciones se obtiene gracias a la función Seleccionar P(t) de P(t-1). 1 [email protected] Algoritmos genéticos Son algoritmos de búsqueda basados en los mecanismos de selección natural de las especies. Combinan la supervivencia de los individuos mejor adaptados con el intercambio de información entre unas generaciones y las siguientes. Las principales características diferenciadoras del resto de algoritmos clásicos de optimización y búsqueda son las siguientes: no trabajan directamente con los parámetros del problema, sino con una codificación de los mismos, emplean poblaciones de individuos, no individuos aislados, utilizan directamente el valor de la función objetivo, no sus derivadas u otra información auxiliar, las reglas de transición son probabilísticas. La estructura de un algoritmo genético es la siguiente: Procedimiento Algoritmo Genético Comenzar tÅ0 Inicializar P(t) Evaluar P(t) Mientras (Condición parada = Falso) hacer Comenzar t Å t+1 Seleccionar P(t) de P(t-1) Cruzar P(t) Mutar P(t) Evaluar P(t) Fin Los tres operadores básicos presentes en un algoritmo genético son Seleccionar P(t), Cruzar P(t) y Mutar P(t). Es muy frecuente encontrar realizaciones de algoritmos genéticos que cumplen lo siguiente: el proceso de selección se efectúa por torneos: se toman dos parejas de dos individuos de P(t), de forma aleatoria. Se evalúan los individuos de las dos parejas, seleccionando el mejor de cada pareja. El cruce se efectúa con los dos individuos ganadores de la fase anterior. Una posibilidad muy empleada es el cruce en un punto: se elige de forma aleatoria un punto de las cadenas para partir a los individuos seleccionados, y se obtienen dos descendientes mezclando los segmentos de las cadenas resultantes. La mutación se realiza cambiando el valor de algún bit de alguno de los individuos de la población. Algoritmos de estimación de distribuciones En los AEDs, las nuevas poblaciones de individuos se obtienen por muestreo a partir de una distribución de probabilidad que se va actualizando población a población, a partir de un conjunto formado por los mejores individuos de cada población. Una de sus principales ventajas, es la eliminación de los operadores de cruce y mutación, que al desaparecer evitan tener que realizar los ajustes de los parámetros, tarea que puede constituir un problema de optimización en si misma. La estructura de un AED es la siguiente: Procedimiento AED Comenzar tÅ0 Inicializar P(t) Inicializar probabilidades P(t) Evaluar P(t) Mientras (Condición parada = Falso) hacer Comenzar Generar población P(t) Evaluar P(t) Seleccionar P(t) Actualizar probabilidades P(t) t Å t+1 Fin La función Generar población, emplea el vector de probabilidades para crear, a partir de un muestreo, la población con la que se trabaja en cada iteración. Una vez creada la población, se evalúa - función Evaluar P(t) – y a continuación se seleccionan – Seleccionar P(t) – los individuos con mejor fitness. Las probabilidades se actualizan con la función Actualizar probabilidades P(t) Inicializar matriz de probabilidades Mientras (Condición parada = Falso) hacer Comenzar Generar población de direcciones Buscar óptimo en cada dirección Seleccionar mejores direcciones Recalcular matriz de probabilidades t Å t+1 Fin Los bits cuyo valor es el carácter comodín ‘*’ pueden tomar indistintamente el valor ‘0’ o ‘1’: la búsqueda del elemento con mayor fitness en una dirección determinada se lleva a cabo asignando el valor ‘1’ y ‘0’ a los bits comodín, y seleccionando aquel valor que ofrece mejor fitness, siguiendo un proceso de descenso por gradiente. En cada población, los comodines se inicializan con los valores correspondientes al individuo con más fitness que se haya obtenido hasta ese momento. La función ‘Generar población de direcciones’ emplea la matriz de probabilidades para crear, por muestreo, un nuevo conjunto de direcciones en cada iteración. Una vez que se cuenta con la nueva población de direcciones, se emplea el procedimiento de descenso por gradiente para encontrar el óptimo en cada una de las direcciones. En estas condiciones ya se pueden seleccionar las direcciones en las que los óptimos encontrados han obtenido los mayores fitness. ESTUDIO COMPARATIVO El objetivo del estudio realizado ha sido comparar el rendimiento de tres algoritmos: un algoritmo genético con selección por torneos y cruce simple en un punto, un algoritmo de estimación de distribuciones con probabilidades independientes para cada variable, y un algoritmo de estimación de distribuciones direccional. AED’s DIRECCIONALES Diseño Como alternativa a los AEDs, se propone un algoritmo que muestrea direcciones en el espacio, y luego realiza una búsqueda determinista del individuo con más fitness en cada dirección muestreada. De este modo, se van obteniendo poblaciones de direcciones – en lugar de poblaciones de individuos - , cada una de ellas caracterizada con el mejor individuo encontrado en dicha dirección. Cada uno de los bits de cada individuo puede tomar tres valores, según el alfabeto {0,1,*}. La inicialización de la matriz de probabilidades se realiza otorgando la misma probabilidad a cada valor del alfabeto – el 33% - actualizando en cada iteración estos valores según la evolución de los resultados, mediante la función ‘Recalcular matriz de probabilidades’. Se han realizado un total de 960 simulaciones con los tres algoritmos de prueba: algoritmo genético sencillo, algoritmo de estimación de distribuciones y algoritmo de estimación de distribuciones direccional. Se han empleado cuatro funciones objetivo a maximizar: OneMax, dos funciones tipo Royal Road y una función Unit Commitment. La estructura de un algoritmo AED direccional se muestra a continuación Procedimiento AED direccional Comenzar tÅ0 Este experimento se ha repetido para cuatro longitudes de individuos diferentes: 8, 16, 32 y 64 bits. Los resultados corresponden a la media de 20 repeticiones en cada uno de los casos anteriores, resultando un total de 3 x 4 x 4 x 20 = 960 simulaciones. Funciones evaluadas A continuación se describen las cuatro funciones empleadas en las simulaciones. Función OneMax Función Unit Commitment Esta función toma un individuo x (cadena n de bits de una longitud determinada), y devuelve un número igual a la suma de los valores de todos sus bits. El individuo que maximiza esta función es aquel en el que todos sus bits valen uno, coincidiendo en ese caso el valor de OneMax con la longitud del individuo. Dado un conjunto de generadores {G1 G2 … GN}, con potencias eléctricas {P1 P2 … PN} y costes de generación {C1 C2 … CN}, se trata de encontrar la combinación óptima de generadores que satisfacen una demanda determinada D, minimizando los costes de generación: n OneMax( x) = ∑ xi i =1 xi puede valer 1 o 0. Funciones Royal Road Se trata de un conjunto de funciones diseñadas por Stephanie Forrest, John Holland y Melanie Mitchel, con la finalidad de comprobar el tratamiento de los buildings blocks, en las poblaciones sucesivas que van generando los algoritmos evolutivos. En estas funciones sólo se obtienen incrementos de fitness cuando el individuo va completando bloques de unos que están en situaciones predeterminadas, definidas en un conjunto de esquemas inicial. Se describe el funcionamiento de estas funciones empleando un ejemplo para individuos de 16 bits. Dado el conjunto inicial de 8 esquemas R = {1 1 * * * * * * * * * * * * * * **11************ ****11********** ******11******** ********11****** **********11**** ************11** * * * * * * * * * * * * * * 1 1} y el vector de pesos c = {2 2 2 2 2 2 2 2}. El valor de la función Royal Road para un individuo x es: 8 RoyalRoad ( x) = ∑ ci ⋅ δ i ( x) , i =1 donde δi(x) vale 1 si el individuo x es una realización del esquema que ocupa la posición i en el conjunto R, y 0 en caso contrario. Si se considera el individuo: x = 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1, al aplicar la expresión anterior se obtiene: RoyalRoad(x) = 2 · 1 + 2 · 1 = 4, puesto que x es realización de dos esquemas, los que ocupan la posición 1 y 8 en R. Modificando el conjunto de esquemas R y el vector de pesos c, se pueden obtener diferentes funciones Royal Road. N CostesGeneración = ∑ C i i =1 En este problema, los individuos se modelan de manera que cada uno de los bits representa el estado – conectado o desconectado- de cada uno de los generadores del Sistema Eléctrico de Potencia considerado. El individuo óptimo que se busca es el que satisface la demanda D con un coste mínimo. Resultados Convergencia de los algoritmos En las simulaciones que se han realizado, el porcentaje de casos en los que los algoritmos han convergido son los siguientes: 99,58 % para el algoritmo genético, 99,68% para el AED sencillo, y 100% para el AED direccional. Estos porcentajes están calculados dividiendo el número de simulaciones en las que se ha alcanzado el óptimo antes de llegar al límite máximo de poblaciones entre el número total de simulaciones realizado. Hay que destacar que la única función en la que no ha existido convergencia ha sido la Royal Road R1, para individuos de 64 bits. Número de evaluaciones de la función de fitness Se ha elegido el número de evaluaciones de la función de fitness como medida adecuada del esfuerzo que tiene que realizar cada algoritmo para alcanzar el óptimo, ya que es independiente de la velocidad de proceso de la computadora donde se efectúan las pruebas. Se han calculado los números medios de evaluaciones de la función de fitness que se han necesitado para alcanzar el óptimo, así como la desviación típica. Las figuras siguientes se han confeccionado descartando las 7 simulaciones en las que no se ha obtenido convergencia, 4 corresponden al algoritmo genético, y tres al AED sencillo. Evaluación de Royal Road R1 25000 60000 20000 50000 Nº medio de evaluaciones Nº medio de evaluaciones Evaluación de OneMax 15000 10000 5000 40000 30000 20000 10000 0 8 bits AED sencillo 0 AED direccional Algoritmo genético 16 bits 32 bits 8 bits 64 bits Figura 1: Optimización de la función OneMax Se observa claramente que los resultados de los algoritmos de estimación de distribuciones son superiores a los del algoritmo genético. Existe –para esta función- una pequeña diferencia a favor del algoritmo AED sencillo, que no ha podido ser contrastada estadísticamente por falta de normalidad en las muestras tomadas (rechazo de la hipótesis de normalidad de la distribución en el test de KolmogorovSmirnof para α = 0,05). Obviando esta hipótesis, necesaria para contrastar la hipótesis de igualdad de medias, se ha realizado una prueba t-student para dos muestras con varianzas desiguales, rechazándose la hipótesis para las cuatro longitudes de individuo. Hay que destacar que en este caso, para la longitud de individuo de 64 bits el único algoritmo que ha encontrado el óptimo en todos los casos antes de agotar el número máximo de generaciones ha sido el AED direccional. Considerando únicamente las simulaciones en las que ha habido convergencia, para individuos de 64 bits el algoritmo más eficiente en la evaluación de esta función ha sido el genético. Para tamaños de individuo de 16 y 32 bits el número medio de evaluaciones de la función Royal Road R1 ha sido menor en el caso del AED direccional que en AED sencillo, aunque la diferencia no es significativa con α = 0,05. Con individuos de 32 bits, no existen diferencias significativas entre los tres algoritmos. En este caso, para individuos de 64 bits, el número de evaluaciones necesarias para optimizar la función es claramente menor en el caso del AED direccional. AED sencillo 16 bits 32 bits AED direccional 64 bits Figura 2: Optimización de la función Royal Road 1 Evaluación de Royal Road R2 60000 50000 Nº medio de evaluaciones Algoritmo genético 40000 30000 20000 10000 0 Algoritmo genético 8 bits AED sencillo 16 bits 32 bits AED direccional 64 bits Figura 3: Optimización de la función Royal Road 2 En el caso de la función Royal Road 2, el algoritmo más eficiente para encontrar el óptimo con longitudes de 64 bits ha sido el genético, pero la diferencia no es significativa con respecto al AED sencillo. El AED direccional ha sido menos eficiente. 60000 En la figura 5 se muestra un ejemplo de evolución del fitness medio de cada población en el proceso de optimización de la función Royal Road 1 en 64 bits, para los tres algoritmos considerados. 50000 CONCLUSIONES Nº medio de evaluaciones Evaluación de Unit Commitment Se ha realizado un análisis de un nuevo tipo de algoritmo de estimación de distribuciones direccional para variables binarias, y se ha comparado su rendimiento con el de dos algoritmos evolutivos consolidados: un algoritmo genético con selección por torneos y cruce simple en un punto y un algoritmo de estimación de distribuciones con modelo de probabilidad univariable (UMDA). 40000 30000 20000 10000 0 Algoritmo genético 8 bits AED sencillo 16 bits 32 bits AED direccional 64 bits Figura 4: Optimización de la función Unit Commitment Excepto en el caso de individuos de 8 bits, en el que el AED direccional ha sido el más eficiente, el AED sencillo ha necesitado realizar el menor número de evaluaciones de la función de fitness. Esta diferencia es significativa con respecto a los resultados del AED direccional únicamente en el caso de individuos de longitud 64. Número de poblaciones evaluadas El algoritmo que resulta más eficiente considerando el número de poblaciones evaluadas es el AED direccional. Evolución del fitness medio de las poblaciones 64,00 56,00 Fitness medio 48,00 40,00 32,00 24,00 16,00 8,00 0,00 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 Población Nº Genético AED sencillo AED direccional Figura 5: Evolución del fitness medio, en la optimización de la función Royal Road R1 El algoritmo direccional es el único que ha encontrado el óptimo en todas las simulaciones que se han realizado, sin agotar el número máximo de simulaciones. El algoritmo direccional ha sido el que menor número de poblaciones ha necesitado para alcanzar el óptimo, con las cuatro funciones evaluadas. El AED sencillo es el que menor número de evaluaciones de la función de fitness requiere para encontrar el óptimo, aunque en la mayor parte de los casos, las diferencias existentes con el AED direccional no son significativas. Como líneas de trabajo futuras se propone la aplicación de este tipo de algoritmos a la resolución de problemas de Sistemas Eléctricos de Potencia, y la repetición del estudio comparativo con un conjunto de funciones mayor, y con más dificultad de optimización REFERENCIAS [1] M. Mitchell, ‘An introduction to genetic algortihms’, Bradford Book, MIT Press, 1998. [2] Z. Michalewicz, D. B. Fogel, ‘How to solve it: modern heuristics’, Springer 2004. [3] David Edward Goldberg, ‘Genetic algorithms in search, optimization and machine learning’, AddisonWesley, 2005. [4] Pedro Larrañaga, ‘Estimation of distribution algorithms. A new tool for Evolutionary Computation’, Kluwer Academic Publisher, 2002. [5] A. Sierra and I. Santibáñez, ‘Evolution of descent directions’, Proceedings of the 7th EU Meeting on Adaptive, Self-Adaptive, and Multi-Level Metaheuristics, Málaga 2006.