APP下载

基于改进收缩因子的粒子群优化算法

2022-05-29王鹏飞任丽佳

电子科技 2022年5期
关键词:适应度惯性粒子

王鹏飞,任丽佳,高 燕

(上海工程技术大学 电子电气工程学院,上海 201620)

粒子群优化(Particle Swarm Optimization,PSO)算法[1-3]是一种生物启发式进化算法[4],其运行机制类似于模拟退火算法[5],采用迭代寻优的方式,从随机解开始寻找最优解[6-7],其解的质量根据适应度函数值[8]来评价。该算法利用粒子朝向当前最优解的方式不断迭代来寻找全局最优解。和遗传算法[9-11]相比,PSO不需要进行生物学上的交叉、变异操作,较易实现,寻找最优值的精度更高,收敛速度快,已被大量使用于工程实践领域。

虽然PSO算法存在诸多的优势,但是在实际应用中还是会出现早熟[12]、收敛差[13]等问题。为了减少这些问题对算法的影响,本文提出了一种基于改进压缩因子[14]的粒子群优化(Fitness Particle Swarm Optimization,FPSO)算法。该算法引入新的压缩因子方程,改进速度迭代公式,减少了因学习因子设置不当对算法造成的影响,可以有效规避过多粒子长时间处于某个局部范围的现象,避免算法早熟,提升了算法的收敛速度与收敛性能。

1 传统PSO算法

在原始PSO算法中,需要两个N维的向量在一个N维的空间中进行搜索。

第i个粒子的位置可表示为

xi=(xi1,xi2,…,xiN)T

(1)

速度为

vi=(vi1,vi2,…,viN)T

(2)

在找到两个最优解之后,PSO算法中粒子速度与位置的更新计算式为

(3)

(4)

2 FPSO算法流程

本文提出的FPSO优化算法的基本原理是:速度优化计算式有两个重要的参数值c1和c2。c1代表粒子自身的经验,c2代表其它粒子的经验,两者不仅影响粒子的运动轨迹,还作为桥梁为粒子群之间进行信息传递,并反映粒子群间信息的交流情况。粒子的寻优范围受c1的值影响较大,想要避免粒子过多地在局部范围内游走,c1的参数值不可过大。除此之外,c2影响着粒子的收敛速度。若c2设置过大,粒子容易陷入局部最优,过早收敛于局部最优点。为了让算法的全局与局部搜索能力达到均衡的表现,需要合理控制粒子的飞翔速度[18]。本文引入改进收缩因子φ来对c1和c2这两个学习因子做出参数限制,使学习因子的值不会过大,均衡了算法收敛性能。

收缩因子为

(5)

利用其优化后的新速度计算式为

(6)

其中,c=c1+c2,且c>2 。

新方法在不改变惯性权重对速度变化的影响效力下,通过引入新的压缩因子改善了速度更新式。该方法通过提升分母的数值比重,使得收缩因子的收敛速度变快,针对过大的学习因子设置更快的调节能力,使c1和c2的值能够被控制在合理范围,提高了搜索空间的多样性,增强了粒子向目标逼近的搜索能力,防止过早收敛。本文将惯性权值的PSO与FPSO算法的w的变化情况进行对比,结果如图1和图2所示。

图1 惯性权值PSO算法w值迭代变化曲线Figure 1. Iterative change curve of w value of inertial weight PSO algorithm

图2 FPSO算法w值迭代变化曲线Figure 2. Iterative change curve of w value of FPSO algorithm

由图1和图2可看出,惯性常数方法通常采用惯性权值随更新代数增加而递减的策略。在算法后期,由于惯性权值过小,会失去微粒探索新区域的能力,而FPSO算法则不存在此问题,因此相比于权重系数w,学习因子能更加有效地控制、约束微粒的飞行速度,增强算法的局部搜索能力。

FPSO的具体步骤如下:

步骤2利用各自测试函数的函数关系式作为测试函数,计算粒子i的适应度值f(i);

步骤3计算每个粒子的适应度函数值f(i),并将它和个体极值Pbest(i)比较。如果f(i)>Pbest(i),则用f(i)替换Pbest(i);

