Anda di halaman 1dari 39

Modelos de Transporte

Jos Fidel Torres


2015

Parte 5
Metaheursticas

Introduccin (1)
Metaheurstica:
Una heurstica que posee un mecanismo para escapar de
ptimos locales.
Su estructura general es relativamente independiente del
problema.
Algunas de sus componentes dependen del problema.

Introduccin (2)
Algunas metaheurstica que trabajan con una solucin al tiempo:
Variable Neighborhood Search (VNS)
Guided Local Search (GLS)
Greedy Randomised Adaptive Procedure (GRASP)
Simulated Annealing (SA)
Tabu Search (TS).

Introduccin (3)
Otras metaheurstica trabajan con un conjunto de soluciones
(heursticas basadas en poblacin):
Genetic Algorithms (GA)
Memetic Algorithms (MA)
Ant Colony Optimization (ACO)
Path Relinking (PR)
Scatter Search (SS)
Particle Swarm Optimization (PSO).

Introduccin (4)
Todos los mtodos requieren:
Soluciones iniciales (muy tiles las heursticas constructivas).
Una vecindad (excepto GA puros y PSO).

Introduccin (5)
Un gran problema: intensificacin y diversificacin (tambin
llamados en la literatura GA explotacin y exploracin).
Intensificacin:
El algoritmo debe ser ms local cuando encuentra buenas
soluciones, para encontrar el ptimo local en esas regiones.
Se usa en la prctica una bsqueda local.
Diversificacin:
Se requiere buscar en otras regiones en caso de
estancamiento.
Ejemplos: saltos aleatorios, mutaciones, reinicios, cambio de
vecindades, modificacin de penalidad, etc.

Algoritmos Genticos (GA) (1)


GA tambin son usados en reconocimiento de patrones,
aprendizaje, etc.,(no solo en optimizacin).
Principios inspirados en la seleccin natural:
Un conjunto de ns soluciones (poblacin).
Cada individuo (o solucin) est codificado a atravs de una
cadena de smbolos (cromosoma).
Hay un indicador de adaptacin (fitness).
La regla de seleccin favorece los mejores individuos para la
reproduccin.
Un operador de mutacin (como perturbacin aleatoria de una
solucin) trae a veces a la poblacin sangre fresca.
En optimizacin, el fitness de una solucin es su costo.

Algoritmos Genticos (template) (2)


Generar la poblacin inicial (por ejemplo, 50 soluciones).
repetir
Seleccin: seleccionar aleatoriamente 2 padres, con un sesgo
que favorece a los mejores (los ms baratos).
Reproduccin: cruzar los padres para obtener soluciones hijas.
Mutacin: perturbar aleatoriamente los hijos (pequea
probabilidad).
Reemplazo: algunas parejas de padres son remplazadas por sus
hijos (preservar la mejor solucin)
hasta criterio de parada.

GA (ubicacin de facilidades en 9 sitios) (3)


1. Cromosoma binario para codificar la solucin.
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. Mutacin simple usando inversin 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), cclico

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 depsito (nodo 0).

Buenos cruces son difciles de encontrar para esta codificacin:


La capacidad del vehculo es violada por los hijos.
Se requieren procedimientos de reparacin.
Algunos proponen cromosomas sin delimitadores (Lacomme,
2001):
Cruces de TSP reutilizados (OX, LOX)
La evaluacin recorriendo de izquierda a derecha no es ptima.

GA (VRP y CARP) (7)

1. Cromosoma T = (a, b, c, d, e)

3. Particin ptima Costo = 141

2. Grafo auxiliar de todos los posibles recorridos para W = 9 y caminos ms cortos


Esta es la heurstica de Beasley, usada para evaluar los cromosomas

GA (ejemplos) (8)
Lacomme et.al (2001, 2004) y Prins (2004) disearon GA muy
efectivos para el VRP y el CARP.
Estos GAs usan procedimientos de bsqueda local para mejorar
soluciones hijas. Tales GAs son llamados algoritmos memticos.
GAs puros no son lo suficientemente efectivos en problemas de
enrutamiento de vehculos y son fcilmente superados por SA y
TS.

