PSO速度边界处理问题

PSO速度边界处理问题:

一维:

对于一维单目标优化,边界速度处理是非常简单的,    刚开始先定义一个-1到1的速度区间:vlimit=[-1,1];

  用函数,其实也并不是什么函数,只是修改一下原来的赋值后的变量v,也就是修改速度的意思,例如:

    v(v > vlimit(2)) = vlimit(2);
    v(v < vlimit(1)) = vlimit(1);  

还有比较容易理解的算法:

%     for k=1:N
%     if v(k,:)>vlimit(2)
%         v(k,:)=vlimit(2);
%     elseif v(k,:)<vlimit(1);
%         v(k,:)=vlimit(1);
%     end                                             
%     end

总的来说,只要把可能超过边界的速度值用边界值代替就行了。代替的方法就是赋值。怎么赋值,你自己看着办,方法有很多。

二维:

对于二维单目标优化,边界处理也是能够做到的,只是从一个数,变成了一个二维向量而已,有什么困难的呢?

      for j=1:sizepop

            V(j,find(V(j,:)>Vmax))=Vmax;
            V(j,find(V(j,:)<Vmin))=Vmin;

有find函数,find函数返回的是个数,你用find(V(j,:)>Vmax)返回的是“:”这个数,也就是需要的列数。很简单不是吗?

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值