当前位置:首页 期刊杂志

一种基于增长因子的粒子群算法

时间:2024-12-29

杜玉平

(山西朔州师范高等专科学校 数学与计算机系,山西 朔州 036000)

Eberhart和Kennedy通过观察鸟类、鱼类种群的捕食活动,总结出了一种优化算法——粒子群算法(Particle Swarm Optimization,PSO)[1].后来,它被广泛应用于函数优化等领域.

粒子群算法存在缺陷:过早局部收敛,解的精度也不高.因此,文中在基于原始PSO算法,在粒子位置每一次更新时,引入一个增长因子,得到一种基于增长因子的粒子群算法(G-PSO).新算法在提高收敛进度和寻优成功率方面是可行的,全局搜索性能强.

1 粒子群优化算法(PSO)

PSO算法开始需随机给出一个群落,即设在D维空间,随机给出m个粒子, 粒子i的位置是xi=(xi1,xi2,…,xiD),i=1,2,…,m.xi所获取的目标函数值为粒子i的适应度值.粒子i的行进速度是vi=(vi1,vi2,…,viD) ,粒子i目前的最好位置是pbi=(pbi1,pbi2,…,pbiD), 目前整个群体中的最佳位置gb=(gb1,gb2,…,gbD) .(1)、(2)式是粒子的速度、位置的计算公式[2]:

(1)

(2)

其中,k=1,2,…,n是运行代数,i=1,2,…,m是粒子数,c1和c2是学习系数,d=1,2,…,D是向量维数;vid∈[vmin,vmax],vmin和vmax是常数,R1和R2是介于[0,1]之间的随机数.

2 基于增长因子的粒子群算法(G-PSO)

文献[3]给出一种新的遗传算法,使算法的寻优成功率得到提高.从这种算法得到启发,给出了一种基于增长因子的粒子群算法(G-PSO).具体做法如下:

1)增长因子:

(3)

其中:step(0),step(∞)为增长因子的初始数和结束数,α为冷却速度,为0时就是固定概率.

2)概率p(k):

(4)

图1 G-PSO算法流程图

其中:p(0),p(∞)为初始概率数和最终概率数,γ为冷却速度,等于0时相当于固定概率.

3) 粒子位置的变更计算公式如下: 以概率p(k)变更粒子位置

(5)

(6)

由此,我们提出的基于增长因子的粒子群算法(G-PSO),是在修正粒子位置时适当加了一个增长因子,其实质是增加一次局部方向搜索以加速收敛.通常在算法的早期阶段,采用较大的增长因子让最优解离粒子很近,而在算法进行的末期,需在小范围内搜索,进而设计较小的增长因子,这样可以提高解的精度性.这种算法的流程图见图1.

3 数值实验

将G-PSO算法和另外两种算法(收缩因子的PSO、惯性因子的PSO)相结合进行结果对比.选取四个多峰函数(求最小值)来测试 .

1)Griewank函数

(7)

2)Rosenbrock函数

(8)

3)Ackley函数

(9)

4)Rastrigrin函数

(10)

以上函数都是D维,函数(7)、(9)、(10)有许多局部极值点,函数(8)是很难得出最小值的,我们知道,零是他们的最小值[4].

带收缩因子的PSO[5]如下所示:

带惯性因子的PSO[6]如下所示:

从表1、图2、图3、图4、图5可以看出,在解的精确性和全局收敛性方面,算法G-PSO较其他两种算法优势更加明显.具有惯性因子和具有收缩因子的PSO算法全局优化成功率低,而G-PSO算法全局寻优成功率较高.

表1 三种算法迭代30次的函数解得平均最优值

图2 Griewank函数xi∈-50,50 ,D=30,30次平均最佳适应度进化曲线图3 Rosenbrock函数xi∈-100,100 ,D=30,30次平均最佳适应度进化曲线

图4 Ackley函数xi∈-50,50 ,D=30,30次平均最佳适应度进化曲线图5 Rastrigrin函数xi∈-5.12,5.12 ,D=30,30次平均最佳适应度进化曲线

4 结论

本文给出了一种基于增长因子的粒子群算法(G-PSO).实验表明,G-PSO算法与具有收缩因子和具有惯性因子PSO算法相比,改善了G-PSO算法的优化能力和寻优成功率.本文作者结合自己所学知识提出了一种简单的增长因子,因子不同,算法操作也会不同,进而优化效果也不同,希望同行们继续对粒子群算法进行研究.

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!