Source: http://docplayer.es/1966575-Algoritmos-geneticos-aplicados-a-la-resolucion-de-problemas-de-optimizacion.html
Timestamp: 2017-09-26 00:53:57+00:00

Document:
Algoritmos Genéticos aplicados a la resolución de problemas de optimización - PDF
Download "Algoritmos Genéticos aplicados a la resolución de problemas de optimización"
María Teresa Gallego Alcaraz
1 1 Algoritmos Genéticos aplicados a la resolución de problemas de optimización Luis Marco Giménez RESUMEN Los Algoritmos Genéticos, como paradigma principal de la computación evolutiva, presentan una alternativa a los procedimientos tradicionales de búsqueda y optimización como métodos sistemáticos para la resolución de estos problemas. En concreto, y en el ámbito de este trabajo, los algoritmos genéticos se han aplicado con buenos resultados en problemas de optimización en los que se desea localizar los máximos o mínimos de una función matemática determinada. La solución desarrollada en ese trabajo, SIGENOF -Sistema Genético para la Optimización de Funciones-, consiste en la implementación de un algoritmo genético para la optimización de una amplia variedad de funciones matemáticas de las que se desea localizar sus máximos globales. Esta herramienta permite, a través de un sencillo e intuitivo interfaz gráfico de usuario, la introducción de la función a optimizar junto con los parámetros que guiarán la ejecución del algoritmo genético, representación gráfica de las mejores soluciones localizadas por la herramienta, así como la generación de ficheros con los resultados de la ejecución que permiten realizar un análisis posterior de las soluciones encontradas. PALABRAS CLAVE Algoritmo Genético, Aptitud, Búsqueda ciega, Búsqueda estocástica, Computación Evolutiva, Cromosoma, Cruce, Elitismo, Evolución biológica, Gen, Individuo, Maximización, Mutación, Optimización, Población, Reproducción, Selección, Solución. ABSTRACT Genetic Algorithms, as a major main paradigm of evolutional computation, present a good alternative to traditional procedures of searching and optimizing as systematic methods for the resolution of this kind of problems. Genetic algorithms have been applied with good results in optimizing problems where the objective is to obtain the maximus or minimus about a mathematical function. The implemented tool for this work, SIGENOF -Sistema Genético para la Optimización de Funciones- (Genetic System for the Optimization Functions), consists in the implementation of a genetic algorithm for the optimization of a wide variety of mathematical functions of which we want to obtain their local maximums. This tool permits, with its easy and intuitive graphical user interface allowing, among others functions, the input of the function to be optimized, the parameters of the genetic algorithm that will guide its execution, a graphical representation of the best solutions founded by the tool, and a generation of files within the execution s results that will allow a further analysis of the found solutions. KEYWORDS Genetic Algorithm, Fitness, Blind search, Stochastic search, Evolutionary Computation, Chromosome, Crossover, Elitism, Biological evolution, Gen, Individual, Maximization, Mutation, Optimization, Population, Reproduction, Selection, Solution. I. INTRODUCCIÓN La Computación Evolutiva presenta un enfoque alternativo a los algoritmos tradicionales para abordar problemas complejos de búsqueda y aprendizaje a través de modelos computacionales de procesos evolutivos, cuyo principal objetivo consiste en guiar una búsqueda estocástica haciendo evolucionar a un conjunto de estructuras, y seleccionando, de modo iterativo, las más adecuadas. Son cuatro los paradigmas fundamentales de la computación evolutiva: Los Algoritmos Genéticos. Hacen evolucionar a una población, tradicionalmente de enteros binarios, sometiéndolos a transformaciones unitarias y binarias genéricas, junto a un proceso de selección. Los Programas Evolutivos. Hacen evolucionar a una población de estructuras de datos sometiéndolas a una serie de transformaciones específicas y a un proceso de selección. Las Estrategias Evolutivas. Hacen evolucionar a una población de números reales que codifican las posibles soluciones de un problema numérico y los tamaños de salto. La selección es implícita. La Programación Evolutiva. Hacen evolucionar a una población de máquinas de estados finitos sometiéndolas a transformaciones unitarias. En el ámbito de este trabajo se utiliza el paradigma de los Algoritmos Genéticos como herramienta para la resolución de problemas de optimización, aunque adaptando la población al conjunto de números reales que definen el espacio de posibles valores que la función a optimizar puede tomar.
2 2 II. ALGORITMOS GENÉTICOS Desarrollados por John Holland, junto a su equipo de investigación, en la Universidad de Michigan en la década de 1970, los algoritmos genéticos representan el paradigma principal de la computación evolutiva. Son métodos sistemáticos para la resolución de problemas de búsqueda y optimización que aplican a estos los mismos métodos de la evolución biológica: selección basada en la población, reproducción sexual y mutación, combinando las nociones de supervivencia del individuo más apto con un intercambio estructurado y aleatorio de características entre individuos de una población de posibles soluciones, conformando un algoritmo de búsqueda que puede aplicarse para resolver problemas de optimización en diversos campos. Estos algoritmos de optimización tratan de obtener el vector de parámetros S = (x 1, x 2..., x n ) que genera el máximo o el mínimo global de una cierta función F (x 1, x 2..., x n ). En un algoritmo genético el problema se parametriza en un conjunto de variables C = (x 1, x 2..., x n ) que a su vez se codifican en cromosomas, formando el conjunto de estos últimos poblaciones, y a diferencia de otros métodos de búsqueda, en los algoritmos genéticos el método de búsqueda está implícito en él; por tanto se puede afirmar que los algoritmos genéticos son independientes del problema que se desea resolver, lo cual por un lado los hacen robustos por su utilidad ante cualquier problema, pero por otro lado los hacen débiles al no estar especializados en ninguno. (a) Figura 1 - Cada cromosoma codifica una posible soluciã³n al problema Figura 1: Codificación de Soluciones en los Cromosomas Como se puede apreciar en la figura 1, las soluciones, codificadas en los cromosomas (C 1, C 2,..., C n ), compiten para ver cuál de ellos constituye la mejor solución al problema (S 1, S 2,..., S n ), de forma que únicamente los cromosomas mejor adaptados sobrevivirán, dando lugar, en las siguientes generaciones, a cromosomas más fuertes, y por tanto a mejores soluciones, las cuales legarán su material genético a las siguientes generaciones. Este escenario de competición y legado es análogo al biológico, en el que la presión de la selección natural provoca que sean los mejores individuos aquellos que sobrevivan frente a los más débiles, siendo estos los que se reproducirán y crearán nuevos individuos. La diversidad genética, de forma análoga al escenario natural, se introducirá mediante mutaciones y cruces. II-A. Características de los AG como métodos de búsqueda Además de la característica de selección natural, se pueden citar otras características inherentes a los algoritmos genéticos como métodos de búsqueda [Perez96]: Ciega, es decir, no se dispone de ningún conocimiento específico del problema, de manera que la búsqueda se basa exclusivamente en los valores de la función objetivo. Codificada. No se trabaja directamente sobre el dominio del problema, sino sobre representaciones de sus elementos. Múltiple. Se busca simultáneamente entre un conjunto de candidatos. Estocástica, referida tanto a las fases de selección como a las de transformación. Ello proporciona control sobre el factor de penetración de la búsqueda. Todas estas características se introducen deliberadamente para proporcionar mayor robustez a la búsqueda. II-B. Métodos de Optimización y Búsqueda tradicionales Frente a los algoritmos genéticos, los métodos de optimización y búsqueda utilizados tradicionalmente para la resolución de estos tipos de problemas se pueden clasificar en tres tipos principales: basados en el cálculo infinitesimal, de enumeración y aleatorios [Gold89]. 1. Métodos de cálculo basados en el cálculo infinitesimal: Estos métodos se dividen a su vez en dos subtipos: Directos e Indirectos Métodos Indirectos: Buscan un extremo local mediante la resolución de un conjunto de ecuaciones no lineales que aparecen tras igualar el gradiente de la función objetivo a cero. Es decir, dada una función sin restricciones y suave, buscando un posible pico empezando por restringir la búsqueda a aquellos puntos que poseen pendiente cero en todas las direcciones. Métodos Directos: Buscan puntos locales óptimos moviéndose en una dirección relativa al gradiente local. 2. Técnicas de enumeración: Consisten en ir probando uno a uno todos los puntos de un espacio de búsqueda restringido, ya sea un espacio finito o uno infinito discretizado. Estas técnicas presentan el problema de ser poco eficientes al requerir un tiempo excesivo de cálculo cuando el espacio de búsqueda es grande. 3. Algoritmos de búsqueda aleatoria: Consisten en probar con distintos valores de manera aleatoria. Se puede afirmar que no actúan peor que las técnicas de enumeración. Estas técnicas se caracterizan por no ser robustas, aunque esto no significa que no sean útiles. II-C. Diferencias de los AG con los métodos de búsqueda y optimización tradicionales Las diferencias de los AG con los algoritmos de búsqueda y optimización tradicionales se pueden resumir en las siguientes [Gold89]:
3 3 1. Los AG trabajan con una codificación de un conjunto de parámetros en lugar de hacerlo con los parámetros directamente. 2. Los AG no se limitan a buscar en las cercanías de un punto, sino que utilizan una población de puntos. 3. Los AG utilizan únicamente la información que les proporciona la función de coste, sin necesidad de ninguna otra información. Por lo tanto no requieren calcular derivadas. 4. Los AG utilizan reglas de transición probabilísticas para guiar su búsqueda en lugar de las reglas deterministas que otros métodos tradicionales suelen utilizar. Estas cuatro propiedades contribuyen a que los AG sean más robustos que los métodos tradicionalmente usados. II-D. Funcionamiento de un AG básico La figura 2 representa el esquema de funcionamiento de un algoritmo genético básico. En este esquema el proceso comienza seleccionando un número de cromosomas que conformarán la población inicial. Seguidamente se evalúa la función de adaptación para estos individuos. Esta función proporciona una medida de la aptitud de cada cromosoma para sobrevivir en su entorno, y debe estar definida de tal forma que los cromosomas que representen las mejores soluciones obtengan valores más altos de adaptación, de tal modo que los individuos más aptos se seleccionarán en parejas para reproducirse. La reproducción genera nuevos cromosomas que combinarán características de ambos padres. Estos nuevos cromosomas reemplazarán a los individuos con menores valores de adaptación. Algunos cromosomas serán seleccionados al azar para ser mutados. La mutación consiste en aplicar un cambio aleatorio en su estructura. Finalmente los nuevos cromosomas se incorporarán a la población reemplazando a cromosomas ya existentes. Para realizar esta sustitución existen varios criterios que pueden utilizarse para elegir a los cromosomas que serán reemplazados. Los ciclos de selección, reproducción y mutación se repetirán hasta que se cumpla el criterio de terminación del algoritmo genético, momento en el cual el cromosoma mejor adaptado se devolverá como la mejor solución. Los criterios de terminación empleados en implementaciones de AG son básicamente dos [Mich99]: 1. La condición de terminación más simple es aquella que va comprobando el número actual de generación g; la búsqueda se termina si el número total de generaciones excede un valor constante predefinido, es decir si g MAXGENS. 2. Como la condición de terminación anterior presupone el conocimiento de las características de la función, lo cual influye en la longitud de la búsqueda, parece más conveniente que el algoritmo finalice la búsqueda cuando la probabilidad de una mejora significativa entre sucesivas generaciones sea muy pequeña, es decir que el valor de la función de coste entre generaciones no mejore por encima de un cierto umbral ε. En el algoritmo genético desarrollado en este trabajo se han implementado ambas condiciones de terminación, siendo la primera el criterio por defecto, mientras que el segundo criterio Figura 2: Esquema de funcionamiento de un AG básico se puede utilizar de forma discrecional por el usuario de la herramienta. III. PROBLEMAS DE OPTIMIZACIÓN A RESOLVER El tipo de problemas de optimización que se resuelven con la herramienta desarrollada en este trabajo son aquellos que tienen la siguiente formulación: Se define el vector de parámetros θ: θ = [x 1,..., x n ] Donde los elementos x i son números reales acotados dentro de un cierto espacio S. S = {x 1 [x min 1, x max 1 ], x 2 [x min 2, x max 2 ],..., x n [x min n, x max n ]} Es decir, el valor que puede tomar cada elemento x i encuentra acotado dentro de un cierto valor mínimo x min i de un cierto valor máximo x max i. Sea la función de coste J : R n R J = f(θ) Se verifica la condición de que J > 0 para cualquier θ considerado. El problema que se desea resolver con el algoritmo genético, por tanto, es el de obtener el vector de parámetros óptimo θ opt S que genera el valor máximo J opt de la función de coste J. J opt = J(θ opt ) = max θ S (J(θ)) se y
4 4 IV-D. Selección El propósito de la selección de padres es dar más oportunidades de reproducción a aquellos individuos de una población que son los que mejor se ajustan al problema tras haber sido evaluados por la función de evaluación. Con este propósito, el operador de selección aplica, en este AG, el Método de la Ruleta para establecer la probabilidad de selección de cada cromosoma de la población actual. El algoritmo que describe dicho método se resume como: Se suman los fitness de todos los individuos de la población J i. A esta suma se le denominará F, definiéndose como: F = P OP _SIZE Ji i=1 Figura 3: Esquema de un algoritmo genético básico IV. ALGORITMO GENÉTICO El AG implementado se ha realizado siguiendo el esquema básico propuesto por Michalewicz [Mich99]. A continuación se describe la implementación de las diferentes etapas por las que pasa del AG para la obtención de las soluciones. IV-A. Inicialización Etapa de las más críticas en lo que a resultados del AG se refiere, ya que es la responsable de generar aleatoriamente la población inicial de individuos con la que el AG empezará a trabajar. Es por tanto especialmente importante que el generador de números aleatorios, o más concretamente pseudoaleatorios, tenga la suficiente calidad y capacidad para generar individuos de forma verdaderamente aleatoria. El módulo generador se ha desarrollado siguiendo la implementación de referencia ran2 descrita en [Recip88]. 1. Se calcula la probabilidad de selección p i para cada cromosoma de la población: p i = J i F. 2. Se calcula la probabilidad acumulada q i para cada cromosoma: q i = P OP _SIZE pk k=1 3. Se gira la ruleta POP_SIZE veces. Cada vez que se gira la ruleta se genera un número real aleatorio r dentro del rango [0, 1]. Si r < q 1 se selecciona el cromosoma C 1, en caso contrario se selecciona el cromosoma i-ésimo C i (2 i P OP _SIZE), tal que q i 1 < r q i para una nueva población. Tras haber girado la ruleta POP_SIZE veces, se habrán seleccionado POP_SIZE cromosomas para formar parte de la nueva población. Se ilustra el proceso de selección de cromosomas con el método de la ruleta en la figura 4. IV-B. Evaluación En esta etapa se evalúa a cada individuo o cromosoma i de la población inicial (POP_SIZE) sobre la función de coste J del problema a resolver, obteniendo, para cada uno de ellos, su valor de fitness o adaptación al problema. IV-C. Conservación del mejor individuo Se identifica y se selecciona el mejor individuo de la generación actual para conservar su información genética para la siguiente generación. Esta selección se realiza en función del grado de adaptación del individuo a la función de coste J que se está optimizando. En este caso su adaptación vendrá determinada por el valor que hace máximo la función de coste J para la generación actual. IV-E. Cruce Figura 4: Método de la Ruleta El operador de cruce empleado en este trabajo ha sido el de cruce en un solo punto, en el que la probabilidad de cruce viene determinada por el valor de probabilidad pc [0, 1],
5 5 siendo éste un parámetro configurable por el usuario que ejecuta el AG. Teniendo en cuenta este parámetro pc, el operador de cruce en un solo punto se ha implementado de la siguiente forma: 1. Se seleccionan los individuos de la nueva población de POP_SIZE individuos para reproducirse. Por cada individuo se genera un número real aleatorio r comprendido en el rango [0, 1]. Si r < pc, entonces el cromosoma i es seleccionado para reproducirse. Debido a que el operador de cruce en un solo punto opera con parejas de individuos, si la selección de cromosomas para su reproducción obtuviera un conjunto impar, se procedería a la selección de un cromosoma adicional de forma aleatoria, de forma que el conjunto final de cromosomas seleccionados sea siempre un número par. 2. Se realiza la operación de cruce en un solo punto entre las parejas de individuos seleccionados para la reproducción. El punto de cruce para el intercambio de información entre genes se selecciona, en este caso, de forma aleatoria. Esta operación de cruce se representa en la figura 5. IV-F. Figura 6: Cruce en un solo punto en SIGENOF Mutación El operador de mutación utilizado en SIGENOF ha sido el de mutación uniforme. Este operador se aplica a todos los individuos de la población, aunque su efecto viene condicionado por el valor de probabilidad pm [0, 1] que el usuario que ejecuta el AG establece en cada ejecución. Este operador se ha implementado de forma que para cada gen x k de cada uno de los POP_SIZE cromosomas de la población se genera un número aleatorio r comprendido entre [0, 1], de forma que si r < pm el cromosoma x k será mutado. La mutación consiste, en este caso, en el reemplazo del valor x k por un nuevo valor real aleatorio comprendido dentro del rango de posibles valores definidos para dicho gen entre [x min k, x max k ]. Al finalizar esta etapa se realiza una nueva evaluación de la población de individuos para obtener sus nuevos valores de fitness. Figura 5: Cruce en un solo punto Tras estas operaciones se obtendrán dos nuevos cromosomas hijos que reemplazarán a los cromosomas padre en la población de individuos. En la solución desarrollada en este trabajo, al contener el cromosoma un número de variables de genes, número que viene condicionado por el número n de variables de la función J que se desea optimizar (x 1,..., x n ), el intercambio de información genética se realiza seleccionando un número entero aleatorio comprendido en el intervalo [1, n] que indicará la posición del parámetro x i (gen i) a partir del cual se intercambiará la información genética, entre la pareja de cromosomas. Este funcionamiento puede apreciarse en la figura 6. IV-G. Elitismo Puede suceder que el mejor miembro de una población falle en la reproducción de descendientes para la siguiente generación. Por este motivo se ha optado por la inclusión de una estrategia elitista en el AG de forma que se resuelva esta posible debilidad copiando los mejores individuos de una generación en la siguiente generación incondicionalmente. Se ha implementado la estrategia de elitismo de la siguiente forma: 1. Se busca el mejor y peor cromosoma de la población actual de POP_SIZE individuos y se guardan como mejor_actual y peor_actual respectivamente. 2. Se compara el valor del fitness del mejor cromosoma de la población actual con el mejor cromosoma de las generaciones anteriores (mejor_cromosoma). Si el mejor cromosoma de la población actual es mejor que el mejor cromosoma de las generaciones anteriores, es decir, tiene un fitness mayor, se reemplaza como mejor cromosoma el de la población actual. En caso contrario, se sustituye el peor cromosoma de la población actual por el mejor cromosoma de las generaciones anteriores.
6 6 IV-H. Condición de terminación El AG implementado finaliza de forma normal su bucle de ejecución cuando el contador de generaciones alcanza el valor definido en la variable MAXGENS por el usuario que ejecuta el AG, o bien cuando la probabilidad de una mejora significativa entre sucesivas generaciones no supera el umbral ε introducido, de forma opcional, en la herramienta. V. RESULTADOS La herramienta fue evaluada con varios problemas de optimización multivariable clásicos, realizando diversas pruebas de optimización variando los parámetros del AG, con buenos resultados en la mayoría de los casos. VII. RECURSOS Los binarios y los fuentes de SIGENOF para plataformas MS-Windows y GNU/Linux pueden descargarse libremente desde el sitio web del autor: dentro la sección Proyectos. Todo el contenido publicado en la web se encuentra disponible bajo las licencias libres GPLv3 y CC BY-SA, lo que permite su copia, modificación y redistribución bajo los mismos términos establecidos en las licencias. REFERENCIAS [Chen99] Mitsuo Gen and Runwei Cheng - Genetic Algorithms & Engineering Design, 1989 [Davis91] Lawrence Davis - Handbook of Genetic Algorithms, 1991 [Gold89] David E. Goldberg - Genetic Algorithms in Search, Optimization and Machine Learning, 1989 [Mich99] Zbigniew Michalewicz - Genetic Algorithms + Data Structures = [Holl92] Evolution Programs, 1999 John H. Holland - Algoritmos Genéticos. Investigación y Ciencia, [Perez96] Anselmo Pérez Serrada - Una Introducción a la Computación Evolutiva, 1996 [Recip88] Cambridge University Press - Numerical Recipes in C: The art of Scientific Computing, 1988 Figura 7: Ejemplo resuelto con SIGENOF VI. CONCLUSIONES La herramienta implementada en este trabajo, SIGENOF, no pretende ser en ningún momento una herramienta universal para la optimización de funciones matemáticas, sino más bien una aplicación práctica de una de las ramas de la Computación Evolutiva: los Algoritmos Genéticos. A través de ella se demuestra cómo un sencillo algoritmo que simula los mecanismos básicos de la evolución biológica es capaz, en la mayoría de los casos, de obtener soluciones aceptables a un problema de optimización dado a través de una formulación matemática. Es cierto que en ocasiones, y dependiendo del problema que se desee resolver, se deberán ajustar algunos parámetros del AG, tales como el tamaño de la población, el número de generaciones o las probabilidades de selección y mutación, pero tras estos pequeños ajustes el AG probablemente será capaz de encontrar una buena solución al problema a resolver. Cuando se habla de una buena solución nos referimos a una solución muy cercana a la solución real que se busca, es decir es posible que el AG no localice la solución exacta al 100 %, sin embargo en la mayoría de los casos será capaz de localizarla en un entorno muy cercano, mientras que en otros incluso se alcanzará el 100 % de precisión. Es evidente por tanto, que la aplicación de esta herramienta, y en general la de los AG, se circunscribe a aquellos problemas en los que una solución cercana puede ser tan válida como la solución real. Al mismo tiempo estas soluciones, generalmente muy próximas al máximo global, pueden servir como magníficas soluciones iniciales en los métodos tradicionales de optimización.
$3/,&$&,Ï1 '(/ $/*25,702 *(1e7,&2 ³(/,7,67$ $ /$ 237,0,=$&,Ï1'(1$9(6,1'8675,$/(6
$3/,&$&,Ï1 '(/ $/*25,702 *(1e7,&2 ³(/,7,67$ $ /$ 237,0,=$&,Ï1'(1$9(6,1'8675,$/(6 p Prendes Gero, Mª Belén. Bello García, Antonio. Del Coz Díaz, Juan José. Departamento de Construcción e Ingeniería de la

References: resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución