⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simu_anneal.m

📁 书籍代码:遗传演算法原理与应用_活用MATLAB(Source Code)
💻 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 + -