粒子群算法简介及使用

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

粒子群算法

题目:求∑==10

12)(i i x x f 的最小值

1粒子群简介

粒子群优化算法PSO 也是起源对简单社会系统的模拟。最初设想是模拟鸟群觅食的过程。粒子群优化算法是由Kennedy 和Eberhart 通过对鸟群、鱼群和人类社会某些行为的观察研究,于1995年提出的一种新颖的进化算法。

PSO 算法属于进化算法的一种,和遗传算法相似,它也是从随机解出发,通过迭代寻找最优解,它也是通过适应度来评价解的品质,但它比遗传算法规则更为简单,它没有遗传算法的“交叉”和“变异” 操作,它通过追随当前搜索到的最优值来寻找全局最优。这种算法以其实现容易、精度高、收敛快等优点引起了学术界的重视,并且在解决实际问题中展示了其优越性。

2算法的原理

PSO 从这种模型中得到启示并用于解决优化问题。PSO 中,每个优化问题的潜在解都是搜索空间中的一只鸟,称之为粒子。所有的粒子都有一个由被优化的函数决定的适值( fitness value) ,每个粒子还有一个速度决定它们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。

PSO 初始化为一群随机粒子(随机解),然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个极值来更新自己;第一个就是粒子本身所找到的最优解,这个解称为个体极值;另一个极值是整个种群目前找到的最优解,这个极值是全局极值。另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值。

假设在一个D 维的目标搜索空间中,有N 个粒子组成一个群落,其中第i 个

粒子表示为一个D 维的向量

),,,(21iD i i i x x x X =,N i ,,2,1 =

第i 个粒子的“飞行 ”速度也是一个D 维的向量,记为

),,21i iD i i v v v V ,(=,3,2,1 =i

第i 个粒子迄今为止搜索到的最优位置称为个体极值,记为

),,,(21iD i i best p p p p =,N i ,,2,1 =

整个粒子群迄今为止搜索到的最优位置为全局极值,记为

),,,(21gD g g best p p p g =

在找到这两个最优值时,粒子根据如下的公式(2.1)和( 2.2)来更新自己的速度和位置:

())(2211id gd id id id id x p r c x p r c v w v -+-+*= (2.1)

id id id v x x += (2. 2)

其中:1c 和2c 为学习因子,也称加速常数,1r 和2r 为[0,1]范围内的均匀随机数。式(2.1)右边由三部分组成,第一部分为“惯性”或“动量”部分,反映了粒子的运动“习惯”,代表粒子有维持自己先前速度的趋势;第二部分为“认知”部分,反映了粒子对自身历史经验的记忆或回忆,代表粒子有向自身历史最佳位置逼近的趋势;第三部分为“社会”部分,反映了粒子间协同合作与知识共享的群体历史经验,代表粒子有向群体或邻域历史最佳位置逼近的趋势,根据经验,

通常221==c c 。D i ,,2,1 =。id v 是粒子的速度,],[max max v v v id -∈,m ax v 是常数,

由用户设定用来限制粒子的速度。1r 和2r 是介于[0,1]之间的随机数。

探索是偏离原来的寻优轨迹去寻找一个更好的解,探索能力是一个算法的全

局搜索能力。开发是利用一个好的解,继续原来的寻优轨迹去搜索更好的解,它是算法的局部搜索能力。如何确定局部搜索能力和全局搜索能力的比例,对一个问题的求解过程很重要。带有惯性权重的改进粒子群算法。其进化过程为:

))

()()(())()()(()()1(2211t x t p t r c t x t p t r c t wv t v ij gi ij ij ij ij -+-+=+ (2.3) )1()()1(++=+t v t x t x ij ij ij (2.4)

在式(2.1)中,第一部分表示粒子先前的速度,用于保证算法的全局收敛性能;第二部分、第三部分则是使算法具有局部收敛能力。可以看出,式(2.3)中惯性权重w 表示在多大程度上保留原来的速度。w 较大,全局收敛能力强,局部收敛能力弱;w 较小,局部收敛能力强,全局收敛能力弱。

当1=w 时,式(2.3)与式(2.1)完全一样,表明带惯性权重的粒子群算法是基本粒子群算法的扩展。实验结果表明,w 在]2.18.0[-之间时,PSO 算法有更快的收敛速度,而当2.1>w 时,算法则易陷入局部极值。

3 基本粒子群算法流程

算法的流程如下:

① 初始化粒子群,包括群体规模N ,每个粒子的位置i x 和速度i V

② 计算每个粒子的适应度值][i F it ;

③ 对每个粒子,用它的适应度值][i F it 和个体极值)(i p best 比较,如果

)(][i p i F best it > ,则用][i Fit 替换掉)(i best p ;

④ 对每个粒子,用它的适应度值][i Fit 和全局极值best g 比较,如果

)(][i p i F best it >则用][i F it 替best g ;

⑤ 根据公式(2.1),(2.2)更新粒子的速度i v 和位置i x ;

⑥ 如果满足结束条件(误差足够好或到达最大循环次数)退出,否则返回②。 4参数的设定

PSO 的参数主要包括最大速度、两个加速常数和惯性常数或收缩因等。

1.群体大小m

m 是个整形参数,m 很小的时候,陷入局优的可能性很大。当m 很大时,PSO 的优化能力很好,可是收敛速度将非常慢,并且当群体数目增长至一定的水平时,再增长将不会有显著的作用。

2.最大速度m ax v 的选择

如式(2.1)所示的粒子速度是一个随机变量,由粒子位置更新公式(2.2)产生的运动轨迹是不可控的,使得粒子在问题空间循环跳动。为了抑制这种无规律的跳动,速度往往被限制在[]max max ,v v -内。m ax v 增大,有利于全局探索;m ax v 减小,

则有利于局部开发。但是m ax v 过高,粒子运动轨迹可能失去规律性,甚至越过最

优解所在区域,导致算法难以收敛而陷入停滞状态;相反

m ax v 太小,粒子运动步长太短,算法可能陷入局部极值。

m ax v 的选择通常凭经验给定,并一般设定为问

题空间的%2010- 。 3.学习因子C1和C2

式(1)中的学习因子2c 和2c 分别用于控制粒子指向自身或邻域最佳位置的运动。建议0.421≤+=c c φ,并通常取221==c c 。Ratnaweera 等人则提出自适应时变调整策略,即1c 随着进化代数从2.5线性递减至0.5,2c 随着进化代数从0.5

相关文档
最新文档