Sexta clase

Anuncio
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...............
Descargar