Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Recocido Simulado
Recocido Simulado
Recocido Simulado
Por
Jorge E. Burguera H.
José A. Romero M.
José T. Montilla H.
2018
INTRODUCCIÓN .............................................................................................. 5
CONTENIDO ...................................................................................................... 7
1) METAHEURÍSTICA ................................................................................................................................... 7
CONCLUSIONES............................................................................................. 21
ÍNDICE DE TABLAS
TABLA 1 POSIBLES VALORES QUE PUEDE TOMAR LA ECUACIÓN Y EL ÓPTIMO GLOBAL. ...................................................................... 15
FIGURA 2 PSEUDO CÓDIGO DEL ALGORITMO DE RECOCIDO SIMULADO (PERALTA, JUAREZ, & MARTINEZ, 2015) ................................. 12
Introducción
Con el pasar del tiempo, el mayor uso de la ciencia y con el aumento de competitividad en
los diferentes mercados, se ha hecho notoria la necesidad de satisfacer los estándares sociales y
científicos, además de superar los estándares y actuales, así como facilitar las tareas del día a día
Algunos de estos problemas son relativamente sencillos, pero otros son mucho más
planes de mínimo costo para hacer entregas a clientes, correcta configuración de una cadena de
producción para aprovechar al máximo los recursos, encontrar el arreglo correcto para garantizar
una óptima red de telecomunicaciones, hidráulicas, eléctricas, así como diseñar horarios de clases
de diversas materias para evitar la colisiones y aprovechar al máximo las horas disponibles,
problemas como estos tienen una complejidad enorme y pueden tener una diversidad de soluciones
Según Cruz, Moreno, & Peralta (2014), la complejidad de gran cantidad de problemas que
aquellos cuya solución (hasta el momento) no se puede hallar de manera determinista y necesitan
métodos aproximados para resolverlos, estos métodos son denominados métodos heurísticos.
Estos métodos permiten hallar soluciones de buena calidad para problemas de gran
complejidad, pero no garantizan que estos resultados encontrados sean los mejores entre todo el
abanico de posibilidades, es por esto que se desarrollaron y han tomado auge los métodos
metaheurísticos.
5
Las metaheurísticas son diseñadas para mejorar a los métodos heurísticos mediante
búsquedas inteligentes que, a pesar de tampoco garantizar encontrar el o los mejores resultados
posibles, si garantiza salir de los óptimos locales en los que comúnmente se quedan atrapadas las
criterios para resolver problemas además de posibles mejoras que se pueden usar para abordar
ciertos problemas y mejorar los resultados obtenidos, además, se desarrollará un ejercicio sencillo
6
Contenido
1) Metaheurística
Tal como expresaron Hillier & Lieberman (2010, pág. 563), la metaheurística son
procedimientos que buscan descubrir soluciones factibles que sean consideradas muy buenas pero
que no son necesariamente el óptimo global. Los métodos metaheurísticos funcionan con
algoritmos iterativos, en el que cada iteración busca una nueva solución que puede ser mejor a la
seleccionada anteriormente, al terminar el algoritmo, se puede saber cuál es la mejor solución entre
todas las iteraciones realizadas, es decir, si el algoritmo está bien diseñado, muestra una solución
que por lo menos se considera cerca del óptimo, además que debería servir para resolver problemas
muy grandes.
desarrollar ciertos problemas y estas técnicas deben adaptarse a cada problema en específico, allí
radicaba un gran problema debido a que los investigadores para abordar cada problema en el que
no existía un algoritmo disponible debían desarrollar uno nuevo desde cero, esto significaba
entonces un uso mayor de los recursos disponibles. Esto ha cambiado con el desarrollo de algunas
técnicas de metaheurística que brindan una estructura general que permite adaptarse a diversos
problemas, algunas de estos métodos son: La búsqueda tabú, algoritmo genético y recocido
7
1.1) Recocido simulado
Fue propuesto por Kirkpatrick, Gelatt y Vecchi (1983), está inspirado en el templado de
materiales en la industria para obtener materiales más cristalinos, más resistentes o en términos
temperatura específica, en la segunda etapa se sostiene esta temperatura para que los átomos
puedan acomodarse en un estado de mínima energía y por último se hace descender la temperatura
muy lentamente y por etapas para que en cada una de estas los átomos queden en equilibrio
cabe destacar que a medida que la temperatura disminuye, la probabilidad de re-arreglar los átomos
y su estructura disminuye.
Este método permite encontrar óptimos locales, pero no atorarse en estos buscando vecinos
Algunas aplicaciones del algoritmo del recocido simulado son: materiales para la industria
aeroespacial y las industrias que necesiten materiales con ciertas cualidades muy específicas,
diseño de redes hidráulicas, eléctricas, de comunicaciones, entre otras, en el área de logística para
8
Figura 1 Analogía usada para el recocido simulado (Conant, 2010).
estudio, no es un método que especifique los pasos a seguir sin variación, sino que permite la
o peores resultados.
Se deben definir ciertos parámetros y criterios antes de comenzar con el algoritmo, estos
a) Temperatura inicial:
Debe ser suficientemente alta para que permita prácticamente cualquier movimiento, es
9
Se puede introducir cualquier solución factible (que se encuentre en el rango de aceptación)
pero lo ideal es iniciar con una solución que en primera instancia a partir de las pistas obtenidas
parezca buena, en caso de no tener indicios de un inicio se puede asumir el punto medio entre el
Se deben definir cuantas iteraciones se pueden hacer en cada etapa que se relaciona con el
d) Regla de iteración:
Para escapar de los óptimos locales se debe tener la capacidad de pasar de un valor a otro
para evaluarlo, este valor que toma puede obtenerse de distintas maneras tales como el aumento
constante de los valores comenzando por el número menor, utilizando funciones estadísticas.
e) Criterio de parada:
temperatura sea menor a cierto valor determinado dado que no acepta nuevas configuraciones.
Entonces, según Hillier & Lieberman (2010, pág. 583) el algoritmo en su forma más
10
1. Paso inicial: Comience con una solución de prueba inicial.
Cabe destacar que en cada iteración hay un conjunto de valores vecinos que se aceptan solo
maximizar. Nicholas Metropolis demostró que los átomos en un proceso de recocido se comportan
según el factor de probabilidad de Boltzmann, debido a esto se usa el algoritmo de Metrópolis para
iterar y aceptar los vecinos y en caso de rechazar algún vecino se procede a aplicar el algoritmo de
11
Figura 2 Pseudo código del algoritmo de recocido simulado (Peralta, Juarez, & Martinez, 2015)
algoritmo para mejorar la precisión y encontrar mejores resultados, se pueden destacar las
siguientes mejoras:
12
- En los casos que al disminuir la temperatura no acepta ningún valor se puede aumentar
ondulatorio, esto significa que cada vez que se acepte un movimiento se enfría y cuando
- Dado que para lograr los objetivos muchas veces este algoritmo necesita mucho tiempo
- Otra solución resulta es disminuir la complejidad de los cálculos necesarios para hallar
posteriormente se le aplica un calculo mucho más complejo para hallar los mejores
resultados posibles.
- También se puede reducir el número de posibilidades las cuales pueden ser exploradas,
en casos donde se sabe que solo ciertas soluciones pueden tener resultados esperados
- Puede usarse una función de costo aproximada para reducir los tiempos.
La versatilidad que permite este método es relevante y se puede adaptar a cada problema,
además, en muchos se opta por desarrollar este algoritmo juntamente con otras técnicas
13
1.2) Problema resuelto aplicando recocido simulado
lineal:
comenzar el estudio, para observar mejor los efectos se deciden tomar 3 valores diferentes y
suficientemente distantes: 10, 100 y 5000 grados para observar si existe diferencia en la selección
Posteriormente hacemos una tabla con los posibles valores enteros que puede tomar la
ecuación y cual sería el resultado óptimo, esto es simplemente para para verificar si el algoritmo
conduce al resultado esperado y se hará en el presente trabajo dada la facilidad de la ecuación dada,
14
VALORES DE LA FUNCIÓN
x f(x) x f(x)
0 100 16 3236
1 941 17 2973
2 1668 18 2692
3 2287 19 2399
4 2804 20 2100
5 3225 21 1801
6 3556 22 1508
7 3803 23 1227
8 3972 24 964
9 4069 25 725
10 4100 26 516
11 4071 27 343
12 3988 28 212
13 3857 29 129
14 3684 30 100
15 3475 31 131
Se puede observar en la tabla 1 que el valor óptimo es 100 teniendo un coste de 4100, este
Posterior se debe establecer un punto de inicio, en este estudio se tomarán dos casos de
estudio, el primero es tomar como inicio el número menor que es cero (0) y el segundo es tomar
el punto medio de los valores aceptados que es dieciséis (16) (el promedio real es 15,5 pero por
Como siguiente paso, es necesario asumir un método de iteración, para los casos en el que
el valor inicial es cero, se toma como criterio de iteración el aumento constante de 1 en 1 hasta
haber seleccionado todos los posibles valores enteros. Para los 3 últimos casos, en los que los
valores iniciales son 16, se tomará como criterio de iteración una formula estadística la cual
15
recorrer vecindades dado un factor de desplazamiento que será 1.5 y multiplicado por un valor
aleatorio, a su vez, este será el que determine si se aumentará o disminuirá el valor actual.
Por último, se define la condición de parada, el criterio que se asume en este ejercicio
propuesto para los 3 primeros caos es la prueba de todos los valores factibles y para los 3 casos
En definitiva, se cuenta con 6 casos de estudio para el mismo problema quedando definidos
de la siguiente manera:
- Caso 1:
• Temperatura inicial: 100° con disminución del 10% por cada iteración.
- Caso 2:
• Temperatura inicial: 5000° con disminución del 10% por cada iteración.
- Caso 3:
• Temperatura inicial: 10° con disminución del 10% por cada iteración.
16
• Método de iteración: Aumento constante de 1 en 1.
- Caso 4:
• Temperatura inicial: 100° con disminución del 10% por cada iteración.
aumento o disminución del valor actual, para aceptar las nuevas vecindades se
- Caso 5:
• Temperatura inicial: 5000° con disminución del 10% por cada iteración.
aumento o disminución del valor actual, para aceptar las nuevas vecindades se
- Caso 6:
• Temperatura inicial: 10° con disminución del 10% por cada iteración.
aumento o disminución del valor actual, para aceptar las nuevas vecindades se
17
• Condición de parada: Realizar 100 iteraciones.
En los casos 1, 2 y 3 se obtiene el mismo valor que optimiza la función y por ende el mismo
costo, esto quiere decir que a pesar de que existe diferencias notables en la temperatura, esta no
afecta el resultado debido a que el criterio tomado para la selección de vecinos e iteración no
En estos casos específicos, el algoritmo funciona muy bien debido a que se limitaron los
valores factibles y se estableció que solo se tomarían en cuenta valores enteros, además de que el
criterio de iteración es constante. En el caso de que los valores factibles incluyeran decimales, la
Los casos 4, 5 y 6 se comportan tal como se espera para problemas usando recocido
simulado, los valores para las próximas iteraciones se seleccionan de manera aleatoria y
cumpliendo las condiciones del Algoritmo de Metropolis, además, se observa una correlación de
la temperatura inicial con el valor obtenido (valor subóptimo), esta cantidad varía entre los 3 casos,
tal como se observa en la tabla 5 y 7, los resultados obtenidos en el caso 4 y 6 rondan un error
porcentual de entre el 12% al 21%, mientras que en el caso 5 en algunas ocasiones, los resultados
se aproximan bastante bien al óptimo global alcanzando un error porcentual del 0,00001%.
Esta variabilidad de resultados es causada por varios factores, primero: el valor inicial
estructura estudiada y las probabilidades de estudiar a las vecindades son cada vez menores,
18
CASO 1
Temperatura x f(x) Diferencia ¿Se acepta? Aleatorio Boltzmann Boltzman ¿Se acepta? f(x)*
0 100 100
100,0000 1 941 -841 Si 0,852462 4491,760512 941
90,0000 2 1668 -727 Si 0,424358 3222,065130 1668
81,0000 3 2287 -619 Si 0,377277 2083,856013 2287
72,9000 4 2804 -517 Si 0,279898 1202,197873 2804
65,6100 5 3225 -421 Si 0,485805 611,983163 3225
59,0490 6 3556 -331 Si 0,742455 271,921675 3556
53,1441 7 3803 -247 Si 0,518679 104,348970 3803
47,8297 8 3972 -169 Si 0,126380 34,239165 3972
43,0467 9 4069 -97 Si 0,895480 9,519721 4069
38,7420 10 4100 -31 Si 0,436826 2,225906 4100
34,8678 11 4071 29 No 0,945775 0,435303 No 4100
31,3811 12 3988 112 No 0,012266 0,028183 Si 4100
28,2430 13 3857 243 No 0,588954 0,000183 No 4100
25,4187 14 3684 416 No 0,289785 0,000000 No 4100
22,8768 15 3475 625 No 0,357930 0,000000 No 4100
20,5891 16 3236 864 No 0,827271 0,000000 No 4100
18,5302 17 2973 1127 No 0,717949 0,000000 No 4100
16,6772 18 2692 1408 No 0,543773 0,000000 No 4100
15,0095 19 2399 1701 No 0,639268 0,000000 No 4100
13,5085 20 2100 2000 No 0,985556 0,000000 No 4100
12,1577 21 1801 2299 No 0,256304 0,000000 No 4100
10,9419 22 1508 2592 No 0,299927 0,000000 No 4100
9,8477 23 1227 2873 No 0,461939 0,000000 No 4100
8,8629 24 964 3136 No 0,606767 0,000000 No 4100
7,9766 25 725 3375 No 0,200140 0,000000 No 4100
7,1790 26 516 3584 No 0,173191 0,000000 No 4100
6,4611 27 343 3757 No 0,285100 0,000000 No 4100
5,8150 28 212 3888 No 0,100516 0,000000 No 4100
5,2335 29 129 3971 No 0,872475 0,000000 No 4100
4,7101 30 100 4000 No 0,584644 0,000000 No 4100
4,2391 31 131 3969 No 0,676175 0,000000 No 4100
Valor 10
Función mayor: 4100
Tabla 2 Valores obtenidos para el caso de estudio 1
CASO 2
Temperatura x f(x) Diferencia ¿Se acepta? Aleatorio Boltzmann Boltzman ¿Se acepta? f(x)*
0 100 100
5000,0000 1 941 -841 Si 0,225993 1,183173 941
4500,0000 2 1668 -727 Si 0,159141 1,175338 1668
4050,0000 3 2287 -619 Si 0,423979 1,165138 2287
3645,0000 4 2804 -517 Si 0,046392 1,152390 2804
3280,5000 5 3225 -421 Si 0,599547 1,136933 3225
2952,4500 6 3556 -331 Si 0,025413 1,118636 3556
2657,2050 7 3803 -247 Si 0,341717 1,097412 3803
2391,4845 8 3972 -169 Si 0,615849 1,073224 3972
2152,3361 9 4069 -97 Si 0,568403 1,046098 4069
1937,1024 10 4100 -31 Si 0,046417 1,016132 4100
1743,3922 11 4071 29 No 0,410042 0,983503 Si 4100
1569,0530 12 3988 112 No 0,937392 0,931107 No 4100
1412,1477 13 3857 243 No 0,946133 0,841913 No 4100
1270,9329 14 3684 416 No 0,573613 0,720854 Si 4100
1143,8396 15 3475 625 No 0,975305 0,579028 No 4100
1029,4557 16 3236 864 No 0,722767 0,432022 No 4100
926,5101 17 2973 1127 No 0,108728 0,296297 Si 4100
833,8591 18 2692 1408 No 0,319871 0,184790 No 4100
750,4732 19 2399 1701 No 0,527435 0,103667 No 4100
675,4259 20 2100 2000 No 0,763668 0,051762 No 4100
607,8833 21 1801 2299 No 0,890065 0,022778 No 4100
547,0949 22 1508 2592 No 0,104079 0,008758 No 4100
492,3855 23 1227 2873 No 0,273569 0,002924 No 4100
443,1469 24 964 3136 No 0,590502 0,000845 No 4100
398,8322 25 725 3375 No 0,646738 0,000211 No 4100
358,9490 26 516 3584 No 0,066318 0,000046 No 4100
323,0541 27 343 3757 No 0,391016 0,000009 No 4100
290,7487 28 212 3888 No 0,487522 0,000002 No 4100
261,6738 29 129 3971 No 0,405336 0,000000 No 4100
235,5064 30 100 4000 No 0,613160 0,000000 No 4100
211,9558 31 131 3969 No 0,030025 0,000000 No 4100
Valor 10
Función mayor: 4100
Tabla 3 Valores obtenidos para el caso de estudio 2
19
CASO 3
Temperatura x f(x) Diferencia ¿Se acepta? Aleatorio Boltzmann Boltzman ¿Se acepta? f(x)*
0 100 100
10,0000 1 941 -841 Si 0,740981 ######################### 941
9,0000 2 1668 -727 Si 0,224954 ######################### 1668
8,1000 3 2287 -619 Si 0,554978 ######################### 2287
7,2900 4 2804 -517 Si 0,314042 ######################### 2804
6,5610 5 3225 -421 Si 0,955183 ######################### 3225
5,9049 6 3556 -331 Si 0,932039 ######################### 3556
5,3144 7 3803 -247 Si 0,708400 ######################### 3803
4,7830 8 3972 -169 Si 0,325440 2214275648124510,000000 3972
4,3047 9 4069 -97 Si 0,363907 6112831550,434140 4069
3,8742 10 4100 -31 Si 0,871454 2985,856306 4100
3,4868 11 4071 29 No 0,643354 0,000244 No 4100
3,1381 12 3988 112 No 0,521821 0,000000 No 4100
2,8243 13 3857 243 No 0,546510 0,000000 No 4100
2,5419 14 3684 416 No 0,315048 0,000000 No 4100
2,2877 15 3475 625 No 0,068772 0,000000 No 4100
2,0589 16 3236 864 No 0,056378 0,000000 No 4100
1,8530 17 2973 1127 No 0,783047 0,000000 No 4100
1,6677 18 2692 1408 No 0,711657 0,000000 No 4100
1,5009 19 2399 1701 No 0,881067 0,000000 No 4100
1,3509 20 2100 2000 No 0,438469 0,000000 No 4100
1,2158 21 1801 2299 No 0,648310 0,000000 No 4100
1,0942 22 1508 2592 No 0,092426 0,000000 No 4100
0,9848 23 1227 2873 No 0,166763 0,000000 No 4100
0,8863 24 964 3136 No 0,665961 0,000000 No 4100
0,7977 25 725 3375 No 0,298195 0,000000 No 4100
0,7179 26 516 3584 No 0,863614 0,000000 No 4100
0,6461 27 343 3757 No 0,299467 0,000000 No 4100
0,5815 28 212 3888 No 0,679089 0,000000 No 4100
0,5233 29 129 3971 No 0,946102 0,000000 No 4100
0,4710 30 100 4000 No 0,734072 0,000000 No 4100
0,4239 31 131 3969 No 0,754373 0,000000 No 4100
Valor 10
Función mayor: 4100
Tabla 4 Valores obtenidos para el caso de estudio 3
Además, la cantidad de iteraciones a las cuales se sometieron estos casos fue insuficiente
para encontrar el óptimo local, Galeano (2016), en su video recomienda que se realicen 1000
iteraciones para garantizar encontrar el óptimo global. Otro factor que incide en el resultado es la
velocidad de enfriamiento, siendo está muy rápida y no permitiendo la suficiente exploración del
20
Conclusiones
En este trabajo se generó una descripción detallada del algoritmo de recocido simulado,
con lo cual se pretende mostrar los beneficios de esta estrategia cuando es aplicada a problemas
de optimización.
diferentes, logrando en los 3 primeros encontrar el óptimo global, el comportamiento del algoritmo
en estos casos difiere un poco del común denominador de recocido simulado que es la aleatoriedad
decidió adoptar algunas de las mejoras listadas en la sección 1.1.3 para demostrar lo rápido y
efectivo del método. Asunto contrario ocurrió con los casos 4,5 y 6 que se desarrolló el problema
con el algoritmo básico, pero no se obtuvieron los mejores resultados, esto debido a la poca
resultados muy variados que van desde costos con un error porcentual menor al 0.00001% hasta
el 21% aproximadamente.
Resulta evidente la facilidad para aplicar este algoritmo y la versatilidad para adaptarse a
y el aumento de efectividad que acarrea una selección correcta de los métodos de iteración, valores
de temperatura inicial y coeficiente de enfriamiento, estas mejoras pueden ser las listadas
21
REFERENCIAS
Conant, S. (19 de Abril de 2010). Filminas Dr. Santiago Conant. Obtenido de Tecnológico de Monterrey:
http://cb.mty.itesm.mx/materias/tc3001/materiales/RecocidoSimulado.pdf
Cruz, M., Moreno, P., & Peralta, J. (Marzo- Junio de 2014). Aplicación de la teoría de la complejidad en
optimización combinatoria. (G. Ochoa, Ed.) Inventio(20), 35-43. Obtenido de
https://www.uaem.mx/sites/default/files/inventio/inventio_20.pdf
Galeano H., J. E. (24 de Agosto de 2016). RECOCIDO SIMULADO domingo, 8 de marzo de 2015 11 52 58 a
m. Obtenido de Youtube: https://www.youtube.com/watch?v=5QRTIsVKX4I&t=1142s
Hillier, F., & Lieberman, G. (2010). Introducción a la Investigación de Operaciones (Novena ed.). (P. Roig,
Ed., J. Murrieta, & C. Cordero, Trads.) México DF, México: McGraw Hill.
Kirkpatrick, S., Gelatt, C. D., & Vecchi, M. P. (13 de Mayo de 1983). Optimization by Simulated Annealing.
Science, 220(4598), 671-680. Obtenido de http://www.jstor.org/stable/1690046
Normas APA. (2017). ¿Cómo citar y referenciar vídeos de youtube (o en otra web) con normas APA?
Obtenido de Normas APA: http://normasapa.com/como-citar-referenciar-videos-de-youtube-o-
otra-web-con-normas-apa/
Pelaez, J. (2005). Implementación del algoritmo de selección de variables conocido con el nombre de
"Simulated Annealing" (Recocido Simulado).
Peralta, J., Juarez, J., & Martinez, B. (2015). Aplicación de recocido simulado en problemas de
optimización combinatoria. Inventio, 11(23), 23-28.
22