Recocido simulado

Universidad Central Especialización en mecatrónica industrial Módulo: Optimización de procesos Presentado por: Guillermo

Views 116 Downloads 3 File size 360KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Universidad Central Especialización en mecatrónica industrial Módulo: Optimización de procesos Presentado por: Guillermo Leopoldo Genta Carnelli Yeison Samuel Avendaño Sanchez

1. Algoritmo de recocido simulado El algoritmo de recocido simulado (SA) es un método iterativo que inicia con un cierto estado s. Mediante un proceso particular genera un estado vecino s′ al estado actual. Si la energía, o evaluación, del estado s ′ es menor que la del estado s, se cambia el estado s por s’. Si la evaluación 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 fórmula P(∆f, T) = e ∆f/T Una cualidad de SA es que la temperatura va disminuyendo gradualmente conforme avanza la simulación.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 F_min) i = i+1; % Compruebe si se cumplen los números máximos de ejecución / aceptación 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 solución 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 pequeña probabilidad cuando no se mejora if (DeltaErand ); optimo = ns; E_anterior = E_nueva; aceptar=aceptar+1; else end % Actualizar la solución ó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). Tecnológico de Monterrey. Tomado el 18 de Noviembre del 2016, de http://www.mty.itesm.mx/etie/deptos/m/ma00130/lecturas/m130-19.pdf