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

matlab基本粒子群算法实现(一)

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

算法没有和图像处理直接相关,

不过对于图像分类中的模式识别相关算法,

也许会用到这个优化算法。

不过不管有没有用,

还是得一步一步学起来

算法步骤:

1.首先确定粒子个数与迭代次数。

2.对每个粒子随机初始化位置与速度。

3.采用如下公式更新每个粒子的位置与速度。

Px=Px+Pv*t; %位置更新公式 

Pv=Pv+(c1*rand*(Gx-Px))+(c2*rand*(PBx-Px)); %速度更新公式

 

main.m

[xm,fv]=PSO(@fitness,40,2,2,0.5,100,30)
for i=1:30
    s(i)=0.;
end
for i=1:30
    
    F=0;
    for j=1:30
        F=F+xm(i)^2+xm(i);
    end
    s(i)=F;
end
plot(xm,s,\'*\')
    

 

PSO.m

function [ xm,fv ] = PSO( fitness,N,c1,c2,w,M,D )
%PSO Summary of this function goes here
%   Detailed explanation goes here
format long;
for i=1:N
    for j=1:D
        x(i,j)=randn;
        v(i,j)=rand;
    end
end
for i=1:N
    p(i)=fitness(x(i,:));
    y(i,:)=x(i,:);
end
pg= x(N,:);
for i=1:(N-1)
    if fitness(x(i,:))<fitness(pg)
        pg=x(i,:);
    end
end
for t=1:M
    for i=1:N
        v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:));
        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,:);
        end
    end
    Pbest(t)=fitness(pg);
end
xm = pg\';
fv =fitness(pg);



end

这个就是优化的函数,

就是求它的最小值,

也可能是局部最小值,

fitness.m

function F = fitness( x )
%F Summary of this function goes here
%   Detailed explanation goes here
F=0;
for i=1:30
    F=F+x(i)^2+x(i);

end

  


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
Windows下使用Delphi编写系统服务发布时间:2022-07-18
下一篇:
Delphi XE 10 跨平台三层数据库应用教程发布时间: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