西安建大科技/总第 62 期/2005 第 2 期
● 科研论文
粒子群优化算法及其应用
于 帆 *,范 娜
(西安建筑科技大学,陕西西安 710055)
【摘要】粒子群优化(PSO)算法是一种新颖的演化算法,它属于一类随机全局优化技术,PSO 算法
通过粒子间的相互作用在复杂搜索空间中发现最优区域。PSO 的优势在于简单而又功能强大。本
文介绍了基本的 PSO 算法、研究现状及其应用,并讨论将来可能的研究内容。
关键词:粒子群优化算法;演化算法;群体智能
1. 1 引言
从 20 世纪 90 年代初,就产生了模拟自
然 生 物 群 体 (swarm) 行 为 的 优 化 技 术 。
Dorigo等人从生物进化的机理中受到启发,
的,但是整个生物群体却表现出处理复杂问
题的能力,群体智能就是这些团体行为在人
工智能问题中的应用。粒子群优化(PSO)最
初是处理连续优化问题的,目前其应用已扩
通过模拟蚂蚁的寻径行为,提出了蚁群优化
展到组合优化问题[2]。
方法;美国学者R.C.Eberhart和J.Kennedy
于 1995 年 提 出 的 粒 子 群 优 化 (Particle
Swarm Optimization)算法是基于对鸟群、鱼
群的模拟[1]。这些被称为群体智能(Swarm
intelligence)。通常单个自然生物并不是智能
同遗传算法(Genetic Algorithm,GA)、
蚁群优化等大多数进化计算方法一样,PSO
也是一种基于群体的优化方法。但与其它进
化计算方法相比,PSO 的主要特点为:l)每
一个体(称为一个粒子)都被赋予了一个随机
* 作者简介:于帆,(1976— )女,内蒙古赤峰市人,硕士系统工程专业,研究方向,优化技术研究
20
速度并在整个问题空间中流动;2)个体具有
不断地修正自己的前进方向和速度大小,从
记忆功能;3)个体的进化主要是通过个体之
而形成群体寻优的正反馈机制。PSO 算法就
间的合作与竞争来实现的。作为一种高效并
是这样依据每个粒子对环境的适应度将个
行优化方法,PSO 可用于求解大量非线性、
体逐步移到较优的区域,并最终搜索、寻找
不可微和多峰值的复杂优化问题,再加上
到问题的最优解。PSO 算法具有鲜明的生物
PSO 算法的程序实现异常简洁,需要调整的
社会背景:认知行为和社会行为,即在寻求一
参数少,因而发展很快,出现了多种改进
致的认知过程中,个体往往记住它们的信
PSO 算法,并已应用于许多科学和工程领域,
念,同时考虑其它同伴的信念,当个体察觉
得到了众多学者的重视和研究。
同伴的信念较好时,将进行适应性调整。
2. 2 粒子群优化算法介绍
在PSO算法中,用粒子的位置表示待优
2.1 算法原理
化问题的解,每个粒子性能的优劣程度取决
PSO 算法不像遗传算法那样对个体进
于待优化问题目标函数确定的适应值,每个
行选择、交叉和变异操作,而是将群体中的
粒子由一个速度矢量决定其飞行方向和速
每个个体视为多维搜索空间中一个没有质
率大小。设在一个d维的目标搜索空间中,
量和体积的粒子(点),这些粒子在搜索空间
有m个粒子组成一个群体,其中,在第t次迭
中以一定的速度飞行,并根据粒子本身的飞
代 时 粒 子 i 的 位 置 表 示 为 Xi(t)=(xi1(t) ,
行经验以及同伴的飞行经验对自己的飞行
xi2(t),…,xid(t)),相应的飞行速度表示为
速度进行动态调整,即每个粒子通过统计迭
Vi(t)=(vi1(t),vi2(t),…,vid(t))。开始执行PSO
代过程中自身的最优值和群体的最优值来
算法时,首先随机初始化m个粒子的位置和
21
速度,然后通过迭代寻找最优解,在每一次
细搜索以获得高精度的解;c
1、c2:为两个学习
迭代中,粒子通过跟踪两个极值来更新自己
因子,一般取为 2;randl和rand2 为两个均匀
的速度和位置:一个极值是粒子本身迄今搜
分布在(0,l)之间的随机数;i=1,2,…,m;
索到的最优解,称为个体极值,表示为
k=1,2,…,d。另外,粒子在每一维的速
Pi(t)=(pi1(t),pi2(t),…,pid(t));另一个极值是
度Vi都被一个最大速度Vmax所限制。如果当
整个粒子群到目前为止找到的最优解,称为
前粒子的加速度导致它在某一维的速度超
全局极值,表示为Pg(t)=(pg1(t),pg2(t),…,
过该维上的最大速度Vmax,则该维的速度被
pgd(t))。在第t+1 次迭代计算时,粒子i根据
限制为最大速度。式①中第 1 部分可理解为
下列规则来更新自己的速度和位置:
粒子先前的速度或惯性;第 2 部份可理解为
Vik(t+l)= ω ν ik (t)+c1 randl (pik(t) -
粒子的“认知”行为,表示粒子本身的思考能
xik(t))+c2
rand2
①
(pgk(t) - xik(t))
力;第 3 部分可理解为粒子的“社会”行为,表
示粒子之间的信息共享与相互合作。
Xik(t+l)=xik(t)+ νik (t+l) ②
2.2 算法流程
式中ω为惯性权重,ω取大值可使算法
标准PSO算法流程[2]如下:
具有较强的全局搜索能力,ω取小值则算法
倾向于局部搜索。一般的做法是将ω初始取
0.9 并使其随迭代次数的增加而线性递减至
0.4,这样就可以先侧重于全局搜索,使搜索
空间快速收敛于某一区域,然后采用局部精
22
(1)随机初始化粒子群体的位置和速度;
通常是在允许的范围内随机产生的,每个粒
子的 pbest 坐标设置为其当前位置,且计算
出其相应的个体极值(即个体的适应度值),
而全局极值(即全局的适应度值)就是个体极
值中最好的,记录该最好值的粒子序号,并将
达到则停止计算。PSO 算法可用伪代码表示
gbest 设置为该最好粒子的当前位置;
如下:
(2)计算每个粒子的适应值;
初始化粒子群;
(3)对每个粒子,将其适应值与个体极值
DO
进行比较,如果较优,则更新当前的个体极
值;
(4)对每个粒子,将其适应值与全局极值
For 每个粒子
计算其适应度;
If (适应度优于粒子历史最佳值)
用Xi更新历史最佳个体Pi;
End
选取当前粒子群中最佳粒子;
进行比较,如果较优,则更新当前的全局极
If (当前最佳粒子优于群历史最佳粒子)
值;
(5)根据式①、②,更新每个粒子的位置
和飞行速度;
(6)如未达到预先设定的停止准则(通常
设置为最大迭代次数),则返回步骤(2),若
用当前群最佳粒子更新Pg;
For 每个粒子
按式①更新粒子速度;
按式②更新粒子位置;
End
While 最大迭代数未达到或最小误差未
达到。
粒子群优化算法流程图见图 1:
初始化粒子速度及位置
计算粒子适应度
否
否
是
Present 优于 pbest
Present=pbest
23
Present 优于 gbest
否
是
Present=gbest
是
更新粒子速度及位置
算法收敛准则满足?
输出 gbest
图 1 粒子群优化算法框架图
3.
3 粒子群优化算法的研究现状
受到人工生命研究结果的启发,粒子群
算法(PSO)的基本概念源于对鸟群和鱼群捕
食行为的社会模型的模拟。由于 PSO 算法
概念简单,实现容易,短短几年时间,PSO
算法便获得了很大的发展,出现了很多改进
PSO 算法,并且已经应用于多个科学和工程
领域。目前已被“国际演化计算会议”(CEC)
列为讨论专题之一。但由于 PSO 算法建立
在对社会模型仿真的基础上,因而在方法提
出 初 期 并 没 有 严 格 的 数 学 基 础 , 随 着
M.Clerc 和 Van den Bergh 等人研究成果的
24
公开发表,PSO 算法的严格数学基础正在逐
步建立。
基本 PSO 算法是函数优化的有力工具,
其优点是收敛速度快且需设置的参数较少;
其缺点是易陷入局部极小点,且搜索精度不
高。据此当前典型的改进算法有:自适应
PSO 算法、模糊 PSO 算法、杂交 PSO 算
法、混合粒子算法(HPSO)、离散 PSO 算法
等等。
其中自适应和模糊 PSO 算法是 Shi,
Eberhart 研究了惯性因子ω对优化性能的影
响:发现较大的ω值有利于跳出局部极小点,
较小的ω值有利于算法的收敛。自适应 PSO
算法通过线性地减小ω值动态的调整参数
ω,而模糊 PSO 算法则在此基础上利用模糊
规则动态调整参数ω的值,即构造一个 2 输
入、1 输出的模糊推理机来动态地修改惯性
因子ω。模糊推理机的两个输入分别是当前
ω值,以及其适应度;而输出是ω的增量。
杂交和混合粒子算法(HPSO)是受遗传
算法、自然选择机制的启示,将遗传算子与
基本 PSO 相结合而得。其中,混合 PSO 算
法是将基本 PSO 算法和选择机制相结合而
成,基本 PSO 算法的搜索过程很大程度上
依赖 pbest 和 gbest,它的搜索区域受到
pbest 和 gbest 的限制。在通常的遗传算法
中,选择机制用来选择相对较好的区域和淘
汰较差的区域,可以更合理地分配有限的资
源。杂交 PSO 在基本 PSO 中引入了杂交算
子,两者均取得了满意的结果,改善了算法
的性能。
离散二进制版PSO算法是用来解决工
程实际中的组合优化问题。R.A.Eberhart等
在提出的模型中将每一维xid和pbestid限制
为 1 或者为 0,而速度vid不作这种限制。用
速度来更新位置时,如果vid高一些,粒子的
位置xid更有可能选 1,vid低一点则选 0,阈
值在[0,l]之间。而有这种特点的函数就是
Sig moid函数:
k
idv
k+1
k+1
k
idv
k+1
k+1
k+1
then
= 1;
))
)=l/(l+exp(-
sig(
二进制版本 PSO 的公式为
idρ < sig
idv
idx
if
idx
= 0
else
idρ 的各个分量是[0,1]之间的随
向量
机数。为了防止 Sig moid 函数饱和,可以将
idv
钳位在[-4.0,+4.0]之间。二进制 PSO
其它部分与基本连续 PSO 类似。实验结果
显示,在大多数测试函数中,二进制 PSO
都比遗传算法速度快,尤其在问题的维数增
加时。
k
基本 PSO 算法是求解连续函数优化的
有力工具,但对离散问题却无能为力。因此
J.Kenndy 和 R.A.Eberhart 又提出了离散型
PSO 算法,用于解决组合优化问题等,它在
一定程度上完善发展了基本 PSO 算法,并
将其应用于旅行商问题(TSP)的求解,取得
了较好的结果。离散 PSO 算法扩展了基本
PSO 算法的应用领域,让人看到了 PSO 在
组合优化问题中的应用前景。
4. 4 粒子群优化的应用
PSO 的优势在于算法的简洁性,易于实现,
没有很多参数需要调整,且不需要梯度信
息。PSO 是非线性连续优化问题、组合优化
问题和混合整数非线性优化问题的有效优
化工具[2]。目前已经广泛应用于函数优化、
神经网络训练、模糊系统控制以及其他遗传
算法的应用领域。PSO 最初应用到神经网络
训练上在随后的应用中,PSO 又可以用来确
定神经网络的结构。文献[5]中用改进的速度
更新方程训练模糊神经网络。Parsopoulos
等将 PSO 用于解决多目标优化问题和最小
最大化问题、整数规划问题和定位所有全局
极值等问题。
一般说来,PSO 比较有潜力的应用包括
系统设计、多目标优化、分类、模式识别、
调度、信号处理、决策、机器人应用等。其
中具体应用实例有:模糊控制器设计、车间作
业调度、机器人实时路径规划、自动目标检
测、时频分析等[3] 。总之,PSO 算法的应
用十分广泛,它有着比较好的发展前景,值
得做进一步的研究。
5. 5 未来的研究
25
PSO 算法是一个新的基于群体智能的
进化算法,其研究刚刚开始,远没有像遗传
算法和模拟退火算法那样形成系统的分析
方法和一定的数学基础,有许多问题还需要
进一步研究:
1)适用范围。PSO 算法应用得最成功的
是在进化神经网络方面,其它的一些应用许
多还停留在研究阶段。显然,PSO 算法不会
仅仅局限于目前的这些领域,如果将 PSO
算法引入机器学习、自动控制等领域,将大
大地促进算法的研究与发展。
2)参数的选择与设计。 PSO 算法中参
数的选择依赖于具体问题,设计合适的参数
需要经过多次试验。研究如何选择和设计参
数,使其减少对具体问题的依赖,也将大大
促进 PSO 算法的发展和应用。
6. 6 结束语
粒子群优化算法是一种新兴的有潜力
的演化算法,在实际应用中被证明是有效的
同时,还存在一些问题,如在给出其收敛性、
收敛速度估计等方面的数学证明还没有,其
理论和数学基础的研究还不够。 PSO在理
论上并不能保证能够得到最优解。PSO算法
在进行优化问题的求解时应用范围有限,尤
其对离散的组合优化问题,其理论建模还处
于起步阶段。PSO算法中的一些参数如学习
因子c1,c2,惯性权重ω,以及粒子个数往往
根据有限的应用经验确定,并不具有广泛的
适应性。因此将PSO与进化算法、模糊系统、
神经网络以及一些优化技术结合,根据不同
的优化问题建立相应的PSO模型是PSO算
法当前的研究重点。
目前我国已有学者开始了对PSO算法
的研究[4],希望PSO可以为优化研究工作带
来更多的新思路。 (转第 27 页)
26