implementación algoritmo de enfriamiento simulado en lenguaje r - simulated annealing...

Upload: juan-felipe-munoz-fernandez

Post on 02-Jun-2018

222 views

Category:

Documents


0 download

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

    [email protected]

    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: [email protected]

    # 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