粒子群算法简介及使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
粒子群算法
题目:求∑==10
12)(i i x x f 的最小值
1粒子群简介
粒子群算法是在1995年由Eberhart 博士和Kennedy 博士一起提出的,它源于对鸟群捕食行为的研究。它的基本核心是利用群体中的个体对信息的共享从而使整个群体的运动在问题求解空间中产生从无序到有序的演化过程,从而获得问题的最优解。设想这么一个场景:一群鸟进行觅食,而远处有一片玉米地,所有的鸟都不知道玉米地到底在哪里,但是它们知道自己当前的位置距离玉米地有多远。那么找到玉米地的最佳策略,也是最简单有效的策略就是搜寻目前距离玉米地最近的鸟群的周围区域。
在PSO 中,每个优化问题的解都是搜索空间中的一只鸟,称之为"粒子",而问题的最优解就对应于鸟群中寻找的"玉米地"。所有的粒子都具有一个位置向量(粒子在解空间的位置)和速度向量(决定下次飞行的方向和速度),并可以根据目标函数来计算当前的所在位置的适应值(fitness value ),可以将其理解为距离"玉米地"的距离。在每次的迭代中,种群中的例子除了根据自身的经验(历史位置)进行学习以外,还可以根据种群中最优粒子的"经验"来学习,从而确定下一次迭代时需要如何调整和改变飞行的方向和速度。就这样逐步迭代,最终整个种群的例子就会逐步趋于最优解。
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)产生的运动轨迹是不可控的,使得粒子在问题空间循环跳动。为了抑制这种无规律的跳