GRASP (1)
Greedy Randomized Adaptative Search Procedure: la heurstica
ms simple. En sntesis: una heurstica H glotona pero
aleatorizada (para producir buenas soluciones diversificadas) a la
cual se agrega un procedimiento de bsqueda local LS.
Algoritmo:
Mejor_costo := +
for conteo := 1 to numero_soluciones do
Genere una solucin s con H
Mejrela : s := LS(s)
If costo(s) < Mejor_costo then
Actualice la mejor solucin: Mejor_costo := costo(s); bs := s
endif
endfor

GRASP (2)
numero_soluciones es el nmero de soluciones que se quiere
explorar, por ejemplo 100.
La diferencia con una bsqueda local iterada a partir de soluciones
aleatorias es que las soluciones iniciales deben ser buenas.
Ejemplo: H = heurstica del vecino ms cercano o NNH (TSP). En
cada iteracin, si dmin es la distancia entre el ltimo nodo u del
recorrido y el nodo ms cercano aun no visitado: se puede
seleccionar aleatoriamente desde u un nodo ubicado a una
distancia en el intervalo [dmin, dmin + ], con = 0.1xdmin, 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 solucin es seleccionada aleatoriamente en la
vecindad. La solucin es aceptada, si su costo decrece (como en
bsqueda local). La solucin tambin puede ser aceptada si el
costo se incrementa, pero con una probabilidad que disminuye
con las iteraciones.
Costo

ptimo
local

ptimo
global

Simulated Annealing (2)


La probabilidad de aceptar una movida degradante depende de
la variacin del costo > 0 y de la temperatura .
Esa probabilidad es e- / .
Para un dado, la probabilidad decrece cuando la variacin del
costo > 0 incrementa.
La probabilidad e- / de aceptar una movida degradante
Probabilidad de
decrece cuando decrece .
aceptacin
1
Zona de > 0
Aceptacin
condicional

0.5

Zona de < 0
Aceptacin sin
condicin
- /, fijo

Incremento fuerte del


costo

Incremento dbil del


costo

Simulated Annealing (3)


Recomendaciones:
Solucin inicial aleatoria (una muy buena solucin es destruida).
Aun la peor solucin debe ser posible a la temperatura inicial ,
por ejemplo con probabilidad 0.5:
max = fmax fmin e- / = 0.5 = - max / ln(0.5)
debe decrecer lentamente: esquema de enfriamiento CS().
Por ejemplo CS() = k , con k = 0.9999.
En la prctica, se requieren 10000 100000 iteraciones.
Se para cuando < , una muy pequea temperatura final o
despus de un nmero de iteraciones sin mejoras.
La mejor solucin es normalmente la ltima.

Simulated Annealing (curvas) (4)


Costo
parar

Buena curva

parar

Muy alta temperatura


inicial
parar

Enfriamiento muy rpido


(baja temperatura inicial)

parar

Parada prematura
(baja temperatura
fnal)

Simulated Annealing (template) (5)


Calcular una solucin inicial s
:= temperatura inicial
ni := 0; ne := 0; bs := s
repeat
Seleccione aleatoriamente una solucin 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)

Diversificacin usando reannealing : recomenzar algunas


veces con una temperatura inicial ms pequea := 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 f(e o )
h* ho, e * e o
n 0

Escoger una solucion e1 E, en la vecindad de e o.


Calcular h1 f(e1)

h1 ho

0?

SI

)
T
Generar un numero aleatorio
x U(0,1)
Si x P, entonces
e o e1
ho h1
Calcular P exp(

NO

SI
e o e1
ho h1
Si ho h*, entonces h* ho, y e * e o

n n 1

SI

n N?

NO
n 0
T 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 mtodos de bsqueda
tabu y algoritmos memticos.
Algunos algoritmos SA son hoy en da muy efectivos en algunos
problemas de scheduling.

Simulated Annealing (ejemplo) (7)

Bsqueda tab
1.
2.
3.
4.

Parte de una solucin actual.


Inicia la lista tab.
Seleccin de una coleccin de soluciones vecinas (movidas) a
la solucin actual, obtencin del mejor vecino segn la
funcin 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 solucin 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 Aspiracin). Si es as, NO ACTUALIZA
LA LISTA TABU y coloca el mejor vecino como solucin actual.

