📄 de.m
字号:
function [v,xstar]=DE(fun,a,b)
%differential evolution 算法
%by:wutianjun
F=0.5;
N=15;
T=3;
k=0;
n=length(a);
m=ceil(n/2);%指定m为n/2
X=(b-a)*ones(1,N).*rand(n,N);%随机产生N个初始解
while 1
flag=0;
for i=1:N
y=[];
for j=1:N
y(j)=feval(fun,X(:,j));
end
[ia,ib]=min(y(1:N));%找出极小值点
xd=X(:,ib);%取极小值点
xb=X(:,ceil(rand(1)*N));%任取两个解xb,xc
xc=X(:,ceil(rand(1)*N));
u=(F+0.5)*xd+(F-0.5)*X(:,i)+F*(xb-xc);
t=rand(1,n);
[ic,id]=sort(t);
xbar=X(:,i);
xbar(id(1:m))=u(id(1:m));
if feval(fun,xbar)<feval(fun,X(:,i));
X(:,i)=xbar;
flag=1;
end
end
if flag==0
if k>T
break;
end
k=k+1;
else
k=0;
end
end
for j=1:N
y(j)=feval(fun,X(:,j));
end
[ia,ib]=min(y(1:N));
xstar=X(:,ib);
v=feval(fun,xstar);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -