Algoritmos Genéticos Y Optimización n Heurística Dr. Adrian Will Grupo de Aplicaciones de Inteligencia Artificial Universidad Nacional de Tucumán awill@herrera.unt.edu.ar
Niching Genetic Algorithms En un Algoritmo Genético común, el objetivo es encontrar el óptimo global del problema. De haber más de un punto del espacio de búsqueda que realice ese valor, algunas arquitecturas pueden encontrar algunos, pero no están diseñadas para encontrarlos todos. Del mismo modo, de existir óptimos locales (máximos o mínimos locales, según el problema), serán eventualmente descartados en función del óptimo global, que ganará en la comparación. Existen sin embargo arquitecturas de AG diseñadas para encontrar y conservar todos los posibles Nichos Ecológicos posibles, o sea, todos los posibles puntos o zonas del espacio de búsqueda, que correspondan a óptimos locales o al óptimo global. Así, el Algoritmo deberá encontrar y conservar todos los puntos que realicen el óptimo global, y los eventuales óptimos locales.
Niching GA GA Común Sólo Máximo Global Niching GA Máximo Global + Máximos Locales
Niching GA Restricción de Deriva Genética Existen muchas arquitecturas distintas de este tipo. Una clase de Algoritmos Genéticos Niching tienen como idea principal restringir la competencia, de modo de demorar el proceso de deriva genética (Genetic Drift). Este es el proceso por el cual el óptimo global gana sobre los óptimos locales, de modo que éstos desaparecen de la población. De este tipo son los algoritmos que utilizan Tournament Selection, o los algoritmos de división en subpoblaciones mientras la migración sea restringida. Esto tiene el defecto de que sólo se consigue Demorar el proceso; o sea, si se deja evolucionar el sistema lo suficiente, eventualmente el óptimo global terminará copando la población. La Cantidad de Generaciones es crítica, ya que dejando evolucionar lo suficiente, el sistema eventualmente convergerá y sólo se obtendrán variantes menores del óptimo global. Más aún, no hay garantías de que un óptimo local encontrado durante el proceso sea conservado, sólo más probabilidades de que no todos sean eliminados
Niching GA - Entornos Existe un segundo tipo de Algoritmos Genéticos Niching, diseñados de modo que cualquier óptimo local encontrado durante la búsqueda tenga buenas probabilidades de sobrevivir, sin importar la Cantidad de Generaciones considerada. La idea principal es definir de alguna manera un Entorno del óptimo (máximo). Si un punto con un valor más alto es encontrado dentro del entorno, estamos trepando una ladera y no en una cima, por lo tanto el punto presente se descarta y se toma el nuevo. De lo contrario, si otro punto con valor más alto es encontrado pero Fuera del entorno, entonces se considera que estamos en una cima (claramente no la mas alta de la función), y ambos puntos se conservan. Los diferentes Algoritmos Geneticos Niching de esta clase, se basan entonces en la forma en que definen y manejan este entorno (implícita o explícita, estática o dinámica, Homogénea en toda la población o no)
Niching GA - Entornos Explícito Es necesario definir un valor para el radio y forma del entorno Implicito No hay necesidad de definir explícitamente el valor del radio ni la forma del entorno en ningún punto del proceso, ni siquiera dentro del algoritmo Estático El valor del radio no cambia dentro de la corrida del Algoritmo Dinámico El valor del radio cambia dentro de la corrida del Algoritmo, según un patrón prefijado Adaptativo El valor del radio cambia dentro de la corrida del Algoritmo, de una forma que varía de una función a otra y una corrida a otra Homogéneo El radio se supone igual en todo el dominio (Bounds) No Homogéneo El radio puede variar en distintas zonas del dominio
Niching GA Restricted Tournament Selection: Steady State GA, sólo 2 individuos se eligen por vez, al azar de la población. Estos individuos sufren Crossover, Mutación, y Competencia, generándose un único candidato a reinserción. Se eligen entonces k elementos al azar de la población. De estos se extrae el más similar al candidato, y se los compara. Si el candidato tiene mejor Fitness, ingresa en ese lugar, de lo contrario es descartado. Worst Among Most Similar and Enhanced Crowding: Existen variantes SS y generacionales de estos 2 algoritmos. En ambos, la idea es al encontrar un buen individuo, reinsertarlo en la población eliminando un individuo similar (y por lo tanto cercano en el espacio de soluciones), pero con menor fitness. En Enhanced Crowding, se eligen los k individuos con peor fitness de la población, se elige el más similar entre estos al candidato, y se comparan los valores de Fitness. Sobrevive e ingresa en la población el que tenga mejor fitness. La idea en ambos casos es sólo descartar un individuo de la población si se encuentra otro cercano con mejor fitness (o sea, subiendo la misma ladera)
Niching GA Deterministic Crowding Mahfoud, 1995 (Tesis) La forma del entorno del óptimo está determinada por una Distancia en el espacio de soluciones. El radio del entorno es implícito (una de las más importantes ventajas del algoritmo), no es necesario definirlo en ningún paso del proceso, ni es supuesto homogéneo (puede variar en las distintas zonas del dominio). Es un método de tipo Overlapping, o sea, los padres compiten con los hijos por la supervivencia Requiere mucha mayor cantidad de procesamiento que un AG común, dado que TODA la población debe ser emparejada y cruzada de una generación a otra (no hay selección dado que toda la población es cruzada, ni mutación, dado el riesgo de que la mutación tome una buena solución y la arruine)
Niching GA Deterministic Crowding Población Inicial Evaluación Inicial InitPop Shuffle and Pairing Crossover Sin Selección Toda la población Es Cruzada en pares Sin Mutación Deterministic Crowding NewPop Termina?
Niching GA Deterministic Crowding? ), ( ), ( ), ( ), ( 1 2 2 1 2 2 1 1 C P d C P d C P d C P d + + 2 2 1 1 con y con Comparamos C P C P 1 2 2 1 con y con Comparamos C P C P
Niching GA Deterministic Crowding P, C 1 P2, C1, 2 Si d ( P1, C1 ) + d( P2, C2 ) d( P1, C2 ) + d( P2, C1 )? No Si f ( C1 ) > f ( P1 )? No Si f ( C2 ) > f ( P1 )? No D 1 = C 1 D 1 = P 1 D 1 = C 2 D 1 = P 1 Si f ( C2 ) > f ( P2 )? No Si f ( C1 ) > f ( P2 )? No D 2 = C 2 D 2 = P 2 D 2 = C 1 D 2 = P 2
Niching GA Deterministic Crowding La mayoría de los Algoritmos Genéticos Niching requieren mayor cantidad de procesamiento y fine tuning de Parámetros, o sea, ajuste fino de uno o más parámetros (cosa que no ocurre en los AG comunes). En el caso de Deterministic Crowding, el parámetro a ajustar es los Operadores de Crossover a utilizar, y la proporción en que se aplicará cada uno (y es problem dependent, el ajuste cambia de un problema a otro). Esto se debe a que existen algunos operadores como Cube Crossover, con una gran tendencia a explorar, pero que resulta disruptiva y no permite mejorar las buenas soluciones ya encontradas (se conservan pocos óptimos locales). Y viceversa, existen operadores como Uniform Crossover, con poca tendencia a explorar y que no son buenos encontrando óptimos, pero sí refinan una buena solución encontrada para llevarla al óptimo local más cercano, y conservan las buenas soluciones en la población. En general la proporción de aplicación es del orden de 80 a 90 % operadores de Preservación, 10 a 20 % operadores de Exploración
Niching GA Deterministic Crowding Las distancias más comúnmente empleadas son las usuales, distancia euclídea al cuadrado para problemas reales, distancia de Hamming para problemas discretos, y modificaciones para adaptarlas al problema, en el caso de que no exista una más indicada. Ventajas: Está diseñado para encontrar y conservar todos los óptimos locales de la función, así como todos los puntos que realicen el óptimo global No importa la cantidad de generaciones que se lo deje evolucionar (no es un parámetro crítico No hay necesidad de definir explícitamente el entorno del óptimo (radio y entorno implícitos) Sí es necesario definir una función distancia en el espacio de soluciones, pero esto es necesario en casi todos los algoritmos de este tipo Desventajas Mayor Procesamiento Necesidad de ajuste de 1 parámetro de un problema a otro
Ejemplo - De Jong Function F5 Deterministic Crowding = 32 16 0 16 32 32 16 0 16 32 32 16 0 16 32 32 16 0 16 32 32 16 0 16 32 32 32 32 32 32 16 16 16 16 16 0 0 0 0 0 16 16 16 16 16 32 32 32 32 32 A = + + + + = 5 1, 6, 6, 5 ] ) ( [ ] ) ( [ 1 j i j i j i A y j A x i F ε
Ejemplo - De Jong Function F5 Deterministic Crowding Algoritmo: Deterministic Crowding Tipo: Generacional Distancia: Euclídea modificada (se anula si los vectores son demasiado similares; esto evita que el algoritmo ponga demasiadas soluciones similares sobre un mismo punto) 2 v w = sum( v w).^2 si v w > ε dist( v, w) = 0 sino Operadores de Crossover: Cube Crossover (95 %) (Factor de Exploración 1.25) Uniform Crossover with shuffle (5 %) Selección y Mutación: No utilizados en esta arquitectura Tamaño de la Población Inicial: 80 Individuos Cantidad de Generaciones: 50 a 70
Ejemplo - De Jong Function F5 Deterministic Crowding
Ejemplo - De Jong Function F5 Deterministic Crowding
Ejemplo - De Jong Function F5 Deterministic Crowding
Ejemplo - De Jong Function F5 Deterministic Crowding
Ejemplo - De Jong Function F5 Deterministic Crowding
Ejemplo - De Jong Function F5 Deterministic Crowding
Ejemplo - De Jong Function F5 Deterministic Crowding
Ejemplo - De Jong Function F5 Deterministic Crowding
Ejemplo - De Jong Function F5 Deterministic Crowding
Ejemplo - De Jong Function F5 Deterministic Crowding
Ejemplo - De Jong Function F5 Deterministic Crowding
Grouping Genetic Algorithm Los Algoritmos Genéticos en general, no funcionan bien en problemas del tipo de Particiones, donde el problema consiste en dividir el espacio en partes de forma de cubrirlo todo, sin repetición, optimizando una ó más cantidades. Algunos de los más conocidos problemas de este tipo, son: Bin Packing Problem: Se tiene una colección de objetos de volúmenes diversos, que deben ser colocados en cajas de tamaño fijo (Bins), de manera de minimizar el número total de cajas utilizado. La restricción obvia es que no se debe exceder el volumen máximo de la caja Graph Coloring Problem: Se debe pintar los nodos de un grafo dado, de modo que nodos conectados por una arista del grafo, no tengan el mismo color El Teorema de los 4 colores dice que cualquier grafo (planar) puede ser coloreado con 4 colores, de esta forma. Sin embargo, la forma de colorear un grafo en particular es NP-Hard TSP with several Salesmen: El problema es el TSP cuando se tiene más de un viajante: se deben encontrar n Tours, uno para cada vendedor, de manera que entre los n viajantes cubran todo el circuito sin repetir ciudades (salvo la primera), minimizando la distancia total recorrida por cada uno
Grouping Genetic Algorithm Falkenauer, 1996 Se diseñó una arquitectura de AG específica para problemas de Particiones. Codificación, Función de Evaluación, y métodos de Crossover y Mutación. Los métodos deben ser ajustados en cada problema, y ajustados para las eventuales restricciones y costos, pero el método proporciona una muy buena arquitectura básica que da buenos resultados en muchos casos. Existen 2 codificaciones básicas. Una es Permutaciones, ya que, al ser un problema de Particiones, todo el conjunto a partir debe estar en alguna de las clases, y por definición son problemas discretos (aún cuando las restricciones suelen ser reales, como en el caso del Bin Packing Problem Volúmenes). Se le agrega al final una coordenada por clase a llenar (en la arquitectura más común, se debe prefijar el número máximo de clases, cajas a llenar, o colores a utilizar), que indica cuántos individuos hay en cada clase. La restricción a cumplir es que la suma de estas últimas coordenadas debe ser igual al número total de objetos a distribuir (tamaño de la partición) La otra es la codificación por Subconjuntos
Grouping Genetic Algorithm - Codificaciones 2 9 7 1 5 3 10 6 4 8 4 3 3 4 3 3 Clase 1:Objetos 2, 9, 7, 1 Clase 2:Objetos 5, 3, 10 Clase 3:Objetos 6, 4, 8 Clase 1: 4 primeros elementos Clase 2: 3 elementos siguientes Clase 3: 3 elementos finales Restricción a cumplir 4 + 3+ 3 = 10 N i= 1 #( g i ) = #(Permutación)
Grouping Genetic Algorithm - Codificaciones Ejemplo Multiple TSP (con varios vendedores) 4 + 3+ 3 = 10 2 9 7 1 5 3 10 6 4 8 4 3 3 El Orden en que aparecen las ciudades dentro de cada Tour es una parte importante del problema 6 4 8 Centro 5 2 10 3 1 9 7
Grouping Genetic Algorithm - Codificaciones Ejemplo Bin Packing Problem Codificación por Permutaciones 4 + 3+ 3 = 10 2 9 7 1 5 3 10 6 4 8 4 3 3 9 2 1 7 5 3 10 4 6 8 Todos los objetos a embalar tienen que estar en alguna de las cajas (asegurado por la codificación), sin exceder el volumen de la caja contenedora. El Orden en que aparecen las variables dentro de cada grupo es Irrelevante Existe gran cantidad de soluciones Equivalentes (Redundancia)
Grouping Genetic Algorithm - Codificaciones Ejemplo Bin Packing Problem Codificación por Subconjuntos 1 2 3 4 5 6 7 8 9 10 1 1 2 3 2 3 1 3 1 2 Sin restricciones 1 2 3 9 2 1 7 5 3 10 4 6 8 El Orden en que aparecen las variables dentro de cada grupo es Irrelevante, la división es en Subconjuntos (la variable indica a que grupo pertenece el elemento, de forma de asegurar que todos están asignados) Redundancia 0
Grouping Genetic Algorithm - Crossover 1 - Crossover por Permutaciones 1 - Codificación por Permutaciones: La codificación por permutaciones presenta gran redundancia (muchas soluciones que producen la misma partición), lo que dificulta la búsqueda. Por lo tanto sólo debe ser usada en casos como el MTSP, donde el orden de los elementos dentro del grupo es importante. En ese caso, cualquiera de los operadores utilizados para permutaciones y TSP como Order Based Crossover, Cyclic Crossover, o Partial Map Crossover, puede ser usado sin problemas (aplicándolo solo a la parte Permutación). También puede ir combinado con otro que opere sobre la segunda parte del vector, teniendo en cuenta que en esta parte el orden no es necesariamente importante, y que si bien la longitud máxima es en general fija, la cantidad de grupos efectivamente utilizados (cajas usadas, cantidad de vendedores), puede ser variable. Por lo tanto, la solución puede ser de Longitud Variable
Grouping Genetic Algorithm - Crossover 1 - Crossover por Permutaciones P 1 = 2 9 7 1 5 3 10 6 4 8 4 3 3 P 2 = 4 10 2 6 5 3 9 7 1 8 2 4 4 C 1 = 2 9 7 10 5 3 1 6 4 8 4 3 4 Partial Map Crossover Single Point Crossover 4 + 3+ 4 = 11 10 Restricción No Satisfecha
Grouping Genetic Algorithm - Crossover 1 - Crossover por Permutaciones Esta forma de Crossover tiene la desventaja de que no tiene en cuenta los grupos que constituyen los padres. Por lo tanto, en general No Preserva una parte muy importante de la información genética de los padres. Así, aunque este operador funciona y busca adecuadamente soluciones para el TSP, en muchas ocasiones genera hijos de menor calidad de los padres. Por otro lado, el problema de la restricción no cumplida siempre existe. Uno de los problemas del Grouping Genetic Algorithm es que en la mayoría de los operadores de Crossover, se producen Incompatibilidades que deben ser reparadas. Y la redistribución de los elementos debe ser hecha teniendo en cuenta las características del problema en particular. Por lo tanto, Para aplicar Grouping GA es necesario diseñar una Heurística de Reparación de solucíones Incompatibles, asociada al operador de Crossover, que es altamente problem-specific
Grouping Genetic Algorithm - Crossover 2 - Crossover por subconjuntos 1 2 3 4 5 6 7 8 9 10 1 1 2 3 2 1 3 2 1 3 1 2 3 1 4 1 3 2 4 2 1 3 2 1 2 3 4 1 2 3 4 5 6 7 8 9 10 1 1 2 3 2 1 3 2 1 3 1 2b 3b 2 3 3b 2b 2b 3b 2b
Grouping Genetic Algorithm - Crossover 2 - Crossover por subconjuntos 1 2 3 4 5 6 7 8 9 10 1 1 2 3 2 1 3 2 1 3 1 2b 3b 2 3 3b 2b 2b 3b 2b Están en 2 grupos 1 2 3 4 5 6 7 8 9 10 1 1 2 1 2 1 2b 3b 2 3 3b 2b 2b 3b 2b Tengo ahora 5 grupos, y elementos Repetidos. A éstos se los elimina del grupo en el que estaban en el PRIMER padre. Así, el grupo 3 desaparece, y los grupos 1 y 2 del padre 1 quedan ahora con 2 elementos
Grouping Genetic Algorithm - Crossover 2 - Crossover por subconjuntos 1 2 3 4 5 6 7 8 9 10 1 1 2 1 2 1 2b 3b 2 3 3b 2b 2b 3b 2b 1 2 3 4 5 6 7 8 9 10 1 1 4 3 2 1 2 4 3 2 1 2 3 4 1 1 2 3b 2b 1 2b 2 3b 2b Pueden aparecer cajas vacías (como la 3), cajas excesivamente llenas, etc. Nuevamente es necesaria una Heurística de Reparación
Grouping Genetic Algorithm - Crossover 2 - Crossover por subconjuntos 1 1 2 3 2 1 3 2 1 3 1 2 3 1 4 1 3 2 4 2 1 3 2 1 2 3 4 C 1 = 1 1 4 3 2 1 2 4 3 2 1 2 3 4 Observemos que el grupo 1 corresponde al grupo 1 del padre 1, sólo perdió 1 elemento, y los grupos 2 y 3 corresponden a los grupos 2 y 3 del padre 2, exactos en posición y elementos Se preservó parte de la información genética de los padres, relativa a la conformación de los grupos dentro de la partición
Grouping Genetic Algorithm - Mutación Se ha observado que, de manera similar a Niching GA, los operadores de Mutación tienen tendencia a arruinar buenas soluciones. Por lo tanto, existen muchas arquitecturas de Grouping GA sin mutación. Sin embargo, existen problemas que pueden ser solucionados por un adecuado operador de Mutación. Uno de los más comunes es clases con muy pocos elementos, lo cual en general en los problemas de partición no es deseable (cajas casi vacías, tours demasiado cortos). Por lo tanto, uno de los operadores de mutación más usados consiste en tomar la clase más vacía y redistribuir sus elementos entre las otras clases, de ser posible, según alguna heurística que dependerá del problema. En el caso de MTSP con permutaciones, cualquier operador de TSP tales como Inversión, Shift Mutation, o Swap, adaptados a modificar recorridos dentro de cada Tour, pueden resultar una herramienta altamente efectiva, ayudando a acortar la longitud recorrida dentro de cada tour.
Grouping Genetic Algorithm Fitness Function Para el Bin Packing Problem, se ha propuesto la siguiente función de Evaluación: F i F( sol) = 1 N N i= 1 F i C donde es el Volumen Total de la caja i ocupada en esta solución, C es el volumen total de las cajas (recordemos que se suponen del mismo tamaño y volumen), y N es el número total de cajas empleado en la solución. F C, F C 1 Ahora como i i. Pero entonces la suma es menor o igual que N, por lo que esta función cumple 0 F 1 para cualquier solución del dominio. El objetivo es Maximizar F (conseguir F=1), que corresponde al caso en que todas las cajas están llenas al máximo de su capacidad. Agregar una caja vacía baja el valor de F en 1/N, y cualquier caja no llena disminuirá el valor de F de manera proporcional. m
Grouping Genetic Algorithm Fitness Function sol = sol 2 = 1 0.9 0.9 0.9 1.0 1.0 0.7 1 1 F( sol1 ) = = 3 3 F( sol ) 1 3 ( 2 2 2 0.9 + 0.9 + 0.9 ) = 3*0.81 0. 81 1 3 ( 2 2 2 1 + 1 + 0.7 ) = (2 + 0.49) 0. 83 2 = = m es un entero positivo (generalmente 1 ó 2), que controla la preferencia de la función por cajas totalmente llenas. O sea, m=1 da el mismo valor para soluciones con cajas a medio llenar que a otra que tiene el mismo volumen total y cajas ocupadas, pero más cajas llenas. Con m=2, la función favorece a las soluciones que tienen más cajas llenas.
Grouping Genetic Algorithm Fitness Function Para el MTSP, se ha propuesto la siguiente función de Evaluación: F ( sol ) = min( max i= 1: N (distancia recorrida por el vendedor i)) = min( max i= 1: N ( T i )) Esta función mide el tour mas largo recorrido por uno de los vendedores en esta solución. Existen otras funciones con comportamientos ligeramente distintos, como minimizar la distancia total recorrida, etc. En el caso de usar esta función, se asegura que el Algoritmo intentará minimizar el tour mas largo, y por ende todos los recorridos. Sin embargo, tendrá problemas cuando existan máximos obligados (una ciudad muy retirada del resto, que obligue a un tour largo). En ese caso el algoritmo no intentará mejorar el resto de los recorridos, mientras que la otra función sí
Grouping Genetic Algorithm Fitness Function 6 4 8 12 11 5 10 3 1 Centro 7 2 9 La función Minimizar el Tour más largo tiene un mínimo obligado extremadamente alto, dado por la ciudad 7, y cualquier cambio en el resto de los recorridos pasará inadvertido. La función Distancia Total Recorrida, en cambio, tiene mínimo obligado, pero su valor depende del resto de los recorridos.
Grouping Genetic Algorithm Fitness Function F ( sol ) N = p1 min(max( T, = 1,..., )) + 2 i i N p T i i= 1 Recordemos que el objetivo es resolver el MTSP, no minimizar una función en particular. Por lo tanto, se pueden diseñar otras funciones que incorporen tengan en cuenta los 2 puntos de vista. De este modo, la función seguirá intentando mejorar el resto de los recorridos, aunque exista uno necesariamente muy largo, e intentará que todos los tours tengan longitudes similares (que no exista uno mucho más largo que los demás) En este caso, se convierte en una optimización multiobjetivo
Grouping Genetic Algorithm Resumen: Es mas una estrategia que un algoritmo determinado No existen paquetes ni recetas cerradas (como sí existen en el caso de Niching GA), que funcionen en todos los casos. Una parte importante del algoritmo debe ser adecuada a cada problema. Funciona mucho mejor que los demás en los problemas de particiones Varios problemas delicados con muchas restricciones, como problemas de Ruteo de Vehiculos, incluyendo ventanas de tiempo (TSPWTW), y problemas de recogida-entrega (PDPWTW, Pickup and Delivery Problem With Time Windows, G. Pankratz, 2005), han sido exitosamente resueltos con esta técnica