implementación algoritmo de enfriamiento simulado en lenguaje r - simulated annealing...
Post on 02-Jun-2018
222 Views
Preview:
TRANSCRIPT
-
8/10/2019 Implementacin algoritmo de enfriamiento simulado en lenguaje R - Simulated Annealing implementation in R language
1/16
ENFRIAMIENTO SIMULADO
Juan Felipe Muoz Fernndez
jfmunozf@unal.edu.co
14-Oct-2014
En cualquier lenguaje de programacin programe un algoritmo de Enfriamiento simulado para
optimizar la siguiente funcin (Rosenbrock).
=
+ +=
1
1
22
1
2)1()(100)(
n
i
iii xxxxf
2=n , 12.512.5 ix
Comience por una solucin 31 =x y 32 =x y corra el algoritmo mnimo 50 veces.
Elija los parmetros que considere adecuados. Pruebe con dos temperaturas diferentes y para
cada una:
1. Grafique la secuencia de bsqueda: iteracin vs )(xf
2. Cul es la mejor solucin 'x y )'(xf encontrada?
En general:
3. Saque conclusiones del uso de la temperatura. Cul fue ms conveniente segn tiempo de
convergencia o calidad de la solucin
4. Qu ventajas le ve al algoritmo?
5. Qu desventajas le ve al algoritmo?
Debe entregar: diagrama de flujo (o seudocdigo), algoritmo (con comentarios) y resultados.
-
8/10/2019 Implementacin algoritmo de enfriamiento simulado en lenguaje R - Simulated Annealing implementation in R language
2/16
PSEUDOCDIGO
Inicio
Temperatura = T0TemperaturaFinal = Tf
VelocidadEnfriamiento = Ve
AlfaEnfriamiento = Ae
[ ] 6/)12.5(12.5 = X1= 3
X2= 3
=
+=
1
1
2
1
2
2
2
121 )1()(100),(
n
i
xxxxxf
Aceptado = 0
Anterior = ),( 21 xxf
Mejor = ),( 21 xxf
Repetir
CuentaEnfriamiento = 1
Repetir
1'x = X1+ ),0( N
2'x = X2+ ),0( N
),()','( 2121 xxfxxf = Si (< 0)
Aceptado = 1
Sino
= aTemperatur
eP
)(
Si (NumeroAletorioUniforme(0,1) < )(P )
Aceptado = 1Fin Si
Fin Si
Si (Aceptado = 1)
X1= 1'x
X2= 2'x
F = ),( 21 xxf
Si (F
-
8/10/2019 Implementacin algoritmo de enfriamiento simulado en lenguaje R - Simulated Annealing implementation in R language
3/16
ALGORITMO IMPLEMENTADO EN LENGUAJE R
# Implementacion algoritmo Simulated Annealing
# para optimizacion de la funcion de Rosenbrock
# en lenguaje R.
## Autor: Juan Felipe Munoz Fernandez
# email: jfmunozf@unal.edu.co
# Universidad Nacional de Colombia - Sede Medellin
# Facultad de Minas
# Fecha ultima actualizacion: 10-Oct-2014
# Se define la funcion de Rosenbrock.
# Para la implementacion pedida, la
# la dimension: n=2, por tal razon el
# ciclo for que implementa la sumatoria
# va hasta 1.
rosenbrock=function(x){fr =0
for(i in1:1){fr =fr+((100*(((x[i]^2)-x[i+1])^2))+((1-x[i])^2))
}
return(fr)
}
# Definicion del dominio de la variable x
limInf =-5.12
limSup =5.12
# Parametro para calcular la velocidad de enfriamiento
velEnfriamiento =50
# Parametro alfa para calculo de la temperatura inicialalfaInicial =0.99
# Parametro para definir como se va a enfriar el sistema.
# En este caso se elige un numero aleatorio
# segun las recomendaciones que indican que
# alfa debe estar entre 0.8 y 0.99 para la funcion
# de enfriamiento del sistema
alfaEnfriamiento =runif(1,0.8,0.99)
# Parametro para detener la busqueda basado en
# la definicion de una temperatura final del sistema
tempFinal =0.05
# Contador de ejecuciones del algoritmocuentaRepeticiones =0
# Numero maximo de ejecuciones del algoritmo
maxRepeticiones =50
-
8/10/2019 Implementacin algoritmo de enfriamiento simulado en lenguaje R - Simulated Annealing implementation in R language
4/16
# Inicia ciclo de ejecuciones maximas del algoritmo
repeat{
# Se pide iniciar x1=3 y x2=3
x =c(3,3)
# Calculamos el valor de la funcion
# con base en x1 y x2 iniciales
g =rosenbrock(x)
# Calculamos sigma para la estructura del
# vecindario
sigma=(limSup-limInf)/6
#temp=g*alfaInicial
# Temperatura inicial tomando como
# ejemplo: http://www.r-bloggers.com/simulated-annealing-in-julia/
temp =10000
# Flag para saber si una solucion fue o no aceptadaaceptado =0
# Variables para controlar quien es la mejor solucion
# encontrada en cada iteracion
anterior =gmejor =g
# Inicia ciclo de control de temperatura
# este ciclo se detiene cuando el sistema
# se enfria, es decir, temp
-
8/10/2019 Implementacin algoritmo de enfriamiento simulado en lenguaje R - Simulated Annealing implementation in R language
5/16
# Se crea una lista de x1 y x2
# perturbadas
xPrima =c(xPrima1,xPrima2)
# Se evalua el costo de la funcion
# de Rosenbrock de acuerdo a la
# solucion inicial y la solucion
# perturbada
rho =rosenbrock(xPrima)-rosenbrock(x)
# Evaluacion para aceptar o no la solucion
# que minimiza la funcion de Rosenbrock
if(rho
-
8/10/2019 Implementacin algoritmo de enfriamiento simulado en lenguaje R - Simulated Annealing implementation in R language
6/16
# Control del ciclo de velocidad de
# enfriamiento
if(cVelEnfriamiento ==velEnfriamiento){break}
}
# Funcion de enfriamiento: Enfriamiento geometrico.
tempActual =temp
temp =alfaEnfriamiento *tempActual
# Control del ciclo de control de temperatura
if(temp
-
8/10/2019 Implementacin algoritmo de enfriamiento simulado en lenguaje R - Simulated Annealing implementation in R language
7/16
RESULTADOS PRUEBA No. 1.
Los siguientes resultados corresponden a una temperatura inicial fijada en 10000, de acuerdo a
como lo hacen en [1]. Es importante aclarar que esta tabla corresponde a los resultados de
ejecutar 50 veces el algoritmo completo, seleccionando en cada iteracin el mejor valor de 1x ,
2x y )(xf . Los siguientes parmetros se usaron para los resultados ilustrados a continuacin.
- Temperatura inicial: 10000
- Velocidad de enfriamiento: 50, el ciclo ms interno (el de bsqueda) itera 50 veces
antes de cambiar de temperatura.
- Alfa enfriamiento:Se selecciona un nmero aleatorio uniforme entre 0.8 y 0.99 [2].
- Funcin de enfriamiento:Temp = Temp[k-1]* Alfa enfriamiento, tomando como referencia
la temperatura de la iteracin [k-1], es decir, la temperatura de la iteracin con la que
termin el ciclo que controla la velocidad de enfriamiento.
- Criterio de parada: Temp 0.05.
- Nmero de corridas del algoritmo:50.
-
8/10/2019 Implementacin algoritmo de enfriamiento simulado en lenguaje R - Simulated Annealing implementation in R language
8/16
Tabla 1: Resultados de la bsqueda del algoritmo de enfriamiento simulado para unatemperatura inicial de 10000 y 50 ejecuciones del mismo.
El mejor valor mnimo de la funcin de Rosenbrock se alcanz en la ejecucin nmero 22 del
algoritmo. La siguiente grfica ilustra este proceso de bsqueda.
-
8/10/2019 Implementacin algoritmo de enfriamiento simulado en lenguaje R - Simulated Annealing implementation in R language
9/16
Figura 1: Grfica del resultado de la bsqueda del valor mnimo de la funcin de Rosenbrock
para 50 ejecuciones del algoritmo con una temperatura inicial de 10000.
Se observa en la grfica como en la iteracin 22, la funcin alcanza su valor mnimo (casi cero)
para un 0.98817181 =x y 0.97550892 =x con una temperatura de 106.6917=T .
Ntese que aunque el sistema no lleg a enfriarse por completo, su ptimo se alcanz con una
temperatura muy por encima del valor fijado como temperatura final: 106.691 >> 0.05.
-
8/10/2019 Implementacin algoritmo de enfriamiento simulado en lenguaje R - Simulated Annealing implementation in R language
10/16
RESULTADOS PRUEBA No. 2.
Para esta prueba se seleccion como temperatura inicial, una temperatura cercana al valor de
)(xf para la solucin inicial, es decir, 31 =x y 32 =x . El valor de la temperatura para esta
prueba fue 99.0*)3,3(f . Los dems parmetros se mantienen:
- Temperatura inicial: 99.0*)3,3(f .
- Velocidad de enfriamiento: 50, el ciclo ms interno (el de bsqueda) itera 50 veces
antes de cambiar de temperatura.
- Alfa enfriamiento:Se selecciona un nmero aleatorio uniforme entre 0.8 y 0.99 [2].
- Funcin de enfriamiento:Temp = Temp[k-1]* Alfa enfriamiento, tomando como referencia
la temperatura de la iteracin [k-1], es decir, la temperatura de la iteracin con la quetermin el ciclo que controla la velocidad de enfriamiento.
- Criterio de parada: Temp 0.05.
- Nmero de corridas del algoritmo:50.
La siguiente tabla ilustra los resultados de esta prueba.
-
8/10/2019 Implementacin algoritmo de enfriamiento simulado en lenguaje R - Simulated Annealing implementation in R language
11/16
Tabla 2: Resultados de la bsqueda del algoritmo de enfriamiento simulado para una
temperatura inicial de 99.0*)3,3(f y 50 ejecuciones del mismo.
-
8/10/2019 Implementacin algoritmo de enfriamiento simulado en lenguaje R - Simulated Annealing implementation in R language
12/16
La siguiente grfica ilustra el proceso de bsqueda para esta prueba.
Figura 2: Grfica del resultado de la bsqueda del valor mnimo de la funcin de Rosenbrock
para 50 ejecuciones del algoritmo con una temperatura inicial de 99.0*)3,3(f .
Como se observa en la tabla de resultados, el ptimo de la funcin de Rosenbrock se encontr
en la corrida nmero 16 del algoritmo. En este caso, la convergencia del algoritmo coincidi con
la temperatura ms baja de dicha iteracin: 0.0583221, casi la temperatura final del sistema.
Entre las dos pruebas, quin presenta una solucin de mejor calidad, corresponde a la prueba
1, ya que se sabe que el mnimo de la funcin de Rosenbrock es 0 cuando 11 =x y 12 =x [3].
La siguiente tabla corresponde al comparativo entre ambas pruebas.
Tabla 3: Comparacin de los mejores valores para la funcin de Rosenbrock en cada una de
las pruebas realizadas.
-
8/10/2019 Implementacin algoritmo de enfriamiento simulado en lenguaje R - Simulated Annealing implementation in R language
13/16
VENTAJAS DEL ALGORITMO
- El algoritmo cuenta con varios parmetros ajustables por parte del analista: temperatura,
criterio de parada, nmero de repeticiones, funcin de enfriamiento, entre otros. Todosestos parmetros permiten refinar la bsqueda y escapar de ptimos locales con un costo
computacional relacionado estrechamente con la calidad de los parmetros elegidos.
- Con una mayor temperatura inicial se hace una bsqueda ms precisa, obteniendo un
ptimo global ms cerca al valor ptimo de la funcin.
- La ejecucin del algoritmo no se atora en ningn punto.
DESVENTAJAS DEL ALGORITMO
- Dificultad para establecer claramente los parmetros como la temperatura inicial, el criterio
de parada, la funcin de enfriamiento, entre otros. Dependen mucho del problema que se
est trabajando y de la experiencia del analista.
- Dependiendo de la temperatura inicial elegida, el criterio de parada y del dominio de la
variable ix (por las validaciones que se requieren) se puede dar un costo computacional
alto.
- Temperaturas iniciales pequeas confinan la bsqueda a ptimos locales.
-
8/10/2019 Implementacin algoritmo de enfriamiento simulado en lenguaje R - Simulated Annealing implementation in R language
14/16
CONCLUSIONES
- Se nota como en la prueba de mayor temperatura inicial, la bsqueda escapa con ms
facilidad del ptimo local acercndose al valor ptimo de la funcin (casi cero). Mientrasque en la prueba de menor temperatura inicial, la bsqueda permanece en una zona de
valores sin que se produzcan movimientos significativos a valores ms cercanos al ptimo
de la funcin.
- La prueba de mayor temperatura inicial requiri ms costo computacional (tard ms) que
la prueba de temperatura inicial menor.
- En la prueba de mayor temperatura inicial se alcanz un ptimo global sin que el sistema sehaya enfriado por completo, mientras que en la prueba de temperatura inicial baja, el
ptimo local encontrado demuestra que se alcanz slo cuando el sistema estaba casi frio.
- Se requieren controles adicionales para finalizar la bsqueda cuando se haya encontrado el
ptimo de la funcin para no iterar ms de lo necesario. Es decir, debera reforzarse el
criterio de parada del algoritmo con validaciones adicionales. Por ejemplo, un porcentaje de
las mejores soluciones aceptadas.
- A temperaturas iniciales bajas, la bsqueda parece quedar confinada a ptimos locales
como lo demuestra la grfica de la figura 2.
- En la prueba de mayor temperatura inicial, la bsqueda se concentra al principio en un
espacio local, pero al bajar lentamente la temperatura se acept un movimiento de escape
que le permiti a la bsqueda acercarse con ms precisin al ptimo global.
- La prueba de mayor costo computacional obtuvo un resultado de mejor calidad que la
prueba de menor costo computacional.
- Debido a que en cada iteracin completa del algoritmo se est guardando la mejor solucin,
entonces se presenta elitismo como lo demuestra la prueba de mayor temperatura, en
donde se alcanz el ptimo sin que el sistema se enfriara por completo.
-
8/10/2019 Implementacin algoritmo de enfriamiento simulado en lenguaje R - Simulated Annealing implementation in R language
15/16
REFERENCIAS
[1] MYLES WHYTE, John. Simulated Annealing in Julia. Abril 4 de 2012 [en lnea].
http://www.r-bloggers.com/simulated-annealing-in-julia/
[2] GARCIA PARDO, Eduardo. Optimizacin de Sistemas de Comunicacin. Tema 3.3.Recocido Simulado. 2012 - 2013. p. 11 [en lnea].
http://docencia.etsit.urjc.es/moodle/pluginfile.php/23584/mod_resource/content/2/Recocido%20
Simulado.pdf
[3] Wolfram MathWorld. Rosenbrock Function [en lnea].
http://mathworld.wolfram.com/RosenbrockFunction.html
[4] BROWNLEEE, Jason. Clever Algorithms: Nature-Inspired Programming Recipes.
Simulated Annealing [en lnea]. http://www.cleveralgorithms.com/nature-inspired/physical/simulated_annealing.html
[5] JARAMILLO, Gloria Patricia. Sesin 6. Enfriamiento Simulado (Simulated Annealing).
Universidad Nacional de Colombia, Sede Medelln. Facultad de Minas. Semestre 2014-II. Curso
de Computacin Evolutiva y Optimizacin Heurstica.
[6] TUNJANO, Jairo Alonso. Recocido Simulado (Simmulated Annealing SA). Universidad
Nacional de Colombia. 2003 [en lnea].
http://dis.unal.edu.co/~fgonza/courses/2003/pmge/present/Recocido_simulado.pdf
[7] VILCHES, Erika. Recocido Simulado. Inteligencia Computacional TC 3023 [en lnea].
http://www.erikavilches.com/TC3023.01.200913/diapositivas/Tema%202%20-
%20Recocido%20simulado.pdf
[8] ALGORITMICA 2009 - 2010. Tema 3. Algoritmos de Enfriamiento Simulado [en lnea].
http://sci2s.ugr.es/docencia/algoritmica/Tema03-EnfriamientoSimulado-09-10.pdf
[9] PAVN MARIO, Pablo. Planificacin y Gestin de Redes. Prctica 2. Algoritmos de
enfriamiento simulado (simulated annealing). Curso 2012 2013 [en lnea].
http://www.net2plan.com/teaching/files/PyGRC/P3/P3_planif_main.pdf
-
8/10/2019 Implementacin algoritmo de enfriamiento simulado en lenguaje R - Simulated Annealing implementation in R language
16/16
NOTAS
Este documento PDF incluye los siguientes archivos adjuntos:
- rosenbrock.r
- resultados-rosenbrock-simulated-annealing.xlsx
top related