📄 simu_anneal.m
字号:
function simu_anneal(obj_fun, range)
% simu_anneal.m
% function simu_anneal(obj_fun, range)
% Simulated annealing for optimization
% (minimization only) problems
% obj_fun is a dot m file to calculate the
% fitness function
% The first row is the lower limits of parameters
% The second row is the upper limits of parameters
% Revised by PenChen Chou, Aug. 12, 2001
% Original writer: Robert E. King
% Initializations
LB=range(1,:);
UB=range(2,:);
var_n=length(LB);
x=LB+rand(1,var_n).*(UB-LB);
% T_init and T_final
T_final=1e-5;
T_init=max([150 250*rand]);
lumbda=0.95+0.03*rand;
% Iteration
k=1; Tcur=T_init;
X(k,:)=x;
PI(k)=SA_f552(x);
Best_x=x; BEST_PI=PI(k);
while (Tcur>T_final)
x=LB+rand(1,var_n).*(UB-LB);
z=feval(obj_fun,x);
prob=exp(-(z-PI(k))/Tcur);
if (z<PI(k)) | (rand<=prob) % Cooling down
BEST_x=x; PI(k+1)=z; BEST_PI=z;
else
PI(k+1)=PI(k);
end;
Tcur=lumbda*Tcur; % Decrement temperature
X(k+1,:)=x;
k=k+1; % Net iteration
%fprintf('k=%i,PI=%6.2f,BEST=%6.2f,x=[%f %f]\n',k,z,PI(k),BEST_x(1),BEST_x(2));
end;
% Print out the final results
fprintf('[Use of Simulated annealing to find optimum]\n');
fprintf('>>>Best PI=%10.6f\n',BEST_PI);
for I=1:var_n
fprintf(' x(%d)=%10.6f\n',I,BEST_x(I));
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -