粒子群算法的matlab实现

2018.7.19 
粒子群算法
function [xm,fv] = PSO( fitness,N,c1,c2,w,M,D )
%本函数用粒子群算法实现优化
%%%%给定初始化条件
%  c1 学习因子1
%  c2 学习因子2
%  w  惯性权重
%  M  最大迭代次数
%  D  搜索空间维数
%  N  初始化群体个体数目
%  [xm,fv] = PSO( fitness,N,c1,c2,w,M,D )

%%%%%%初始化种群的个体(可以限定位置和速度的范围)%%%%%%
format long;
for i=1:N
    for j=1:D
        x(i,j)=randn; %以正态分布随机初始化位置
        v(i,j)=randn;
    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
    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
%%%%%给出最后计算结果
disp('**********************************************')
disp('目标函数取最小值的自变量:')
xm=pg'
disp('目标函数的最小值为:')
fv=fitness(pg)
disp('**********************************************')

end

用matlab实现的第一个智能算法,应该纪念一下,虽然有些模糊,不过还是大致看懂了。
以前认为非常高大上+困难的东西 或许不过如此
不过越是感到好理解,越能体会到智能算法的有趣和实用性,以及里面蕴含的博大精深的智慧。
明天继续学习遗传算法
智能的魅力,在于有人。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值