Modeloss de Transporte Modelo José Fidel Torres 2015
Parte 5 Metaheurísticas
Introducción (1) Metaheurística: Una heurística que posee un mecanismo para escapar de óptimos locales. Su estructura general es relativamente independiente del problema. Algunas de sus componentes dependen del problema. •
•
•
Introducción (2) Algunas metaheurística que trabajan con una solución al tiempo: Variable Neighborhood Search (VNS) Guided Local Search (GLS) Greedy Randomised Adaptive Procedure (GRASP) Simulated Annealing (SA) Tabu Search (TS). •
•
•
•
•
Introducción (3) Otras metaheurística trabajan con un conjunto de soluciones (heurísticas basadas en población): Genetic Algorithms (GA) Memetic Algorithms (MA) Ant Colony Optimization (ACO) Path Relinking (PR) Scatter Search (SS) Particle Swarm Optimization (PSO). •
•
•
•
•
•
Introducción (4) Todos los métodos requieren: Soluciones iniciales (muy útiles las heurísticas constructivas). Una vecindad (excepto GA puros y PSO). •
•
Introducción (5) Un gran problema: intensificación y diversificación (también llamados en la literatura GA explotación y exploración). Intensificación: •
El algoritmo debe ser más “local” cuando encuentra buenas
soluciones, para encontrar el óptimo local en esas regiones. Se usa en la práctica una búsqueda local. Diversificación: Se requiere buscar en otras regiones en caso de estancamiento. Ejemplos: saltos aleatorios, mutaciones, reinicios, cambio de vecindades, modificación de penalidad, etc. •
•
•
Algoritmos Genéticos (GA) (1) GA también son usados en reconocimiento de patrones, aprendizaje, etc.,(no solo en optimización). Principios inspirados en la selección natural: Un conjunto de ns soluciones (población). Cada individuo (o solución) está codificado a através de una cadena de símbolos (cromosoma). Hay un indicador de adaptación (” fitness”). La regla de selección favorece los mejores individuos para la reproducción. Un operador de mutación (como perturbación aleatoria de una solución) trae a veces a la población ”sangre fresca”. En optimización, el ”fitness” de una solución es su costo. •
•
•
•
•
Algoritmos Genéticos (template) (2) Generar la población inicial (por ejemplo, 50 soluciones). repetir Selección: seleccionar aleatoriamente 2 padres, con un sesgo
que favorece a los mejores (los más baratos). Reproducción: cruzar los padres para obtener soluciones hijas. Mutación: perturbar aleatoriamente los hijos (pequeña probabilidad). Reemplazo: algunas parejas de padres son remplazadas por sus hijos (preservar la mejor solución) hasta criterio de parada.
GA (ubicación de facilidades en 9 sitios) (3) 1. Cromosoma binario para codificar la solución. Por ejemplo, cadena binaria de 9 bits (bit i = 1 sitio i seleccionado). 2. Cruce simple por un punto. Padre 1 : Padre 2 : Hijo 1 : Hijo 2 :
Comienzo Padre 1 Fin Padre 2 Comienzo Padre 2 Fin Padre 1
3. Mutación simple usando inversión de un bit. Hijo 1 : Hijo 1 mutado :
GA (el caso TSP) (4) El cruce por un punto puede crear duplicados: Padre 1 : Padre 2 : Hijo 1 :
¡1, 9, 2 duplicados!
Cruce adaptado a permutaciones (sin duplicaciones): La parte izquierda del padre 1 se copia. El padre 2 es supervisado completamente de izquierda a derecha. El nodo es completado con los nodos que faltan. •
•
•
GA (el caso TSP) (5) 1. Linear Order Crossover LOX [P1(a), P1(b)] movido a Hijo 1 [P2(a), P2(b)] movido a Hijo 2 Hijo 1 Hijo 2
: :
Completado recorriendo P2 Completado recorriendo P1
2. Order Crossover (OX), cíclico
Hijo 1
:
[P1(a), P1(b)] movido a Hijo 1 [P2(a), P2(b)] movido a Hijo 2 Recorrido circular de P2 desde b
Hijo 2
:
Recorrido circular de P1 desde b
GA (VRP y CARP) (6) Delimitadores de recorrido pueden agregarse (barras dobles). Pueden usarse copias del depósito (nodo 0).
Buenos cruces son difíciles de encontrar para esta codificación: La capacidad del vehículo es violada por los hijos. Se requieren procedimientos de reparación. Algunos proponen cromosomas sin delimitadores (Lacomme, 2001): Cruces de TSP reutilizados (OX, LOX) La evaluación recorriendo de izquierda a derecha no es óptima. •
•
•
•
GA (VRP y CARP) (7)
1. Cromosoma T = (a, b, c, d, e)
3. Partición óptima Costo = 141
2. Grafo auxiliar de todos los posibles recorridos para W = 9 y caminos más cortos Esta es la heurística de Beasley, usada para evaluar los cromosomas
GA (ejemplos) (8) Lacomme et.al (2001, 2004) y Prins (2004) diseñaron GA muy efectivos para el VRP y el CARP. Estos GAs usan procedimientos de búsqueda local para mejorar soluciones hijas. Tales GAs son llamados algoritmos meméticos. GAs puros no son lo suficientemente efectivos en problemas de enrutamiento de vehículos y son fácilmente superados por SA y TS.
GRASP (1) Greedy Randomized Adaptative Search Procedure: la heurística más simple. En síntesis: una heurística H glotona pero aleatorizada (para producir buenas soluciones diversificadas) a la cual se agrega un procedimiento de búsqueda local LS. Algoritmo: Mejor_costo := + for conteo := 1 to numero_soluciones do
Genere una solución s con H Mejórela : s := LS(s) If costo(s) < Mejor_costo then Actualice la mejor solución: Mejor_costo := costo(s); bs := s endif endfor
GRASP (2) numero_soluciones es el número de soluciones que se quiere
explorar, por ejemplo 100. La diferencia con una búsqueda local iterada a partir de soluciones aleatorias es que las soluciones iniciales deben ser buenas. Ejemplo: H = heurística del vecino más cercano o NNH (TSP). En cada iteración, si d min es la distancia entre el último nodo u del recorrido y el nodo más cercano aun no visitado: se puede seleccionar aleatoriamente desde u un nodo ubicado a una distancia en el intervalo [ d min, d min + ], con = 0.1xd min, por ejemplo. Las soluciones de H son un poco degradadas comparadas con NNH, pero se pueden producir muchas soluciones.
Simulated Annealing (SA) (1) Principio: una solución es seleccionada aleatoriamente en la vecindad. La solución es aceptada, si su costo decrece (como en búsqueda local). La solución también puede ser aceptada si el costo se incrementa, pero con una probabilidad que disminuye con las iteraciones. Costo
Óptimo
Óptimo
Simulated Annealing (2) La probabilidad de aceptar una movida degradante depende de la variación del costo > 0 y de la temperatura . Esa probabilidad es e- / . Para un dado, la probabilidad decrece cuando la variación del costo > 0 incrementa. La probabilidad e- / de aceptar una movida degradante Probabilidad de decrece cuando decrece . •
•
•
•
aceptación 1
Zona de > 0 Aceptación condicional
0.5
Zona de < 0 Aceptación sin condición - /, fijo
Incremento fuerte del
Incremento débil del
Simulated Annealing (3) Recomendaciones: Solución inicial aleatoria (una muy buena solución es destruida). Aun la peor solución debe ser posible a la temperatura inicial , por ejemplo con probabilidad 0.5: max = f max – f min e- / = 0.5 = - max / ln(0.5) debe decrecer lentamente: esquema de enfriamiento CS(). Por ejemplo CS() = k , con k = 0.9999. En la práctica, se requieren 10000 – 100000 iteraciones. Se para cuando < , una muy pequeña temperatura final o después de un número de iteraciones sin mejoras. La mejor solución es normalmente la última. •
•
•
•
•
•
Simulated Annealing (curvas) (4) Costo parar
Buena curva
parar
Muy alta temperatura inicial parar
Enfriamiento muy rápido (baja temperatura inicial)
parar
Parada prematura (baja temperatura fnal)
Simulated Annealing (template) (5) Calcular una solución inicial s θ := temperatura inicial θ° ni := 0; ne := 0; bs := s repeat
Seleccione aleatoriamente una solución s' in N(s), inc (ni) y calcule Δ if Δ < 0 or e
-Δ/θ
< random then
s := s' if f(s) < f(bs) then bs := s; ne := 0 else inc(ne) endif endif θ := CS(θ) until (θ < ε) or (ni = nimax) or (ne = nemax)
Diversificación usando “reannealing” : recomenzar algunas veces con una temperatura inicial más pequeña θ° := 0.5×θ°.
Simulated Annealing Pr oblema: Min f(e) s. a. e E Escoger una solucion e o
E
Escoger la temperatura inicial T, el numero de iteraciones N en cada temperatura, la temperatura final TF. ho h*
ho, n
f(e o) e* 0
Escoger una solucion e1 Calcular h f(e ) h1
ho
0?
SI
eo
E, en la vecindad de e o.
Calcular P
NO
exp(
) T Generar un numero aleatorio x U(01 , ) Si x P, entonces eo e1
SI eo ho
e1 h1
Si ho h*, entonces h*
ho, y e *
n
eo
n
1
SI n
N?
NO n T
0 T
NO T
TF ?
SI
PARAR
Simulated Annealing (ejemplo) (6) Osman (1993) diseñó un algoritmo SA efectivo para el VRP, usando la movida k-interchange: dos recorridos con hasta k clientes cada uno pueden ser intercambiadas. Este algoritmo SA ha sido superado por métodos de búsqueda tabu y algoritmos meméticos. Algunos algoritmos SA son hoy en día muy efectivos en algunos problemas de “scheduling ”.
Simulated Annealing (ejemplo) (7)
Búsqueda tabú 1. 2. 3. 4.
Parte de una solución actual. Inicia la lista tabú. Selección de una colección de soluciones vecinas (movidas) a la solución actual, obtención del mejor vecino según la función objetiva. Si el mejor vecino corresponde a una movida que no está en la lista tabú, la acepta, actualiza la lista tabú, y coloca el mejor vecino detectado como solución actual. Repite el paso 3. Si el mejor vecino corresponde a una movida en la lista tabú, verifica si ése mejor vecino es mejor que el mejor obtenido hasta ahora (Criterio de Aspiración). Si es así, NO ACTUALIZA LA LISTA TABU y coloca el mejor vecino como solución actual.
Búsqueda tabú (Para minimización) Inicialice Lista tabú L, Seleccione x0, Inicialice x* Seleccione m1 la mejor movida de x 0 , Calcule la aplicación de m1 en x0 : x1 x0= x1 x* = x1 SI
SI ¿f(x1) f(x*)?
NO ¿m1 L?
x0= x1, Actualiza L Actualiza x*
NO Seleccione m2 la mejor movida de x0 que no pertenezca a L
Aplique m2 en x0 : x2 , x0= x2, Actualiza L
Actualización de la Lista Tabú LISTA TABU INICIAL ORDENADA EN EL ORDEN DE ENTRADA 1
2
3
4
5
6
7
8
9
LA ULTIMA MOVIDA QUE ENTRA: LISTA TABU FINAL ORDENADA EN EL ORDEN DE ENTRADA 1
2
3
4
5
6
7
8
9
Las movidas en búsqueda tabú Solución actual: 1
2
3
4
5
6
7
8
9
10 11 12 13 14 15
Movidas en un problema de Logística: Localización, Scheduling, Ruteo, Configuración: -INTERCAMBIOS ENTRE DOS POSICIONES -ESCOGER UNA Y COLOCARLA ENTRE OTRAS DOS -INVERTIR UN SEGMENTO, ETC
Conceptos claves en Búsqueda Tabú •
•
•
•
Memoria a corto plazo : Lista tabú actualizada por FIFO. Objetivo: Evitar atrapamientos en óptimos locales. Criterio de aspiración: pasa por alto una movida tabú si ésta movida provoca el mejor óptimo actual, en el lazo de retorno a la izquierda. Intensificación: búsqueda local alrededor de la solución actual (movidas tabú), en la fase principal. Diversificación: búsqueda por fuera de las restricciones de la lista tabú, en los dos lazos de retorno hacia la derecha.
Tabu Search (TS) (1) Principio: una búsqueda local con una memoria F de soluciones ya visitadas (lista tabú, vacía desde el comienzo). Iteración: se mueve hacia la mejor solución s’ en N(s)\ F, aun si el costo se incrementa. Para evitar repetir soluciones, s’ se agrega a F. La prueba s’ F es muy costosa, si F contiene soluciones completas o es muy grande. En la práctica: Uso de memoria a corto plazo: F conserva las m más recientes soluciones (m es llamado la “tabu tenure” o longitud de la lista tabú). Guardar movidas prohibidas en lugar de soluciones (“tabu record”). Parada: después de nimax iteraciones (200 – 2000). La mejor solución en general no es la última visitada. •
•
Tabu Search (template) (2) Calcule una solución inicial s; bs := s Vacíe la lista tabú F for ni := 1 to nimax do
determine la mejor movida no-tabú ( s → s') ( i.e., no en F) Sin embargo, acepte una movida tabú, si costo(s’) < costo(bs) if |F| = μ then
Elimine la más antigua movida prohibida de F endif Agregue a F la movida (s’ → s) para evitar repeticiones a s
s := s' if costo(s) < costo(bs) then bs := s endif endfor
Tabu Search (atributos de las movidas) (3) Nos movemos de s a s’ y no queremos repetir s.
La forma más simple: rechazar cualquier solución de costo = costo(s). Para un problema binario: si una variable binaria cambia de 0 a 1, se prohíbe el retorno a 0. Para el TSP con movidas 2-OPT: si se cruzan las aristas (x,u) y (y,v), se prohíben las movidas que recrean (x,u) y (y,v). Más general: se guardan (x,u) y (y,v) y K = costo(s). Se descarta una nueva solución s’ que usa estas aristas excepto si •
•
•
•
costo(s’) ≠ K.
Nota: en todos los casos, se acepta s
s’ si costo(s’) < costo(bs).
Tabu Search (lista tabú) (4) Un tamaño de lista m = 7 a 10 puede ser suficiente para evitar repeticiones. Algunas personas usan tamaños dependientes del problema. Por ejemplo, m = n0.5. Para actualizar F, se requiere un acceso rápido a los elementos más viejos y jóvenes de F: una forma de hacerlo es a través de una cola F (una lista con acceso de tipo FIFO): la matriz tiene acceso circular: primero = registro más viejo, último = el registro más jóven.
Tabu Search (lista tabú) (5) 0
1
2
F(1)
F(2)
primero
…
m F(m)
m+1
último
Colocar la cola en vacío: primero := 1; ultimo := 0 Agregar un registro R: ultimo := (ultimo mod m)+1; F(ultimo) := R Borrar el registro más viejo: primero := (primero mod m)+1
Tabu Search (lista tabú) (6) En la cola F, la búsqueda de un registro se realiza en O( m). En movidas para VRP, se puede usar una matriz M: Ejemplo: parejas de intercambios de clientes (i,j) en VRP.
Si la pareja (i,j) nunca ha sido usada en alguna movida. M(i,j) = 0. De lo contrario, M(i,j) = número de la iteración de la búsqueda tabú. En la iteración k, el intercambio entre i y j es tabú si M(i,j) >0 y k – M(i,j) m.
Tabu Search (conectividad) (7) Propiedad de conectividad: es una condición necesaria para encontrar el óptimo global s*: Sea el grafo H = (S,A) de movidas, con S el espacio solución y A el conjunto de arcos que representa las movidas entre soluciones. H debe ser fuertemente conexo, es decir, para cada par de soluciones i y j en S , existe un camino de i a j (secuencia de movidas en A). Es decir, comenzando desde una solución s, existe un camino desde s hasta s*. Esta condición también debe cumplirse en SA: en ese caso, H es una cadena de Markov. •
•
•