差分进化算法和粒子群算法有什么区别?

如果两者都是智能演化算法,都是具有突变、交叉、选择部分组成,原理都比较简单。

先看一下两者的原理:

差分进化原理伪代码(matlab):

%differential evolution algorithm
P=rand(Np,D) ;%初始化种群
for k=1:iter  
   r1=1;r2=1
   for i=1:Np
   while r1==r2||r1==i||r2==i
    r1=ceil(rand(Np,D));
     r1=ceil(rand(Np,D));
    for j=1:D
     v(i,j)=x(i,j)+F*(x(r1,j)-x(r2,j)); %突变
    if rand(0,1)<Cr                     %交叉
       u(i,j)=v(i,j); 
       else
        u(i,j)=x(i,j);
     end
     if f(u(i,j))<f(x(i,j))        %选择
        x(i,j)=u(i,j);
      else
        x(i,j)=x(i,j);
     end
 end
end

粒子群算法原理伪代码(matlab):

for i=1:N
    for j=1:D
        x=xmin+rand(N,D)*(xmax-xmin); %随机初始化位置
        v=rand(N,D); %随机初始化速度
    end
end

%------先计算各个粒子的适应度,并初始化Pi和Pg----------------------
for i=1:N
    p(i)=fitness(x(i,:));  %计算初始粒子的适应度值
    y(i,:)=x(i,:);         %个体极值中的变量值等于粒子的初始值---为了后期进行保存全局最优值
end
pg=x(N,:);           %Pg为全局最优值---将初始位置的最后一列元素赋给全局最优值---目的在于保存全局最优值
for i=1:(N-1)
    if fitness(x(i,:)) <fitness(pg)   
        pg=x(i,:);          %更新全局最优值,保存最优值
    end
end

%------进入主要循环,按照公式依次迭代,直到满足精度要求------------
for t=1:M   %做一个主循环,用于迭代
      time(t)=t;
    for i=1:N     %更新速度、位移
        v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:));
        if v(i,:)<xmin           %做防止越界
            v(i,:)=xmin;
        end
            if v(i,:)>xmax
                v(i,:)=xmax;
            end 
        x(i,:)=x(i,:)+v(i,:);     %更新之后的点
        
        if fitness(x(i,:))< p(i)      %使用选择函数
            p(i)=fitness(x(i,:));
            y(i,:)=x(i,:);%更新个体极值
            
        end
        if p(i)<fitness(pg)           %选择保存最优值
            pg=y(i,:);
           % pg=x(i,:);
        end
    end
    Pbest(t)=fitness(pg);     %将全局最优值赋给Pbest
end

从上可以看出,两者的不同之处不多,就基本上在突变和交叉方式上不同!

从编程上来看,两者都比较简单,在处理问题上,差分进化算法效果要强一点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋刀鱼程序编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值