Anda di halaman 1dari 3

Universidad Central

Especializacin en mecatrnica industrial


Mdulo: Optimizacin de procesos
Presentado por:
Guillermo Leopoldo Genta Carnelli
Yeison Samuel Avendao Sanchez

1. Algoritmo de recocido simulado

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

% Inicio recocido simulado


while ((T > T_min) & (j <= max_rechazos) & E_nueva>F_min)
i = i+1;
% Compruebe si se cumplen los nmeros mximos de ejecucin / aceptacin
if (i >= max_ejecuciones) | (aceptar >= max_aceptados)
% Incremento en numero de iteraciones
T = alpha*T;
totaliter = totaliter + i;
% reset de contadores
i = 1; aceptar = 1;
end
% Evaluaciones de la funcion en la nueva ubicacion
s=0.01*(Ub-Lb);
ns=optimo+s.*randn(1,nd);
E_nueva = fobj(ns);
% Decision de aceptar la nueva solucin
DeltaE=E_nueva-E_anterior;
% Acectar si mejoro
if (-DeltaE > Enorm)
optimo = ns; E_anterior = E_nueva;
aceptar=aceptar+1; j = 0;
end
% Aceptar con una pequea probabilidad cuando no se mejora
if (DeltaE<=Enorm & exp(-DeltaE/(k*T))>rand );
optimo = ns; E_anterior = E_nueva;
aceptar=aceptar+1;
else
end
% Actualizar la solucin ptima estimada
f_opt=E_anterior;
end
% Display de los resultados finales
disp(strcat('Iteraciones: ', num2str(totaliter)));
disp(strcat('Valores optimas para la funcion: ', num2str(optimo)));
disp(strcat('Solucion optima: ', num2str(f_opt)));

function z=fobj(x)
% Funcion Objetivo
z=(x(1).^2)+(x(1)*x(2))+(2*x(2).^2);
Referencias

1. Recocido simulado. (2008). Tecnolgico de Monterrey. Tomado el 18 de


Noviembre del 2016, de http://www.mty.itesm.mx/etie/deptos/m/ma00-
130/lecturas/m130-19.pdf

Anda mungkin juga menyukai