El algoritmo de recocido simulado (SA) es un mtodo iterativo que inicia con un cierto estado s.
Mediante un proceso particular genera un estado vecino s al estado actual. Si la energa, o
evaluacin, del estado s es menor que la del estado s, se cambia el estado s por s. Si la evaluacin
de s es mayor que la de s entonces se puede empeorar eligiendo s en lugar de s con una cierta
probabilidad que depende de las diferencias de las evaluaciones f = f(s) f(s ) y de temperatura
actual del sistema T. La posibilidad de elegir un estado peor al actual es lo que le permite a SA
salir de ptimos locales para poder llegar a los ptimos globales. La probabilidad de aceptar elegir
un peor estado normalmente se calcula por la frmula P(f, T) = e f/T Una cualidad de SA es que
la temperatura va disminuyendo gradualmente conforme avanza la simulacin.1
function Recocido_simulado
% Restricciones
Lb=[-0.1 -0.1];
Ub=[5 5];
nd=length(Lb);
% Parametros y ajustes
T_init =1.0; % Temperatura inicial
T_min = 1e-10; % Temperatura final de parada
F_min = -1e+100;% Valor minimo de la funcion
max_rechazos=250; % Numero maximo de rechazos
max_ejecuciones=150; % Numero maximo de ejecuciones
max_aceptados=15; % Maximo de numeros aceptados
k = 1; % Constante de Boltzmann
alpha=0.95; % Factor de enfriamiento
Enorm=1e-2; % Energia
estimacion=Lb+(Ub-Lb).*rand(size(Lb)); % Estimacion inicial
% Inicializacion de varibles i,j
i= 0; j = 0; aceptar = 0; totaliter = 0;
% Valores iniciales
T = T_init;
E_inicial = fobj(estimacion);
E_anterior = E_inicial; E_nueva=E_anterior;
optimo=estimacion; % valores para estimacion inicial
function z=fobj(x)
% Funcion Objetivo
z=(x(1).^2)+(x(1)*x(2))+(2*x(2).^2);
Referencias