• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

PSO粒子群算法及matlab实现

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1原理:

根据鸟类寻食的仿生学,结合个体的最优解和群体的最优解不断地迭代来寻找区域的最优解。
在N维的目标空间中,有m个粒子组成一个群体,
第i个粒子的位置表示为:
每个位置对应一个潜在解,把代入适应函数中即可得到对应的适应值。
粒子个体经过的最好的位置为:
整个群体的最优位置为:
粒子i的速度为:
粒子群位置根据以下公式进行跟新:




PSO的参数选取:
粒子数m,个数越多越容易找到全局最优解,但程序耗时长。
惯性因子w,越大越容易找到全局最优解,但可能对局部的搜索能力不好
加速常数c1和c2,选取无特定规则,一般都选为1.

2程序实现

本程序可以求解一个一维上的最优解,多维可以仿照实现。
代码:

  

clc,clear
%%
%define the function

fitness=inline(\'(2.1*(1-x+2*x.^2).*exp(-x.^2/2))+sin(x)+x\',\'x\');

%%
E0=0.001;
Max_num=50;
particlesize=30;
c1=0.5;
c2=1;
w=0.3;
vc=0.5;
vmax=0.6;
x=-5+10*rand(particlesize,1);
v=1*rand(particlesize,1);
%%
f=fitness(x);
personalbest_x=x;
personalbest_f=f;

[groupbest_f i]=max(personalbest_f);
groupbest_x=x(i);
for j=1:Max_num
       v=w*v+c1*rand*(personalbest_x-x)+c2*rand*(groupbest_x*ones(particlesize,1)-x);
        for kk=1:particlesize
              if v(kk)>vmax
                     v(kk)=vmax;
              else if v(kk)<-vmax
                      v(kk)=-vmax;
                  end
              end
        end
        x=x+vc*v;
     f=fitness(x);
     for kk=1:particlesize
         if f(kk)>personalbest_f(kk)
             personalbest_f(kk)=f(kk);
             personalbest_x(kk)=x(kk);
         end
     end
     [groupbest_f i]=max(personalbest_f);
     groupbest_x=x(i);
     ddd(j)=groupbest_f;
end
   str=num2str(groupbest_f)
   %%
subplot(2,1,1)
  x_0=-5:0.01:5;
  f_0=fitness(x_0);
plot(x_0,f_0,\'r\',\'linewidth\',2);
hold on
plot(groupbest_x,groupbest_f,\'b+\',\'linewidth\',6);
legend(\'所求函数\',\'最优解位置\');
subplot(2,1,2)
plot(1:Max_num,ddd,\'linewidth\',2);
legend(\'最优解的变化\');
xlabel(\'迭代次数\');
ylabel(str);

注:运行时间(i5,8G,win7,64位),1s左右

程序输出:


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi记录类型-结构指针发布时间:2022-07-18
下一篇:
matlab中的input、inline、quadl 函数的使用发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap