粒子群入门(一)

目录

一、启发式算法

二、粒子群算法

三、流程图

四、代码

五、搜索最优过程

六、总结


一、启发式算法

1.定义

利用中间信息改进搜索策略。

2、特点

有助于找到问题的最优解,但不保证找到最优解称为启发式算法(对结果)

任何有助于加速求解过程和找到较优解的方法称之为启发式算法

二、粒子群算法

粒子群算法,其全称 为粒子群优化算法 (Particle Swarm Optimization,PSO) 。它是通过模 拟鸟群觅食行为而发展起来的一种基于群体协作的搜索算法。

这类博客介绍很多了,就不详细介绍

三、流程图

四、代码

clear;clc
%预测参数
n=10;%粒子数
narvs=1;%变量个数、
c1=2;%个体学习因子
c2=2;%群体学习个数
vmax=1.2;%粒子速度
x_lb=-3;%下界
x_ub=3;%上界
w=0.9;%惯性权重
K=50;%迭代个数

%初始化位置和速度
x=zeros(n,narvs);
for i=1:narvs
    x(:,i)=x_lb+(x_ub-x_lb)*rand(n,1);%初始化位置
end
v=-vmax+2*vmax.*rand(n,1);%初始化速度

%计算适应度
fit=zeros(n,1);
for i=1:n
   fit(i)=fun1(x(i,:)); 
end
pbest=x;
ind=find(fit==max(fit),1);
gbest=x(ind,:);


%迭代
for i=1:K
    for i=1:n
        v(i,:)=w*v(i,:) + c1*rand(1)*(pbest(i,:)-x(i,:)) + c2*rand(1)*(gbest-x(i,:));
        for j=1:narvs
        if v(i,j)<-vmax(j)%更新速度与位置
            v(i,j)=-vmax(j);
        elseif v(i,j)>vmax(j)
               v(i,j)=vmax(j)
        end
        x(i,:)=x(i,:)+v(i,:);
      for j=1:narvs
        if x(i,j)<x_lb
             x(i,j)=x_lb;
        elseif  x(i,j)>x_ub
             x(i,j)=x_ub;
        end
      end
      end  
        %重新计算第i个粒子的适应度
        fit(i) = fun1(x(i,:));
         %如果第i个粒子的适应度大于  这个  粒子迄止为今找到的最佳位置的适应度
         if fit(i)>fun1(pbest(i,:))
             pbest(i,:)=x(i,:);
         end
         %如果第i个粒子的适应度大于  所有  粒子迄止为今找到的最佳位置的适应度
         if fun1(pbest(i,:))>fun1(gbest)
             gbest=pbest(i,:);
         end
         Y(i)=fun1(x(i))
    end
    fitnessbest(d)=fun1(gbest);
    pause(0.1)
    plot(X,y,'r')
    hold on
    scatter(x,Y','b')
    hold off
    

end
    disp(['优化完成']);   
    disp(['最优值为:',num2str(fun1(gbest)),'  x为:',num2str(gbest)]);

五、搜索最优过程

粒子群最优

六、总结

        看懂原理和代码很简单,很容易上手。作为入门新手,还是要自己敲几遍。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值