METAHEURISTICAS (6ta clase) Irene Loiseau 2do Cuatrimestre 2016 A family of genetic algorithms for the pallet loading problem. Herbert, Dowsland, ANOR, 1996. • “Pallet loading” o “Two dimensional packing problem”. • El container y las piezas son rectangulares. En este caso las piezas son todas iguales. • Las piezas se acomodan paralelas a los bordes • Qué consideran una solución?. Una ubicación de las cajas en cualquier lugar del rectángulo aunque se superpongan. • Cómo representarla? Se considera al rectángulo total y a las cajas como tableros de ajedrez, y se permite la ubicación de las cajas sólo en valores enteros. Las coordenadas son múltiplos enteros de los anchos y largos de las cajas. Una solución factible se define por un conjunto de posiciones ocupadas. Se representa por una matriz binaria que indica si en la posición i hay una caja o no. Por cada coordenada vertical hay dos filas en la matriz, una que indica si hay una caja “horizontal” y otra “vertical” • Cómo hacer crossover y mutación? Para hacer crossover se “corta” la matriz entre dos posiciones y se toma una parte de un padre y otra del otro. La mutación es la clásica, cambiar un bit con una probabilidad baja. • Función objetivo Si k es una solución se toma f(k) = w1 n(k) – w2 m(k) n(k): nro de cajas ubicadas, m(k) mide la superposición, wi, pesos. Se usaron varias versiones de la función m(k): nro de cajas que se superponen, nro de pares de cajas que se superponen, etc. Otra función: f(k) = a n(k) – 2 q(k) donde a es el área de cada caja y q(k) es el área con overlap. Se toman en cuenta todas las funciones para elegir los individuos a cruzar. Con estas funciones los individuos son elegidos en proporción a su valor. O sea k es elegido con probabilidad P(k) = fi(k) / ∑j fi(k) • Se usó también otra alternativa para seleccionar basada en pensar el problema como un problema multiobjetivo y usar el criterio de optimalidad de Pareto. • Se toman en cuenta tres criterios. I domina a j si es mejor en al menos un criterio y no es peor en ningún otro. • A cada individuo se le asigna un valor 2 por cada individuo que domina y 1 por cada individuo que no domina pero por el cual tampoco es dominado. • De esta forma se define una función de rango r(k) • La probabilidad de elegir a k está dada por P(k) = r(k) / ∑j r(j) = 2 r(k)/ N(N-1) • Cómo generar la primera población? Se eligió no formarla con buenas soluciones iniciales. En cambio se genera asignando a cada bit de cada solución valor 1 con probabilidad opt/n donde opt es un valor aproximado del número de cajas en una solución óptima y n es el nro de bits de cada individuo. • Reparación de soluciones En la solución final puede haber soluciones no factibles o sea con cajas superpuestas. En lugar de hacer una reparación simple descartando cajas que se superponen, se usa un operador de reparación basado en un modelo teórico de grafos. Se usa un modelo donde las posiciones de las cajas se representan en los nodos y se pone un eje si las posiciones de las cajas no se superponen. Se busca la clique máxima. (en este caso se pudo resolver el problema de clique porque hay pocas superposiciones). • Parámetros Genetic and hybrid algorithms for graph coloring C.Fleurent,J. Ferland, Annals of Operations Research, 63,1996 • Los algoritmos genéticos “puros” a veces no funcionan bien para problemas de optimización combinatoria. • Esquemas híbridos • Se quiere colorear un grafo con k colores. • Individuos: permutaciones de los nodos. Se evalúan usando una modificación de algoritmo de coloreo secuencial. (cuándo no hay más colores posibles se usa el que ha sido menos usado en los vecinos) • Para elegir los padres que se van a cruzar, se ordenas las soluciones por sus valores de forma que las mejores quedan al principio. • Se genera un nro u al azar u ∈ [0,N1/r), con r ∈ [1,2] • La solución que está en la posición ur es elegida. (es fácil ver que la probabilidad de elegir las mejores soluciones crece con el valor de r) • En este caso se usó como valor inicial r =2 y periódicamente se lo modificó poniendo r = 1 + D, con D ∈ [0,1] es una medida de la diversidad de la población que definiremos más adelante. Crossover: Se genera al azar un vector binario str. Se copian los elementos del primer padre correspondientes a las posiciones que tienen str(i) = 1. El resto de los nodos se ponen de acuerdo al orden en que están en el segundo padre. padre1 padre2 str Primer paso hijo 1 2 2 5 0 2 0 8 3 8 4 5 6 7 8 1 9 3 7 4 1 0 1 1 1 3 - 5 6 7 3 1 5 6 7 9 6 0 1 - 9 4 9 Mutación: se eligen dos posiciones al azar. Se cambian los elementos entre esas dos posiciones. 283156749 Se eligen al azar la 3era y la 6ta posición. 286153 749 Otras propuestas de representación y crossover. Si el conjunto de nodos se parte en k subconjuntos C1, C2……. Ck , se arma un string donde s(i) = j si i ε Cj Varias propuestas de crossover: i) ii) iii) Elegir un punto al azar y cambiar las dos partes de los padres. Elegir dos puntos al azar y cambiar la parte entre esos dos puntos. Determinar un vector binario al azar y cambiar los elementos de los dos padres correspondientes a los bits iguales a 1. Función objetivo: F(C1, C2……. Ck) = ∑j E(Cj) Las soluciones se ordenan de acuerdo a el valor de un rango en el cual las mejores soluciones se ponen primero. Se elige al azar dando mayor probabilidad de ser elegidas a las soluciones mejores. Diversidad de una población P: ηij es el nro de individuos de P en los cuales el nodo i tiene color j Di= (- ∑j, ηij≠0 (ηij / P ) log (ηij / P ))/ log k D = (∑i, Di) / V D es un valor normalizado en el intervalo [0,1] que indica la diversidad de la población. Una población con todos sus individuos idénticos tiene entropía D igual a 0. D se usa para decidir criterios de parada y elección de padres a cruzar Algoritmo Híbrido: Los autores proponen una combinación de este algoritmo genético con búsqueda local o con el algoritmo TABUCOL (Tabu search), usados como mutación. “Design of Stacked Self-healing rings using a genetic algorithm”, Armony, Klincewicz, Luss, Rosenwein, Journal of Heuristics, 2000. • Redes de telecomunicaciones • Qué es un self healing ring (SHR)?. En este caso se usan anillos unidireccionales. • Add-drop-multiplexers • Stacked rings (paralelos, concéntricos) • Hub que pertenece a todos los anillos. En este caso se asume que: • Cada nodo puede ser servido por muchos SHR´s con un ADM para cada uno. Hay un costo por colocar cada ADM. • Una demanda dada entre un par de nodos i y j debe seguir una única ruta en los anillos. • El hub puede ser usado para cambiar tráfico entre los anillos. Hay un costo por cada unidad de tráfico que cambia de anillo. • Hay un límite a la cantidad de ADM que pueden estar conectados a un SHR. • La capacidad de cada SHR es limitada. El problema es entonces: Determinar a que anillos tiene que ser conectado cada nodo y como rutear las demandas a costo mínimo. • Se puede formular matemáticamente como un problema de programación lineal entera. Notación: • • • • h es el costo de cada ADM t es el costo por unidad de demanda que pasa por el hub. dij es la demanda entre los nodos i y j b es la cantidad máxima de nodos que pueden tener un ADM en el mismo anillo. • c es la capacidad de cada anillo, o sea el tráfico máximo que puede pasar por un anillo. • xik, variable binaria que vale 1 si se coloca un ADM en el nodo i en el anillo k. • yijkl, variable binaria que toma valor 1 si la demanda dij se rutea entre el nodo i en el anillo k y el nodo j en el anillo l. El problema puede entonces formularse mediante el siguiente modelo: Min t Σi Σi=i+1 Σk Σl dij yijkl + h Σi Σk xik st. Σk xik ≥ 1 ΣI xik ≤ b Σk Σl yijkl = 1 i=1,…N-1 k=1,…R 1≤i<j≤N ΣiΣj=i+1 (dij yijkk + (Σl dij (yijkl + yijlk) ) ≤ c k=1…R yijkl ≤ xik 1 ≤ i < j ≤ N, k, l =1,…R yijkl ≤ xjl 1 ≤ i < j ≤ N, k, l =1,…R yijkl, xik ∈{0,1} 1 ≤ i < j ≤ N, k, l =1,…R Algoritmo Genético • N número de nodos, R número de anillos • Representación: Cromosomas binarios de longitud (N-1)R, indicando si para el nodo i hay un ADM en el anillo k. • A partir de allí se usa una heurística para determinar como se rutean las demandas. • Población inicial: se genera parte al azar y parte usando una heurística. • Función objetivo: costos + penalidad por no poder rutear todas las demandas. • Nueva generación: se elige un padre “bueno” de acuerdo al valor de la función de evaluación y otro al azar con distribución uniforme. • Cruzamiento clásico, • Mutación • Puede requerir un procedimiento de “reparación”. • Criterio de parada. Heurística para el ruteo de demandas 1. 2. 3. 4. 5. 6. 7. 8. Basada en los valores de los xik determinar para cada dij todas las posibles rutas. Si una demanda tiene una sola ruta posible asignarla a ella. Actualizar para cada demanda no asignada el conjunto de rutas factibles. Si alguna queda con una sola posibilidad volver a 2. Asignar en primer lugar a un sólo anillo, las demandas con menores posibilidades, y dentro de ellas la que tiene mayor dij Actualizar los dij. Si corresponde volver a 2, sino a 3. Asignar demandas a rutas en dos anillos. Actualizar los dij. Ir a 6. Si no hay demandas no asignadas parar. Sino tendremos una solución nofactible: asignar las demandas no asignadas lo mejor posible (en orden decreciente de los dij y tomando en cuenta las que poducen “menor infactibilidad” ) Heurísticas iniciales; Se usan dos heurísticas basadas en ideas de GRASP (describimos una de ellas) 1. 2. Heurística para generar soluciones iniciales donde cada nodo está en un sólo anillo. Trata de crear R subconjuntos de nodos combinando paso a paso varios grupos de notos. Ordenar las demandas dij en orden decreciente. La lista de candidatos es una lista que contiene las demandas no procesadas de mayor valor, s es un paramétro del algoritmo, el tamaño de la lista de candidatos es min{s,q}. Elegir al azar dij de la lista de candidatos: i) si ni i ni j están en ningún grupo abrir un grupo nuevo ii) si uno de los nodos está en un grupo, agregar el otro nodo al grupo si no se violan las restricciones. Sino ponerlo en un grupo nuevo. 3. iii) Si cada nodo pertenece a un grupo diferente, combinar los dos grupos en uno si no se viola ninguna restricción. Sino dejar los grupos como están. Si quedan más de R grupos, recorrer todos los pares en orden arbitrario. Si es posible combinar los dos grupos en uno sólo. Repetir hasta que haya R grupos o menos o hasta que no se encuentren soluciones factibles. Si quedan más de R grupos se hacen combinaciones no factibles, empezando por combinar los dos grupos más pequeños. Si la solución viola la cantidad de nodos se repara. Para las violación de cantidad de tráfico se usa la función de penalidad. Resultados: • Experimentos para fijar parámetros • Se comparó con CPLEX para problemas de 10 a 15 nodos. Soluciones casi óptimas a un tiempo muchísimo menor- En esta clase vimos también el siguiente trabajo: “Genetic algorithm based approach for the integrated airline crew-pairing and rostering problem”, N. Souai,J.Teghem, European Journal of Operational Research, 199, 2009 Ver paper y presentación aparte. Ventajas y desventajas de los Algoritmos Genéticos Inicialmente GA se usaba para problemas típicos de Inteligencia Artificial (reconocimiento de patrones, machine learning, etc.) Aplicaciones exitosas a problemas de Optimización Problema: como hacer la representación. Ventajas...............