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

📄 de.m

📁 DE 生物进化算法的matlab实现
💻 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 + -