de (2).m

来自「DE 生物进化算法的matlab实现」· M 代码 · 共 33 行

M
33
字号
function y=DE(f,a,b)

F=1;
N=10;
n=length(a);
m=ceil(n/3);    %   

%   随机产生N个初始解
X=rand(n,N).*(b-a);

for k=1:100
    fv=[];
   for i=1:N
       fv(i)=feval(f,X(:,i));
   end
   [ta,tb]=min(fv);
   xd=X(:,tb);
   
   xb=X(:,ceil(rand(1)*N));
   xc=X(:,ceil(rand(1)*N));
   
   u=(F+0.5)*xd+(F-0.5)*X(:,i)+F(xb-xc);
   
   [tc,td]=sort(rand(1,n));
   x_hat=X(:,i);
   x_hat(td(1:m))=u(td(1:m));
   
   if feval(f,x_hat)<feval(f,X(:,i));
       X(:,i)=x_hat;
   end
end
   
   

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?