步骤4将步骤3中的每个粒子的f(i)和Gbest(i)比较。如果f(i)>Gbest(i),则用f(i)替换Gbest(i);

步骤6判断是否执行结束操作(误差值达到理想范围或者M值达到最大),如果满足则结束程序运行,否则返回步骤2继续执行。

FPSO的具体流程如图3所示。

图3 FPSO流程图Figure 3. Flow chart of FPSO

3 实验结果分析

运用两个单峰函数和3个多峰函数来验证FPSO算法的性能,求函数的极值。

两个单峰函数为Sphere函数和Quadric函数,如式(7)和式(8)所示。

(7)

(8)

多峰函数为Ackley函数、Griewank函数和Rastrigin函数,分别如式(9)~式(11)所示。

(9)

(10)

(11)

这5个函数[19]是常用的PSO算法测试函数,其寻找全局最优解的难易程度逐渐加深,且均在xi=(0,0,…,0)的位置取得极值。利用本文改进后的算法对这5个函数寻优并与两种常见的粒子群算法进行对比,能够较为直观地反映FPSO的收敛性和时效性。

按如下方式进行初始化参数:粒子维度M设置为20,种群规模size设置为50,最大迭代次数为1 000,惯性权重c1=c2采用线性衰减策略,初始值为0.8,线性衰减的最小值为0.3。为了验证收缩因子对算法全局收敛能力与寻优时间缩短的提升,学习因子分别取值2、3、4来进行实验,并与PSO算法及骨干粒子群算法(Bare Bones PSO,BBPSO)进行对比。每种测试函数都进行了50次实验,取平均值后的结果如表1所示。

表1 测试函数寻优均值

从表1可以看出,相较于PSO及BBPSO算法, FPSO算法寻找到的各测试函数的最优值更接近实际最优值。为了更直观地体现FPSO在寻优上的性能提升,取5个函数在第30次、学习因子取值为2的实验结果及运行时间进行说明,如图4~图8及表2所示。

图4 Sphere函数对比图Figure 4. Comparison chart of Sphere function

图5 Quadric函数对比图Figure 5. Quadric function comparison chart

图6 Ackley函数对比图Figure 6. Comparison chart of Ackley function

图7 Griewank函数对比图Figure 7. Griewank function comparison diagram

图8 Rastrigin函数对比图Figure 8. Rastrigin function comparison diagram

表2 学习因子为2时的各方法运行时间

从图4~图8及表2可以看出,在5种测试函数寻优下,FPSO的表现均优于另外两种算法。FPSO收敛速度快,基本在100代内就能快速收敛,且适应度值平滑变化,未出现明显陷入局部最优的情况,耗时短于PSO及BBPSO算法,在全局和局部的寻优上都能达到不错的效果,体现了算法寻优性能的均衡性。针对PSO寻优效果不佳的Ackley函数,FPSO也能快速收敛并接近最优解。根据表1可以发现,不同学习因子对FPSO寻优的影响不大,学习因子较大时,FPSO依旧有不错的表现。该结果表明FPSO能够有效避免加速度系数及最大速度等参数过大导致粒子群错过最优解的情况,且算法不收敛的问题有了明显改善,体现了算法的性能。

4 结束语

本文针对传统PSO算法不收敛,可能会错过全局最优解的问题,提出了一种基于改进压缩因子的PSO优化算法。通过引入新的压缩因子方程,改进速度迭代公式,减少了因学习因子设置不当对算法造成的影响。在测试中,4个受测对象的寻优结果表明优化后的算法的收敛速度得到了提升,且其适应度值好于传统PSO算法,更接近于真实值,更符合实际工程应用需求。

猜你喜欢

适应度惯性粒子
改进的自适应复制、交叉和突变遗传算法
基于KF-LESO-PID洛伦兹惯性稳定平台控制
碘-125粒子调控微小RNA-193b-5p抑制胃癌的增殖和侵袭
基于Matlab GUI的云粒子图像回放及特征值提取
一种用于抗体快速分离的嗜硫纳米粒子的制备及表征
启发式搜索算法进行乐曲编辑的基本原理分析
问:超对称是什么?
基于人群搜索算法的上市公司的Z—Score模型财务预警研究
无处不在的惯性
对惯性的认识误区