粒子群算法基本原理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.1粒子群算法基本原理
粒子群优化算法昭最原始的工作可以追溯到1987年Reynolds对鸟群社会
系
统Boids (Reyn olds对其仿真鸟群系统的命名)的仿真研究。通常,群体的行
为可以由几条简单的规则进行建模,虽然每个个体具有简单的行为规则,但是却
群体的行为却是非常的复杂,所以他们在鸟类仿真中,即Boids系统中采取了下
面的三条简单的规则:
(1 )飞离最近的个体(鸟),避免与其发生碰撞冲突;
(2)尽量使自己与周围的鸟保持速度一致;
(3)尽量试图向自己认为的群体中心靠近。
虽然只有三条规则,但Boids系统已经表现出非常逼真的群体聚集行为。但Reynolds仅仅实现了该仿真,并无实用价值。
1995 年Kennedy
[46-48]和Eberhart在Reynolds等人的研究基础上创造性地提出了粒子群优化算法,应用于连续空间的优化计算中。Kennedy和Eberhart在
boids中加入了一个特定点,定义为食物,每只鸟根据周围鸟的觅食行为来搜寻食物。Kennedy和Eberhart的初衷是希望模拟研究鸟群觅食行为,但试验结果却显示这个仿真模型蕴含着很强的优化能力,尤其是在多维空间中的寻优。最初
仿真的时候,每只鸟在计算机屏幕上显示为一个点,而“点"在数学领域具有多
种意义,于是作者用"粒子(particle )"来称呼每个个体,这样就产生了基本
[49]
的粒子群优化算法。
假设在一个D维搜索空间中,有m个粒子组成一粒子群,其中第i个粒子
的空间位置为X ( x , x ,x,…,x ) i 1,2,..., m,它是优化问题的一个潜在解,
i i1 i 2 i 3 iD
将它带入优化目标函数可以计算出其相应的适应值,根据适应值可衡量X的优
i
劣;第i个粒子所经历的最好位置称为其个体历史最好位置,记为P ( p , p , p , ... p ) i 1, 2 ,,.相应的
适应值为个体最好适应值Fi ;同
i 1i2 3 i D
时,每个粒子还具有各自的飞行速度V (v ,v ,v ,..., v ) i 1,2,..., m。所有粒
i i1 i 2 i 3 iD
子经历过的位置中的最好位置称为全局历史最好位置,记为
自 身
子 、
基本 PSO 算法步骤如下: (1) 粒子群初始化;
(2) 根据目标函数计算各粒子适应度值,并初始化个体、全局最优值;
(
;3
相(4) 合合断 作否5) 行 否6)更新各粒子历史最优值以
及全局最优值;
根据速度、位置更新公式更新各粒子的速度和位置;
根据目标函数计算各粒子适应度值;
体第终7)跳部分至步社会3
部分,表示 止 大允齢迭代次数。 终 信
息 最 粒
两个在[0, 1]范围内变化的随机数。第 d 维粒子元素的位置变化范围和速度变 X ,min ,X ,max 和 V d ,min ,V d ,max 。迭代过程中,若某一维粒子 d d 元素的X 或V id 超出边界值则令其等于边界 值。
id
粒子群速度更新公式
(4-1)中的第1部分由粒子先前速度的惯性引起,为
惯性”部分;第2部分为 认知”部分,表示粒子本身的思考,即粒子根据
Pg (Pg ,Pg
1
,Pg ,…,Pg D ),相应的适应值为全局历史最优适应值
2
3
。在基本PSO
算法中,对第
n 代粒子,其第 d 维(1 < d < D )元素速度、位置更新迭代如式
(4-1)、(4-2)
n 1
= O
v
id n
v
C 1
r 1
n
(p
id
n r
小
尺
x )
C 2 r 2 (p
id
gd
n — n
x )
id
(4-1)
n 1
n
x x
id
id
n
v
id
件2)
其中:3为惯性权值;C1
和c2都为正常数,称为加速系数; r1和r2是
化范围分别限为
后的研究中引入了惯性权值来改善PSO 算法的局部搜索能力,形成了目前常用的基本PSO算法形式。取较大的3值使得粒子能更好地保留速度,从而能更快地搜索解空间,提高算法的收敛速度;但同时由于速度大可能导致算法无法更好地进行局部搜索,容易错过最优解,特别是过大的 3 会使得PSO 算法速度过大
而无法搜索到全局最优。取较小的 3 值则有利于局部搜索,能够更好地搜索到最优值,但因为粒子速度受其影响相应变小从而无法更快地进行全局搜索,进而影
响算法收敛速度;同时过小 3 值更是容易导致算法陷入局部极值。因此,一个合适的 3 值能有效兼顾搜索精度和搜索速度、全局搜索和局部搜索,保证算法性能。加速系数c1 和c2 代表每个粒子向其个体历史最好位置和群体全局历史最好位置的移动加速项的权值。较低的加速系数值可以使得粒子收敛到其最优解的过程较慢,从而能够更好搜索当前位置与最优解之间的解空间;但过低的加速系数值则可能导致粒子始终徘徊在最优邻域外而无法有效搜索目标区域,从而导致
算法性能下降。较高的加速系数值则可以使得粒子快速集中于目标区域进行搜索,提高算法效率;但过高的加速系数值则有可能导致粒子搜索间隔过大,容易
越过目标区域无法有效地找到全局最优解。因此加速系数对PSO 能否收敛也起
重要作用,合适的加速系数有利于算法较快地收敛,同时具有一定的跳出局部最优的能力。
对于速度更新公式(4-1) 中,若c1 = c2 = 0 ,粒子将一直以当前的速度进行惯性飞行,直到到达边界。此时粒子仅仅依靠惯性移动,不能从自己的搜索经验和其他粒子的搜索经验中吸取有用的信息,因此无法利用群体智能,PSO 算法没有启发性,粒子只能搜索有限的区域,很难找到全局最优解,算法优化性能很差。若c = 0 ,则粒子没有认知能力,不能从自己的飞行经验吸取有效信息,只有社会部分,所以c 又称为社会参数;此时收敛速度比基本PSO 快,但由于不能有效利用自身的经验知识,所有的粒子都向当前全局最优集中,因此无法很好地对整个解空间进行搜索,在求解存在多个局部最优的复杂优化问题时比基本PSO 容易陷入局部极值,优化性能也变差。若c2 = 0 ,则微粒之间没有社会信息共享,不能从同伴的飞行经验中吸取有效信息,只有认知部分,所以 c 又称
为认知参数;此时个体间没有信息互享,一个规模为m 的粒子群等价于m 个1
单个粒子的运行,搜索到全局最优解的机率很小。
PSO 算法中,群体规模对算法的优化性能也影响很大。一般来说,群体规模越大,搜索到全局