欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

优化算法笔记(四)粒子群算法(2)

最编程 2024-02-11 16:43:05
...

(已合并本篇内容至粒子群算法(1))

3.粒子群算法模型

介绍完了粒子群算法的流程,再来详细介绍一下粒子群算法的模型。
鸟群有三个决定其搜索结果的参数
C1:自我学习因子
C2:全局学习因子
W:惯性系数
maxV:最大速率。
对于每只鸟,有两个属性:
位置:X_i^t=(x_{i,1}^t,x_{i,2}^t,...,x_{i,D}^t)
速度:V_i^t=(v_{i,1}^t,v_{i,2}^t,...,v_{i,D}^t)
其中t表示第t次迭代(第t次开会),i表是这只鸟的序号是i,D表示搜索空间的维度,对于鸟群来说D=2(在平面内搜寻)。
其速度更新公式如下:
v_{i,d}^{t+1}=v_{i,d}^t+r_1C_1(P_{i,d}^t-x_{i,d}^t)+r_2C_2(G_{i,d}^t-x_{i,d}^t)
r_1,r_2表示均匀分布在(0,1)内的随机数。
位置更新公式如下:
x_{i,d}^{t+1}=x_{i,d}^t+v_{i,d}^{t+1}

4.实验初步

上面都是些什么鬼,完全看不懂……,很正常,下面我们来个例子看看上面那些都是什么东西。
C1:自我学习因子,就是一只鸟飞向自己到过的最优位置的权重,可以理解为C1越大,该鸟飞向自己到过的最优位置的意愿越强烈。
C2:全局学习因子,也叫社会学习因子,即一只鸟飞向群体到过的最优位置的权重, C2越大,该鸟飞向群体到过的最优位置的意愿越强烈。


如上图,假设随机变量r1=r2=1,如果该鸟当前速度V=0,C1=C2=1时,,则该鸟的速度为A->B,它将飞到B点,若C1=0,C2=1,则该鸟将飞到G点,若C1=1,C2=0,则鸟将飞到P点。

一般,取C1=C2=2,由于r1和r2为(0-1)的随机数,在速度V=0的情况下,该鸟可能从点A飞到平行四边形ADEC内的任一位置,其中AG=GD,AP=PC。点B为该鸟飞向的期望位置。
W为惯性系数,即鸟在下一次飞行时将会以上一次的速度为基础,根据自己的意愿的出最终的速度。
举个简单的例子,搜索平面内距点M最近的点。这是一个二维的问题,假设M的坐标为(a,b),我们可以该问题转化为求使的值最小的一组解,那么粒子群算法的适应度函数为。
实验开始了

参数
问题维度(维度) 2
鸟的数量(种群数) 20
开会次数(最大迭代次数) 50
C1 2
C2 2
W 1
maxV 5
取值范围 (-100,100)

为了方便求解我们设M点为原点,即a=b=0。


此时问题为在上图的区域内寻找距原点最近的点的坐标。我们看一下粒子群算法的寻找过程。

可以发现所有的小鸟都向着我们的目标点不断的靠近。它们最终收敛在了一个很小的范围内。我们所得到的最终的结果是(0.01559301434688,-0.113289020661651),该点距原点距离为的平方为0.014876507,虽然很近了,但这可不是一个较好的结果。
虽然小鸟们已经聚集在了最优点附近的小范围内,但却没有进一步向原点靠近。这是为什么呢,下一节我们一起来研究一下。
目录
上一篇 优化算法笔记(三)粒子群算法(1)
下一篇 优化算法笔记(五)粒子群算法(3)

推荐阅读