计算智能——粒子群算法的寻优算法

粒子群优化算法是一种简单易实现的全局寻优算法,常用于函数优化等领域。算法通过模拟鸟群寻找食物的过程,利用粒子的当前位置、个人最佳位置和全局最佳位置来更新速度和位置,以逐步接近最优解。适应值和学习因子影响算法的性能,种族规模和维度也会影响搜索精度和速度。
摘要由CSDN通过智能技术生成

粒子群算法的寻优算法

1.算法介绍

粒子群优化算法的基本思想是通过群体中个体之间的协作和信息共享来寻找最优解。
PSO的优势在于简单容易实现并且没有许多参数的调节。目前已被广泛应用于函数优化、神经网络训练、模糊系统控制以及其他遗传算法的应用领域。

1.1问题提出

设想这样一个场景:一群鸟在随机的搜索食物。 在这个区域里只有一块食物,所有的鸟都不知道食物在哪。但是它们知道自己当前的位置距离食物还有多远。 那么找到食物的最优策略是什么?最简单有效的就是搜寻目前离食物最近的鸟的周围区域。

1.2问题抽象

鸟被抽象为没有质量和体积的微粒(点),并延伸到N维空间,粒子在N维空间的位置表示为矢量Xi=(x1,x2,…,xN),飞行速度表示为矢量Vi=(v1,v2,…,vN)。每个粒子都有一个由目标函数决定的适应值(fitness value),并且知道自己到目前为止发现的最好位置(pbest)和现在的位置Xi。这个可以看作是粒子自己的飞行经验。除此之外,每个粒子还知道到目前为止整个群体中所有粒子发现的最好位置(gbest)(gbest是pbest中的最好值)。这个可以看作是粒子同伴的经验。粒子就是通过自己的经验和同伴中最好的经验来决定下一步的运动。

1.3算法描述

PSO初始化为一群随机粒子(随机解)。然后通过迭代找到最优解。在每一次的迭代中,粒子通过跟踪两个“极值”(pbest,gbest)来更新自己。
在找到这两个最优值后,粒子通过下面的公式来更新自己的速度和位置。
i=1,2,…,M,M是该群体中粒子的总数;Vi 是粒子的速度; pbest和gbest如前定义; rand()是介于(0、1)之间的随机数; xi是粒子的当前位置。c1和c2是学习因子,通常取c1= c2=2 在每一维,粒子都有一个最大限制速度Vmax,如果某一维的速度超过设定的Vmax ,那么这一维的速度就被限定为Vmax 。( Vmax >0)以上面两个公式为基础,形成了后来PSO 的标准形式。

2.基本流程

Step1:初始化一群微粒(群体规模为m),包括随机位置和速度;

Step2:评价每个微粒的适应度;

Step3:对每个微粒,将其适应值与其经过的最好位置 pbest作比较,如果较好,则将其作为当前的最好位置pbest;

Step4:对每个微粒,将其适应值与其经过的最好位置 gbest作比较,如果较好,则将其作为当前的最好位置gbest;

Step5:根据(2)、(3)式调整微粒速度和位置;

Step6:未达到结束条件则转Step2。

迭代终止条件根据具体问题一般选为最大迭代次数Gk或和微粒群迄今为止搜索到的最优位置满足预定最小适应阈值。

3.代码实现

POS:

%% 清空环境
clc
clear

%% 参数初始化
%粒子群算法中的三个参数
c1 = 1.49445;%加速因子
c2 = 1.49445;
w=0.8   %惯性权重

maxgen=10
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值