• 大小: 2KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-15
  • 语言: 其他
  • 标签: DE  

资源简介

此分享不仅提供了差分进化算法代码,还包含10维测试函数实例

资源截图

代码片段和文件信息

function [ftx_besty_bestFEs] = DE(fpopsizeDGMuCRublb)
%NP  种群数量  
%D   变量的维数  
%G   最大进化代数  
%F   变异算子  
%CR  交叉算子  
%Xs  上限  
%Xx  下限  
FEs = 0;
x = zeros(popsizeD);       %初始种群  
v = zeros(popsizeD);       %变异种群  
u=zeros(popsizeD);       %选择种群  
x=rand(popsizeD).*repmat((ub-lb)popsize1)+repmat(lbpopsize1);  %赋初值  
%计算适应度函数值  
for m=1:popsize
   Ob(m)=f(x(m:));
   FEs = FEs+1;
   if FEs == 1
       ft(FEs) = Ob(m);
   else
       if Ob(m)           ft(FEs) = Ob(m);
       else
           ft(FEs) = ft(FEs-1);
       end
   end
end
%差分操作
for gen=1:G
     %变异操作
     %r1r2r3和m互不相同
     for m=1:popsize
        r1=randi([1popsize]);
        while(r1==m)
            r1=randi([1popsize]);
        end
        r2=randi([1popsize]);
        while(r2==m)||(r2==r1)
            r2=randi([1popsize]);
        end
        r3=randi([1popsize]);
        while((r3==m)||(r3==r1)||(r3==r2))
            r3=randi([1popsize]);
        end
        v(m:)=x(r1:)+Mu*(x(r2:)-x(r3:));
     end
     %交叉操作
     r=randi([1D]);
     for n=1:D
         cr=rand;
         if(cr             u(:n)=v(:n);
         else
             u(:n)=x(:n);
         end
     end
     %边界条件处理
     %边界吸收
    for m=1:popsize
        for n=1:D
            if u(mn)                u(mn)=lb(n);
            elseif u(mn)>ub(n)
                u(mn)=ub(n);
            end
        end
    end
    %选择操作
    for m=1:popsize
        Ob1(m)=f(u(m:));
        FEs = FEs+1;
        if Ob1(m)            ft(FEs) = Ob1(m);
        else
            ft(FEs) = ft(FEs-1);
        end
        if Ob1(m)            x(m:)=u(m:);
            x_best = x(m:);
        end
    end
    for m=1:popsize
        Ob(m)=f(x(m:));
    end
end

y_best=min(Ob);         %最优值
end

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-10-23 10:59  DE\
     文件        2001  2018-05-08 10:23  DE\DE.m
     文件         336  2018-04-10 19:01  DE\fun10.m
     文件         340  2018-05-08 10:22  DE\main.m

评论

共有 条评论