Transcript 第7章粒子群优化算法
第七章 粒子群优化算法 1 第七章 粒子群优化算法 一.前言 二.基本算法 三.标准算法 四.PSO的改进与变形 五.学习PSO的几点体会 2 一.前言 1. PSO的产生 Particle Swarm Optimization(PSO),粒子群优 化或者微粒群优化 PSO算法由美国学者Kennedy (社会心理学家) 和Eberhart(电机工程师) 于1995年提出,通 过模拟鸟群和鱼群的社会交互行为而不仅仅依 赖个体认知行为而设计的一种智能优化方法 3 一.前言 1. PSO的产生 2000年以后,PSO算法在国际上逐步被接受, 并有大批不同领域的学者投入该算法相关研究, 已经成为智能优化领域研究的热门算法 2003年,《控制与决策》第二期刊登国内第一 篇综述性文章 4 一.前言 2. PSO的基本思想 对社会行为的模拟 • 对鸟群行为的模拟:Reynolds和Heppner, Grenander在1987年和1990年发表的论文中都关 注了鸟群群体行动中蕴涵的美学。他们发现,由 数目庞大的个体组成的鸟群飞行中可以改变方向, 散开,或者队形的重组等等,那么一定有某种潜 在的能力或者规则保证了这些同步的行为。这些 科学家都认为上述行为是基于不可预知的鸟类社 会行为中的群体动态学。在这些早期的模型中他 们把重点都放在了个体间距的处理,也就是让鸟 群中的个体之间保持最优的距离。 5 一.前言 2. PSO的基本思想 对社会行为的模拟 • 对鱼群行为的研究:1975年,生物社会学家 Wilson在论文中阐述了对鱼群的研究。他在论文 中提出:“至少在理论上,鱼群的个体成员能够 受益于群体中其他个体在寻找食物的过程中发现 的和以前的经验,这种受益是明显的,它超过了 个体之间的竞争所带来的利益消耗,不管任何时 候食物资源不可预知的分散于四处。”这说明, 同种生物之间信息的社会共享能够带来好处。 6 一.前言 2. PSO的基本思想 对社会行为的模拟 • 对人类的社会行为的模拟: a. 与前者不同,最大区别在于抽象性! b. 鸟类和鱼类是调节他们的物理运动,来避免天敌, 寻找食物,优化环境的参数,比如温度等。人类调节 的不仅是物理运动,还包括认知和经验。我们更多的 是调节自己的信仰和态度,来和社会中的杰出人物或 者专家,或者在某件事情上获得最优解的人保持一致。 7 一.前言 2. PSO的基本思想 对社会行为的模拟 • 对人类的社会行为的模拟: c. 这种不同导致了计算机仿真上的差别,至少有一个 明显的因素:碰撞(collision)。 d. 两个个体即使不被绑在一块,也具有相同的态度和 信仰,但是两只鸟是绝对不可能不碰撞而在空间中占 据相同的位置。这是因为动物只能在三维的物理空间 中运动,而人类还在抽象的多维心理空间运动,这里 是碰撞自由的(collision-free)。 8 一.前言 2. PSO的基本思想 采纳基于种群(swarm)的机制 个体(particle)均是问题的一个潜在解 算法寻优依赖于在种群拓扑结构上个体间的社 会交互行为 9 一.前言 3. 名称的由来:Swarm和Particle Swarm:在美国传统字典中有三个意思 • • • • 一大群尤指正在行进中的一大群昆虫或其它细小 生物 蜂群由蜂王带领迁移到别处建立一新据点的一群 蜜蜂 一大群尤指处于骚乱中或成群出动的一大批喧闹 的人或动物 作者引用此词是借用了Millonas在1994年的论文中的 人工生命的一个应用模型中的提法 10 一.前言 3. 名称的由来:Swarm和Particle Particle: • • • 算法中有速度和加速度的字眼,这比较适合于粒 子。Reeves在1983年的论文中讨论了粒子系统包 括基本粒子团和云、火、烟雾等弥漫性物体 作者的想法是让粒子尽量具有一种普遍性的意义 用粒子在超空间(Hyperspace)的飞行来模拟个 体的社会性行为 11 二.基本算法 1. 算法描述 种群中m个个体分布在一个D维搜索空间中 每个个体均具有当前位置、速度以及历史最优 位置三个属性 种群具有一定的拓扑结构,个体可以基于种群 拓扑结构与其邻域内的其他个体进行相互作用 算法迭代时,每个个体会根据自身信息(认知 行为)和邻域内其他个体的信息(社会行为) 进行状态更新 12 二.基本算法 2. 基本PSO的公式 Index 粒子i 1 i m 1 d D x i ( x i1 , x i 2 , , x iD ) v i ( v i1 , v i 2 , , v iD ) p i ( p i1 , p i 2 , , p iD ) 粒子群 p g ( p g 1 , p g 2 , , p gD ) 13 二.基本算法 2. 基本PSO的公式 v id v id c1 ( p id x id ) c 2 ( p gd x id ) (1) x id x id v id (2) 14 二.基本算法 2. 基本PSO的公式 c1和c2:学习因子(learning factor)或加速系 数(acceleration coefficient),一般为正常数。 学习因子使粒子具有自我总结和向群体中优秀 个体学习的能力,从而向自己的历史最优点以 及群体内或邻域内的历史最优点靠近。通常等 于2。 ξ和η:0-1之间的随机数 15 二.基本算法 2. 基本PSO的公式 粒子的速度被限制在[-Vmax, Vmax]的范围内。 引入Vmax的原因: • • 防止溢出 保证算法稳定 16 二.基本算法 2. 基本PSO的公式 粒子群的拓扑结构决定个体间的相互影响程度 • • PSO的全局版本将整个群体看作是一个全连通图, 群体内所有个体共享一个邻域最优 gbest PSO的局部版本中每个个体的邻域将是整个群体 的一个子集,此时影响个体的gbest取决于具体的 拓扑结构,一种简单的方法是群体内粒子根据其 编号相邻的原则组成一个环状结构 17 二.基本算法 3. 基本PSO算法流程图 begin initialize and evaluate a swarm of particles with random positions and velocities on D dimensions in the search space; repeat for each particle i do update gbest of particle i; endfor for each particle i do adapt the velocity of particle i using Equation (1); update the position of particle i using Equation (2); evaluate the fitness of particle i; update pbest of particle i; endfor until a stop condition is met end 18 三.标准PSO 1. 带有惯性权重的PSO 为改善算法收敛性能,Shi和Eberhart在1998年 的论文中引入了惯性权重的概念,将速度更新 方程修改为: v id v id c1 ( p id x id ) c 2 ( p gd x id ) (3) 19 三.标准PSO 1. 带有惯性权重的PSO 这里,w称为惯性权重,其大小决定了对粒子当 前速度继承的多少,合适的选择可以使粒子具 有均衡的探索和开发能力。可见,基本PSO算 法是惯性权重w=1的特殊情况。 分析和实验表明,设定Vmax的作用可以通过惯 性权重的调整来实现。现在的PSO基本上使用 Vmax进行初始化,将Vmax设定为每维变量的 变化范围,而不必进行细致的选择与调节。 20 四.PSO的改进与变形 2. 带有收缩因子的PSO 2002年Clerc和Kennedy在基本PSO算法中引入 可收缩因子的概念,指出该因子对于算法的收 敛是必要的,将速度更新公式修改为: v id v id c1 ( p id x id ) c 2 ( p gd x id ) 其中, c1 c 2 4 (4) 2 2 2 4 21 四.PSO的改进与变形 2. 带有收缩因子的PSO Clerc将参数取值为: c1 c 2 2.05 4.1 则 0.7298 若带有惯性权重的PSO采用如下的参数设置: w 0.7298 c1 c 2 2.05 * 0.7298 1.49618 则两种标准版本的PSO算法等价 22 三.标准PSO 3. 计算举例 求解无约束优化问题:5维的Rosenbrock函数 m in f ( x ) n 1 2 2 2 (100( x x ) ( x 1) ) i i i 1 i 1 x [ 3 0, 3 0] n 23 三.标准PSO 3. 计算举例 简单分析: Rosenbrock是一个著名的测试函数, 也叫香蕉函数,其特点是该函数虽然是单峰函 数,在[100,100]n上只有一个全局极小点,但 它在全局极小点临近的狭长区域内取值变化极 为缓慢,常用于评价算法的搜索性能。这种实 优化问题非常适合于使用粒子群优化算法来求 解。 24 三.标准PSO 3. 计算举例 算法设计 • • • • 编码:因为问题的维数为5,所以每个粒子为5维 的实数向量。 初始化范围:根据问题要求,设定为[-30,30]。 根据前面的参数分析,我们知道,可以将最大速 度设定为Vmax=60。 种群大小:为了说明方便,这里采用一个较小的 种群规模,m=5。 停止准则:设定为最大迭代次数100次。 25 三.标准PSO 3. 计算举例 算法设计 • • 惯性权重:采用固定权重0.5。 邻域拓扑结构:使用星形拓扑结构,即全局版本 的粒子群优化算法。 26 三.标准PSO 3. 计算举例 一次迭代后的结果 x11 2.4265985, 29.665405, 18.387815, 29.6 60393, -39.97371 x 21 22.56745, -3.999012, -19.23571, -16.3 73426, -45.417023 x 31 30.34029, -4.6773186, 5.7844753, 5.41 56475, -43.92349 x 40 2.794329 6, 19.942759, -24.861498, 16.060974, -57.757202 x 50 27.509708, 28.379063, 13.016331, 11.5 39068, -53.676777 27 三.标准PSO 3. 计算举例 一次迭代后的结果 • • 从上面的数据我们可以看到,粒子有的分量跑出 了初始化范围。需要说明的是,在这种情况下, 我们一般不强行将粒子重新拉回到初始化空间, 即使初始化空间也是粒子的约束空间。因为,即 使粒子跑出初始化空间,随着迭代的进行,如果 在初始化空间内有更好的解存在,那么粒子也可 以自行返回到初始化空间。 有研究表明,即使将初始化空间不设定为问题的 约束空间,即问题的最优解不在初始化空间内, 粒子也可能找到最优解。 28 三.标准PSO 3. 计算举例 29 四.PSO的改进与变形 1. 惯性权重 固定权重 • 即赋予惯性权重以一个常数值,一般来说,该值 在0和1之间。固定的惯性权重使粒子在飞行中始 终具有相同的探索和开发能力。显然,对于不同 的问题,获得最好优化效果的这个常数是不同的, 要找到这个值需要大量的实验。通过实验我们发 现:种群规模越小,需要的惯性权重越大,因为 此时种群需要更好的探索能力来弥补粒子数量的 不足,否则粒子极易收敛;种群规模越大,需要 的惯性权重越小,因为每个粒子可以更专注于搜 索自己附近的区域。 30 四.PSO的改进与变形 1. 惯性权重 时变权重 • 一般来说,希望粒子群在飞行开始的时候具有较 好的探索能力,而随着迭代次数的增加,特别是 在飞行的后期,希望具有较好的开发能力。所以 希望动态调节惯性权重。可以通过时变权重的设 置来实现。设惯性权重的取值范围为: m in , m ax 最大迭代次数为Iter_max,则第i次迭代时的惯性 权重可以取为: i m ax m ax m in Iter _ m ax i 31 四.PSO的改进与变形 1. 惯性权重 模糊权重 • 模糊权重是使用模糊系统来动态调节惯性权重。 下面的文献给出了一种模糊权重的设置方式 Shi Y, Eberhart R. Fuzzy adaptive particle swarm optimization: IEEE Int. Congress on Evolutionary Computation [C]. Piscataway, NJ: IEEE Service Center, 2001: 101-106. 32 四.PSO的改进与变形 1. 惯性权重 随机权重 • 随机权重是在一定范围内随机取值。例如可以取 值如下: 0.5 • R andom 2 其中,Random为0到1之间的随机数。这样,惯 性权重将在0.5到1之间随机变化,均值为0.75。 33 四.PSO的改进与变形 2. 邻域拓扑结构 基于索引号的拓扑结构 • 环形结构 34 四.PSO的改进与变形 2. 邻域拓扑结构 基于索引号的拓扑结构 • 星形结构:每个粒子都与种群中的其他所有粒子 相连,即将整个种群作为自己的邻域。也就是粒 子群算法的全局版本。这种结构下,所有粒子共 享的信息是种群中表现最好的粒子的信息。 35 四.PSO的改进与变形 2. 邻域拓扑结构 基于距离的拓扑结构 • • 基于距离的拓扑结构是在每次迭代时,计算一个 粒子与种群中其他粒子之间的距离,然后根据这 些距离来确定该粒子的邻域构成。 一种动态邻域拓扑结构:在搜索开始的时候,粒 子的邻域只有其自己,即将个体最优解作为邻域 最优解,然后随着迭代次数的增加,逐渐增大邻 域,直至最后将群体中所有粒子作为自己的邻域 成员。这样使初始迭代时可以有较好的探索性能, 而在迭代后期可以有较好的开发性能。 36 四.PSO的改进与变形 对将要计算邻域的粒子 i,计算其与种群中其他所有粒子的距离。该粒子与粒子 l( l i )的距离记为:dist[l]。最大的距离记为:max_dist。 定义一个关于当前迭代次数的函数 fraction(取值为纯小数) : frac 3.0 IT E R 0.6 M A X IT E R M A X IT E R 当 frac 0.9 时,满足的下列条件的粒子构成当前粒子 i 的邻域: dist [ l ] frac ; m ax- dist 当 frac 0.9 ,将种群中所有粒子作为当前粒子 i 的邻域。 37 四.PSO的改进与变形 3. 学习因子 c1和c2同步时变 参照时变惯性权重的设置方法,将学习因子设置如下:设学习因子 c1 和 c2 的取值范围为: c m in , c m ax ,最大迭代次数为 Iter_max,则第 i 次迭代时的学习因子取为: c1 c 2 ci c m ax c m ax c m in Iter _ m ax i (7.12) 这是一种两个学习因子同步线性减小的变化方式,所以我们这里称之为 同步时变。特别地,Suganthan 在实验中将参数设置为:cmax=3,cmin=0.25。 但是发现,这种设置下,解的质量反而下降。 38 四.PSO的改进与变形 3. 学习因子 c1和c2异步时变 • 使两个学习因子在优化过程中随时间进行不同的 变化,所以我们这里称之为异步时变。这种设置 的目的是在优化初期加强全局搜索,而在搜索后 期促使粒子收敛于全局最优解。这种想法可以通 过随着时间不断减小自我学习因子c1,和不断增 大社会学习因子c2来实现。 39 四.PSO的改进与变形 3. 学习因子 c1和c2异步时变 • • 在优化的初始阶段,粒子具有较大的自我学习能 力和较小的社会学习能力,这样粒子可以倾向于 在整个搜索空间飞行,而不是很快就飞向群体最 优解; 在优化的后期,粒子具有较大的社会学习能力和 较小的自我学习能力,使粒子倾向于飞向全局最 优解。 40 四.PSO的改进与变形 具体实现方式如下: c1 c1 f c1i iter c1i Iter _ m ax c2 c2 f c2i iter c2i Iter _ m ax (7.13) (7.14) 这里,c1i,c1f,c2i,c2f 为常数,分别为 c1 和 c2 的初始值和最终值。Iter_max 为最大迭代 次数,iter 为当前迭代数。Ratnaweera 等在研究中发现,对于大多数 benchmarks 如下设置优 化效果较好: c1i=2.5, c1f=0.5, c2i=0.5, c2f=2.5 需要说明的是,异步时变的学习因子应与线性减小的时变权重配合使用,效果较好。 41 五.学习PSO的几点体会 1. 收敛很快的算法 2. 解决约束优化问题时,如何处理飞出约束域 的粒子是个关键 3. 较为适用于求解实优化问题 42