El recocido simulado ( SA ) es una técnica probabilística para aproximar el óptimo global de una función dada . Específicamente, es una metaheurística para aproximar la optimización global en un gran espacio de búsqueda para un problema de optimización . Para un gran número de óptimos locales, SA puede encontrar los óptimos globales. [1] A menudo se utiliza cuando el espacio de búsqueda es discreto (por ejemplo, el problema del viajante , el problema booleano de satisfacibilidad , la predicción de la estructura de proteínas y la programación de trabajos ). Para problemas en los que encontrar un óptimo global aproximado es más importante que encontrar un óptimo local preciso en un período de tiempo fijo, el recocido simulado puede ser preferible a algoritmos exactos como el descenso de gradiente o la bifurcación y el límite .
El nombre del algoritmo proviene del recocido en metalurgia , una técnica que implica calentar y enfriar controladamente un material para alterar sus propiedades físicas . Ambos son atributos del material que dependen de su energía libre termodinámica . Calentar y enfriar el material afecta tanto a la temperatura como a la energía libre termodinámica o energía de Gibbs . El recocido simulado se puede utilizar para problemas de optimización computacional muy difíciles en los que fallan los algoritmos exactos; aunque normalmente logra una solución aproximada al mínimo global, podría ser suficiente para muchos problemas prácticos.
Los problemas resueltos por SA actualmente están formulados mediante una función objetivo de muchas variables, sujeta a varias restricciones matemáticas . En la práctica, la restricción puede penalizarse como parte de la función objetivo.
Se han introducido técnicas similares de forma independiente en varias ocasiones, entre ellas Pincus (1970), [2] Khachaturyan et al (1979, [3] 1981 [4] ), Kirkpatrick, Gelatt y Vecchi (1983) y Cerny (1985). [5] En 1983, Kirkpatrick, Gelatt Jr., Vecchi, [6] utilizaron este enfoque para una solución al problema del viajante . También propusieron su nombre actual, recocido simulado.
Esta noción de enfriamiento lento implementada en el algoritmo de recocido simulado se interpreta como una lenta disminución en la probabilidad de aceptar peores soluciones a medida que se explora el espacio de soluciones. Aceptar peores soluciones permite una búsqueda más amplia de la solución óptima global. En general, los algoritmos de recocido simulados funcionan de la siguiente manera. La temperatura disminuye progresivamente desde un valor inicial positivo hasta cero. En cada paso de tiempo, el algoritmo selecciona aleatoriamente una solución cercana a la actual, mide su calidad y se mueve hacia ella de acuerdo con las probabilidades dependientes de la temperatura de seleccionar soluciones mejores o peores, que durante la búsqueda permanecen respectivamente en 1 (o positivo). ) y disminuye hacia cero.
La simulación se puede realizar mediante una solución de ecuaciones cinéticas para funciones de densidad de probabilidad , [7] [8] o utilizando un método de muestreo estocástico . [6] [9] El método es una adaptación del algoritmo Metropolis-Hastings , un método de Monte Carlo para generar estados de muestra de un sistema termodinámico, publicado por N. Metropolis et al. en 1953. [10]
El estado s de algunos sistemas físicos y la función E ( s ) que se debe minimizar es análoga a la energía interna del sistema en ese estado. El objetivo es llevar el sistema, desde un estado inicial arbitrario , a un estado con la mínima energía posible.
En cada paso, la heurística de recocido simulado considera algún estado vecino s* del estado actual s y decide probabilísticamente entre mover el sistema al estado s* o permanecer en el estado s . Estas probabilidades finalmente llevan al sistema a pasar a estados de menor energía. Normalmente, este paso se repite hasta que el sistema alcanza un estado que sea lo suficientemente bueno para la aplicación, o hasta que se haya agotado un presupuesto de cálculo determinado.
La optimización de una solución implica evaluar los vecinos de un estado del problema, que son nuevos estados producidos mediante la alteración conservadora de un estado determinado. Por ejemplo, en el problema del viajante, cada estado se define típicamente como una permutación de las ciudades que se van a visitar, y los vecinos de cualquier estado son el conjunto de permutaciones producidas al intercambiar dos de estas ciudades. La forma bien definida en la que se modifican los estados para producir estados vecinos se denomina "movimiento", y diferentes movimientos dan diferentes conjuntos de estados vecinos. Estos movimientos generalmente resultan en alteraciones mínimas del último estado, en un intento de mejorar progresivamente la solución mediante la mejora iterativa de sus partes (como las conexiones de la ciudad en el problema del viajante).
Las heurísticas simples como la escalada de colinas , que se mueven buscando un mejor vecino tras otro y se detienen cuando han alcanzado una solución que no tiene vecinos que sean mejores soluciones, no pueden garantizar que conduzcan a ninguna de las mejores soluciones existentes; su resultado puede fácilmente ser justo. un óptimo local , mientras que la mejor solución real sería un óptimo global que podría ser diferente. Las metaheurísticas utilizan los vecinos de una solución como una forma de explorar el espacio de la solución y, aunque prefieren mejores vecinos, también aceptan peores vecinos para evitar quedarse atrapados en óptimos locales; pueden encontrar el óptimo global si se ejecutan durante un período de tiempo suficiente.
La probabilidad de realizar la transición del estado actual a un nuevo estado candidato se especifica mediante una función de probabilidad de aceptación , que depende de las energías de los dos estados, y de un parámetro global que varía en el tiempo llamado temperatura . Los estados con menor energía son mejores que aquellos con mayor energía. La función de probabilidad debe ser positiva incluso cuando sea mayor que . Esta característica evita que el método se quede atascado en un mínimo local peor que el global.
Cuando tiende a cero, la probabilidad debe tender a cero si y a un valor positivo en caso contrario. Para valores suficientemente pequeños de , el sistema favorecerá cada vez más los movimientos que van "cuesta abajo" (es decir, hacia valores de energía más bajos) y evitará aquellos que van "cuesta arriba". Con el procedimiento se reduce al algoritmo codicioso , que sólo realiza las transiciones cuesta abajo.
En la descripción original del recocido simulado, la probabilidad era igual a 1 cuando , es decir, el procedimiento siempre iba cuesta abajo cuando encontraba una manera de hacerlo, independientemente de la temperatura. Muchas descripciones e implementaciones de recocido simulado todavía toman esta condición como parte de la definición del método. Sin embargo, esta condición no es esencial para que el método funcione.
La función generalmente se elige de modo que la probabilidad de aceptar un movimiento disminuya cuando la diferencia aumenta; es decir, los movimientos pequeños cuesta arriba son más probables que los grandes. Sin embargo, este requisito no es estrictamente necesario, siempre que se cumplan los requisitos anteriores.
Dadas estas propiedades, la temperatura juega un papel crucial en el control de la evolución del estado del sistema con respecto a su sensibilidad a las variaciones de energías del sistema. Para ser precisos, para un tamaño grande , la evolución de es sensible a variaciones de energía más gruesas, mientras que es sensible a variaciones de energía más finas cuando es pequeña.
El nombre y la inspiración del algoritmo exigen que se incluya una característica interesante relacionada con la variación de temperatura en las características operativas del algoritmo. Esto requiere una reducción gradual de la temperatura a medida que avanza la simulación. El algoritmo comienza inicialmente con un valor alto (o infinito) y luego disminuye en cada paso siguiendo un programa de recocido , que puede ser especificado por el usuario pero debe finalizar hacia el final del presupuesto de tiempo asignado. De esta manera, se espera que el sistema se desplace inicialmente hacia una región amplia del espacio de búsqueda que contiene buenas soluciones, ignorando pequeñas características de la función de energía; luego se desplaza hacia regiones de baja energía que se vuelven cada vez más estrechas y, finalmente, se mueve cuesta abajo de acuerdo con la heurística de descenso más pronunciado .
Para cualquier problema finito dado, la probabilidad de que el algoritmo de recocido simulado termine con una solución óptima global se acerca a 1 a medida que se extiende el programa de recocido. [11] Este resultado teórico, sin embargo, no es particularmente útil, ya que el tiempo requerido para garantizar una probabilidad significativa de éxito generalmente excederá el tiempo requerido para una búsqueda completa del espacio de solución . [12]
El siguiente pseudocódigo presenta la heurística de recocido simulada como se describe anteriormente. Comienza desde un estado s 0 y continúa hasta que se hayan dado un máximo de k max pasos. En el proceso, los vecinos de llamada deben generar un vecino elegido aleatoriamente de un estado dado s ; la llamada random(0, 1) debe seleccionar y devolver un valor en el rango [0, 1] , uniformemente aleatorio . El programa de recocido está definido por la temperatura de llamada ( r ) , que debería producir la temperatura a utilizar, dada la fracción r del presupuesto de tiempo que se ha gastado hasta el momento.
Para aplicar el método de recocido simulado a un problema específico, se deben especificar los siguientes parámetros: el espacio de estados, la función de energía (objetivo) E()
, el procedimiento generador candidato neighbor ()
, la función de probabilidad de aceptación P()
y el programa de recocido temperature()
Y la temperatura inicial init_temp
. Estas elecciones pueden tener un impacto significativo en la eficacia del método. Desafortunadamente, no existen opciones de estos parámetros que sean buenas para todos los problemas y no existe una forma general de encontrar las mejores opciones para un problema determinado. Las siguientes secciones ofrecen algunas pautas generales.
El recocido simulado se puede modelar como un paseo aleatorio en un gráfico de búsqueda, cuyos vértices son todos los estados posibles y cuyos bordes son los movimientos candidatos. Un requisito esencial para la neighbor ()
función es que debe proporcionar un camino suficientemente corto en este gráfico desde el estado inicial hasta cualquier estado que pueda ser el óptimo global: el diámetro del gráfico de búsqueda debe ser pequeño. En el ejemplo anterior del viajante de comercio, por ejemplo, el espacio de búsqueda para n = 20 ciudades tiene n! = 2.432.902.008.176.640.000 (2,4 quintillones) de estados; sin embargo, el número de vecinos de cada vértice son aristas (viniendo de n, elija 20) y el diámetro de la gráfica es .
Para investigar el comportamiento del recocido simulado en un problema particular, puede resultar útil considerar las probabilidades de transición que resultan de las diversas elecciones de diseño realizadas en la implementación del algoritmo. Para cada borde del gráfico de búsqueda, la probabilidad de transición se define como la probabilidad de que el algoritmo de recocido simulado pase al estado cuando su estado actual sea . Esta probabilidad depende de la temperatura actual especificada por , del orden en que la función genera los movimientos candidatos y de la función de probabilidad de aceptación . (Tenga en cuenta que la probabilidad de transición no es simplemente , porque los candidatos se prueban en serie).temperature()
neighbor ()
P()
La especificación de neighbour()
, P()
y temperature()
es parcialmente redundante. En la práctica, es común utilizar la misma función de aceptación P()
para muchos problemas y ajustar las otras dos funciones según el problema específico.
En la formulación del método de Kirkpatrick et al., la función de probabilidad de aceptación se definió como 1 si y en caso contrario. Esta fórmula estaba superficialmente justificada por analogía con las transiciones de un sistema físico; corresponde al algoritmo de Metropolis-Hastings , en el caso de que T=1 y la distribución propuesta de Metropolis-Hastings sea simétrica. Sin embargo, esta probabilidad de aceptación se utiliza a menudo para el recocido simulado incluso cuando la función, que es análoga a la distribución propuesta en Metropolis-Hastings, no es simétrica o no es probabilística en absoluto. Como resultado, las probabilidades de transición del algoritmo de recocido simulado no corresponden a las transiciones del sistema físico análogo, y la distribución de estados a largo plazo a una temperatura constante no necesita tener ningún parecido con la distribución de equilibrio termodinámico sobre los estados de ese sistema. sistema físico, a cualquier temperatura. Sin embargo, la mayoría de las descripciones de recocido simulado asumen la función de aceptación original, que probablemente esté codificada en muchas implementaciones de SA.neighbor ()
En 1990, Moscato y Fontanari, [13] e independientemente Dueck y Scheuer, [14] propusieron que una actualización determinista (es decir, una que no se base en la regla de aceptación probabilística) podría acelerar el proceso de optimización sin impactar en la calidad final. . Moscato y Fontanari concluyen al observar el análogo de la curva de "calor específico" del recocido de "actualización de umbral" procedente de su estudio que "la estocasticidad de la actualización de Metropolis en el algoritmo de recocido simulado no juega un papel importante en la búsqueda de temperaturas cercanas". -mínimos óptimos". En cambio, propusieron que "la suavización del panorama de la función de costos a alta temperatura y la definición gradual de los mínimos durante el proceso de enfriamiento son los ingredientes fundamentales para el éxito del recocido simulado". El método se popularizó posteriormente bajo la denominación de "aceptación de umbral" debido a la denominación de Dueck y Scheuer. En 2001, Franz, Hoffmann y Salamon demostraron que la estrategia de actualización determinista es de hecho la óptima dentro de la gran clase de algoritmos que simulan un paseo aleatorio en el panorama costo/energía. [15]
Al elegir el generador candidato neighbor ()
, se debe considerar que después de algunas iteraciones del algoritmo de recocido simulado, se espera que el estado actual tenga mucha menos energía que un estado aleatorio. Por lo tanto, como regla general, se debe sesgar el generador hacia movimientos candidatos donde la energía del estado de destino probablemente sea similar a la del estado actual. Esta heurística (que es el principio fundamental del algoritmo de Metropolis-Hastings ) tiende a excluir tanto movimientos candidatos muy buenos como muy malos ; sin embargo, los primeros suelen ser mucho menos comunes que los segundos, por lo que la heurística suele ser bastante eficaz.
En el problema del viajante anterior, por ejemplo, se espera que el intercambio de dos ciudades consecutivas en un recorrido de baja energía tenga un efecto modesto en su energía (duración); mientras que intercambiar dos ciudades arbitrarias tiene muchas más probabilidades de aumentar su longitud que de disminuirla. Por lo tanto, se espera que el generador vecino de intercambio consecutivo funcione mejor que el de intercambio arbitrario, aunque este último podría proporcionar un camino algo más corto hacia el óptimo (con intercambios, en lugar de ).
Una afirmación más precisa de la heurística es que se deben probar los primeros estados candidatos para los cuales sea grande. Para la función de aceptación "estándar" anterior, significa que es del orden de o menos. Por lo tanto, en el ejemplo anterior del vendedor ambulante, se podría usar una función que intercambie dos ciudades aleatorias, donde la probabilidad de elegir un par de ciudades desaparece a medida que su distancia aumenta más allá de .neighbor ()
Al elegir el generador candidato neighbor ()
también se debe tratar de reducir el número de mínimos locales "profundos": estados (o conjuntos de estados conectados) que tienen mucha menos energía que todos sus estados vecinos. Estas " cuencas de captación cerradas " de la función de energía pueden atrapar el algoritmo de recocido simulado con una alta probabilidad (aproximadamente proporcional al número de estados en la cuenca) y durante un tiempo muy largo (aproximadamente exponencial de la diferencia de energía entre los estados circundantes y el fondo de la cuenca).
Como regla general, es imposible diseñar un generador de candidatos que satisfaga este objetivo y también dé prioridad a candidatos con energía similar. Por otro lado, a menudo se puede mejorar enormemente la eficiencia del recocido simulado mediante cambios relativamente simples en el generador. En el problema del viajante, por ejemplo, no es difícil exhibir dos recorridos con longitudes casi iguales, de modo que (1) sea óptimo, (2) cada secuencia de intercambios de pares de ciudades que se convierta en pase por recorridos que son mucho más largo que ambos, y (3) se puede transformar volteando (invirtiendo el orden de) un conjunto de ciudades consecutivas. En este ejemplo, y se encuentran en diferentes "cuencas profundas" si el generador realiza sólo intercambios de pares aleatorios; pero estarán en la misma cuenca si el generador realiza cambios de segmento aleatorios.
La analogía física que se utiliza para justificar el recocido simulado supone que la velocidad de enfriamiento es lo suficientemente baja como para que la distribución de probabilidad del estado actual esté cerca del equilibrio termodinámico en todo momento. Desafortunadamente, el tiempo de relajación —el tiempo que hay que esperar para que se restablezca el equilibrio después de un cambio de temperatura— depende en gran medida de la "topografía" de la función energética y de la temperatura actual. En el algoritmo de recocido simulado, el tiempo de relajación también depende del generador candidato, de una manera muy complicada. Tenga en cuenta que todos estos parámetros generalmente se proporcionan como funciones de caja negra para el algoritmo de recocido simulado. Por lo tanto, la velocidad de enfriamiento ideal no se puede determinar de antemano y debe ajustarse empíricamente para cada problema. Los algoritmos de recocido simulado adaptativo abordan este problema conectando el programa de enfriamiento con el progreso de la búsqueda. Otros enfoques adaptativos, como el recocido termodinámico simulado, [16] ajustan automáticamente la temperatura en cada paso en función de la diferencia de energía entre los dos estados, de acuerdo con las leyes de la termodinámica.
A veces es mejor volver a una solución que era significativamente mejor que pasar siempre del estado actual. Este proceso se denomina reinicio del recocido simulado. Para hacer esto configuramos s
y y e
quizás reiniciamos el programa de recocido. La decisión de reiniciar podría basarse en varios criterios. Entre ellos cabe destacar el reinicio basado en un número fijo de pasos, en función de si la energía actual es demasiado alta en comparación con la mejor energía obtenida hasta el momento, el reinicio aleatorio, etc.sbest
ebest
{{cite journal}}
: CS1 maint: multiple names: authors list (link){{cite journal}}
: CS1 maint: multiple names: authors list (link)