Simulated Annealing
Rafael FernándezFernando García
Simulated Annealing
• Fundamento teórico.– Aplicación (Dial-A-Ride)
• Variantes de SA.– TA (Threshold accepting)– GDA (Great deluge algorithm)– RRT (Record-to-Record Travel)– Aplicacion. (TSP)
• Concluciones.
Fundamento Teórico
• Definir vecindad.
• Estrategia de exploración en la vecindad.
• Estrategia de enfriado.
• Condición de parada.
Fundamento Teórico
• Definir vecindad: Una estructura de vecindad es una función :2, el cual define para cada S, un conjunto (S) de soluciones llamadas “vecinas” de S. El conjunto (S) se llama “vecindad” de S y cada elemento S´ (S) es una solución “vecina” de S.
Fundamento Teórico
• Estrategia de exploración en la vecindad.
Para cierto tSeleccionar aleatoriamente una sol. j en vecindad(i).Sea Δ = f(j) – f(i)Si Δ > 0 entonces i = jSino generar aleatoriamente q U(0,1)
Si q < exp(Δ/t) entonces i = j Sino generar aleatoriamente q U(0,1)
Si q < exp(Δ/t) entonces i = j
Fundamento Teórico
P = exp(x/t)
Fundamento Teórico
Estrategia de enfriado : – Se elije una temperatura inicial (To). – Función de enfriamiento g(t) (actualización: de t) – Función de equilibrio.
Fundamento Teórico
• Condiciones de parada.– Temperatura mínima del sistema.– Cantidad de iteraciones.– No se obtiene una solución mejor después de
varias iteraciones.
Fundamento Teórico
Repetir
Repetir (para cierto t)
Hasta llegar a equilibrio.
Actualizo la temperatura (t = g(t)).
Hasta condición de parada.
Selecciona aleatoriamente una sol. j en vecindad(i). Sea Δ = f(j) – f(i) Si Δ > 0 entonces i = j Sino generar aleatoriamente q U(0,1)
Si q < exp(Δ/t) entonces i = j
Simulated Annealing
• Fundamento teórico.– Aplicación (Dial-A-Ride)
• Variantes de SA.– TA (Threshold accepting)– GDA (Great deluge algorithm)– RRT (Record-to-Record Travel)– Aplicacion. (TSP)
• Concluciones.
Aplicación SADial-A-Ride
• Definición del probema DaR.– Conjunto de nodos r R con distancias dij entre los
nodos i,j = 1,...,r
– Conjunto de clientes n N tal para cada cliente k (k=1,...,n) definimos:
• El nodo ik “pick-up” y 1k el tiempo mas temprano de “pick-up”.
• El nodo jk de entrega y 2k el tiempo mas tardío de entrega.
• Opcionalmente k numero de pasajeros.
– Flota de servicio M de m vehículos con capacidad qL y nodo de deposito iL (L= 1,...,m).
Aplicación SADial-A-Ride
• Función objetivo:– F(a maximizar) = calidad de servicio medido
por el promedio de la calidad de servicio aceptado por los clientes.
• Que es la calidad de servicio:– Una medida razonable de calidad de servicio
para el cliente k es la relación entre la suma del tiempo de espera y viaje entre el tiempo de viaje teórico desde el nodo i hasta el j.
Aplicación SADial-A-Ride
• Ejemplo:
• Cliente K solicita pedido a las 8hs (1k =8)
• El vehículo m recoge la carga a las 13hs (ik=13) y la deja a las 16hs (jk=16).
• El tiempo teórico de ir del nodo i a j es de 2 hs (ik,jk=2)
• losk= ( jk - 1k ) / ik,jk = (16-8) / 2 = 4
Aplicación SADial-A-Ride
• Rango de los losk:
1 <= losk <= GLOS k = 1,...,n
• GLOS es un cota superior que representa un nivel de calidad mínima garantizada a los clientes.
• Finalmente podemos expresar nuestra función objetivo como :
h
kklosh
LOS1
1
Aplicación SADial-A-Ride
• Restricciones a cumplir en el modelo.– Nodo de “pick-up” ik debe preceder al de entrega jk para
cada cliente k.
– Cliente k es aceptado si hay un vehículo l que permite losk <= GLOS.
– Para un vehículo l los tiempos ik e jk cumplen:
• 1k <= ik <= jk - ik,jk <= 2k - ik,jk
– La capacidad de un vehículo l siempre es satisfecha
– Solo se considera el tiempo de servicio durante 1 día.
Aplicación SADial-A-Ride
Al llegar una nueva llamada k:A) Asigno la llamada al mejor vehículo (fase de
asignación)
B) la nueva ruta de ese vehículo es seleccionada (fase de ruteo)
Dial-A-Ridei = solucion aleatoria
Repetir
Repetir (para cierto t)Selecciona aleatoriamente una sol. j en vecindad(i).
Sea Δ = f(j) – f(i) Si Δ < 0 entonces i = j Sino generar aleatoriamente q U(0,1)
Si q < exp(Δ/t) entonces i = j
Hasta llegar a equilibrioActualizo la temperatura (t = g(t)).
Hasta condición de parada.
j = Cambio pareja de nodos de i
For h = 1 to 10
endfort = 0.95*t
=TRUE ; l=i;
Si f(j) < f(l) entonces l=j
Si Δ < 0 entonces i = j; =FALSE
Si q < exp(-Δ/t) entonces i = j ; =FALSE
Hasta
i = mejor solucion para el cliente (k-1)
h
kk
jh
jf los1
)(1
)(
h
kk
ih
if los1
)(1
)(
Simulated Annealing
• Fundamento teórico.– Aplicación (Dial-A-Ride)
• Variantes de SA.– TA (Threshold accepting)– GDA (Great deluge algorithm)– RRT (Record-to-Record Travel)– Aplicacion. (TSP)
• Concluciones.
Variantes de Simulated Annealing
• Variantes de S.A.
– TA (Threshold accepting)
– GDA (Great deluge algorithm)
– RRT (Record-to-Record Travel)
Threshold accepting
• Estrategia de exploración en la vecindad.
Para cierto threshold T
Seleccionar aleatoriamente una sol. j en vecindad(i).Sea Δ = f(j) – f(i)Si Δ > -T entonces i = j
Threshold accepting
• Acepta nuevas soluciones que no son mucho peores que la vieja solución.
• No se precisa temperatura inicial ni esquema de enfriamiento.
• Solo utiliza un parámetro inicial Threshold.
Threshold accepting
Elijo solución inicial (i) y threshold inicial (T).
Repetir
Repetir
Hasta “equilibrio”
disminuyo T
Hasta condicion de parada.
Seleccionar aleatoriamente una sol. j En vecindad(i). Sea Δ = f(j) – f(i) Si Δ > -T entonces i = j
Variantes de Simulated Annealing
• Variantes de S.A.
– TA (Threshold accepting)
– GDA (Great deluge algorithm)
– RRT (Record-to-Record Travel)
Great Delugue Algorithm
• Estrategia de exploración en la vecindad. Para cierto nivel_de_agua
Seleccionar aleatoriamente una sol. j en vecindad(i).Si f(j) > nivel_de_agua entonces
i = j nivel_de_agua := nivel_de_agua + velocidad_lluvia
Great Delugue Algorithm
• Solo se precisa determinar el parámetro de velocidad_lluvia.
• Fácil de implementar.
• Sólo acepta la nueva solución si se encuentra sobre el nivel_del_agua.
Great Delugue Algorithm
Elijo solución inicial (i)
Elijo velocidad_lluvia (v_l) > 0 y nivel_de_agua > 0
Repetir
Repetir (para cierto nivel_de_agua)
Hasta llegar a equilibrio
Hasta condición de parada.
Seleccionar aleatoriamente una sol. j en vecindad(i).Si f(j) > nivel_de_agua entonces
i = jnivel_de_agua := nivel_de_agua +v_l
Variantes de Simulated Annealing
• Variantes de S.A.
– TA (Threshold accepting)
– GDA (Great deluge algorithm)
– RRT (Record-to-Record Travel)
Record-to-Record Travel (RRT)
• Estrategia de exploración en la vecindad.
record = mejor solución
Seleccionar aleatoriamente una sol. j En vecindad(i).Si f(j) > (record – desviación) entonces
i = jSi f(j) > record entonces record = f(j)
Record-to-Record Travel (RRT)
• Solo se precisa determinar el parámetro de desviación.
• Fácil de implementar.
• Recuerda la mejor solución (record) en todo momento.
• Sólo acepta la nueva solución si está por encima de (record – desviación).
Record-to-Record Travel (RRT)
Elijo solución inicial (i), elijo desviación > 0.
Seteo la mejor solución (record = i).
RepetirRepetir
Hasta llegar a equilibrio.
Hasta condición de parada.
Seleccionar aleatoriamente una sol. j en vecindad(i).Si f(j) > (record - desviación) entonces
i = jSi f(j) > record entonces
record = f(j)
Aplicaciones
• Grotschel´s 442 ciudades (TSP Euclidiano)
• Problema: Dada las coordenadas de N ciudades, busco un recorrido que visite todas las ciudades minimizando el costo.
Aplicaciones
• ¿Como modelar el problema?
5 4
2
1 3
(1, 5, 4, 3, 2)
Aplicaciones
• ¿Como defino una vecindad?
5 4
2
1 3LIN-2-OPT
• Elijo i, j C, i < j
• Elimino las aristas { ((i),(i+1)), ((j), (j+1)) }
• Inserto las aristas { ((i), (j)), ((i+1), (j+1)) }
0 (1, 5, 4, 3, 2) Corrida: i = 1 j = 4 1 (1, 3, 4, 5, 2)
Ejemplo (aplicado a TA)
Elijo solución inicial (i)
Threshold inicial (T).
Repetir
Repetir
Seleccionar aleatoriamente una sol. j en vecindad(i).
Sea Δ = f(j) – f(i)
Si Δ < T entonces i = j Hasta “equilibrio”
disminuyo T
Hasta condicion de parada
Seleccionar un conjunto de nb ciudades cercanas para cada ciudad
Elijo un inicial
For T = 0.099 to 0 step -0.001
Para cada ciudad c1
Para cada ciudad c2 cercana a la ciudad c1
j = lin-2-op (i, c1, c2) )
= largo(j) – largo (i)
End para cada ciudad c1
End para cada Threshold
Resultados para 442 ciudades con largo del recorrido inferior a 52.00
TA Improved Form
0
50
100
4 6 8 10 12 14 16 18 20
nb
# r
ec
orr
ido
s
TA
0
50
100
4 6 8 10 12 14 16 18 20
nb
# r
ec
orr
ido
s
RRT
0
50
100
4 6 8 10 12 14 16 18 20
nb
# r
ec
orr
ido
s
El largo de lasolución optima es: 50.80
Resultados para 532 ciudades con largo del recorrido inferior a 28.500
TA Improved From
0
50
100
4 6 8 10 12 14 16 18 20
nb
# r
ec
orr
ido
s
GDA
0
50
100
4 6 8 10 12 14 16 18 20
nb
# r
ec
orr
ido
RRT
0
50
100
4 6 8 10 12 14 16 18 20
nb
# re
corr
idos
El largo de lasolución optima es: 27.686
Conclusiones
• Heurísticas fáciles de aplicar e implementar.
• Los resultados obtenidos con estas heurísticas son buenos.
• SA es muy sensible a la elección del esquema de enfriamiento.
• TA, GDA y RRT son “mejores” y sólo dependen de un único parámetro.
?