Bsqueda tab (Para minimizacin)


Inicialice Lista tab L, Seleccione x0, Inicialice x*
Seleccione m1 la mejor movida de x0 ,
Calcule la aplicacin de m1 en x0 : x1
x0 = x 1
x* = x1
SI

f(x1) f(x*)?

SI

m1 L?

NO

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

Actualizacin de la Lista Tab


LISTA TABU INICIAL ORDENADA EN EL ORDEN DE ENTRADA
1

LA ULTIMA MOVIDA QUE ENTRA:


LISTA TABU FINAL ORDENADA EN EL ORDEN DE ENTRADA
1

Las movidas en bsqueda tab


Solucin actual:
1

10 11 12 13 14 15

Movidas en un problema de Logstica: Localizacin, Scheduling, Ruteo,


Configuracin:
-INTERCAMBIOS ENTRE DOS POSICIONES
-ESCOGER UNA Y COLOCARLA ENTRE OTRAS DOS
-INVERTIR UN SEGMENTO, ETC

Conceptos claves en Bsqueda Tab

Memoria a corto plazo : Lista tab actualizada por FIFO.


Objetivo: Evitar atrapamientos en ptimos locales.
Criterio de aspiracin: pasa por alto una movida tab si sta
movida provoca el mejor ptimo actual, en el lazo de retorno
a la izquierda.
Intensificacin: bsqueda local alrededor de la solucin actual
(movidas tab), en la fase principal.
Diversificacin: bsqueda por fuera de las restricciones de la
lista tab, en los dos lazos de retorno hacia la derecha.

Tabu Search (TS) (1)


Principio: una bsqueda local con una memoria F de soluciones ya
visitadas (lista tab, vaca desde el comienzo).
Iteracin: se mueve hacia la mejor solucin 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 prctica:
Uso de memoria a corto plazo: F conserva las m ms recientes
soluciones (m es llamado la tabu tenure o longitud de la lista tab).
Guardar movidas prohibidas en lugar de soluciones (tabu
record).
Parada: despus de nimax iteraciones (200 2000). La mejor
solucin en general no es la ltima visitada.

Tabu Search (template) (2)


Calcule una solucin inicial s; bs := s
Vace 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 ms 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 ms simple: rechazar cualquier solucin de costo =
costo(s).
Para un problema binario: si una variable binaria cambia de 0
a 1, se prohbe el retorno a 0.
Para el TSP con movidas 2-OPT: si se cruzan las aristas (x,u) y
(y,v), se prohben las movidas que recrean (x,u) y (y,v).
Ms general: se guardan (x,u) y (y,v) y K = costo(s). Se
descarta una nueva solucin 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 tamao de lista m = 7 a 10 puede ser suficiente para evitar
repeticiones. Algunas personas usan tamaos dependientes del
problema. Por ejemplo, m = n0.5.
Para actualizar F, se requiere un acceso rpido a los elementos
ms viejos y jvenes de F: una forma de hacerlo es a travs de
una cola F (una lista con acceso de tipo FIFO): la matriz tiene
acceso circular: primero = registro ms viejo, ltimo = el registro
ms jven.

Tabu Search (lista tab) (5)


0

F(1)

F(2)

primero

m+1

F(m)
ltimo

Colocar la cola en vaco:


primero := 1; ultimo := 0
Agregar un registro R:
ultimo := (ultimo mod m)+1; F(ultimo) := R
Borrar el registro ms viejo: primero := (primero mod m)+1

Tabu Search (lista tab) (6)


En la cola F, la bsqueda 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) = nmero de la iteracin de la bsqueda
tab. En la iteracin 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 condicin necesaria para
encontrar el ptimo global s*:
Sea el grafo H = (S,A) de movidas, con S el espacio solucin 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 solucin s, existe un camino
desde s hasta s*.
Esta condicin tambin debe cumplirse en SA: en ese caso, H es
una cadena de Markov.

Tabu Search (ejemplos) (8)


Algoritmos efectivos TS para VRP:
Osman (1993), Taillard (1993), Gendreau et al. (1994), Rego
and Roucairol (1996), Toth and Vigo (1998).
Para el CARP:
Hertz et al. (2000), Brandao and Eglese