A Modified Particle Swarm Optimizer

一种改进的粒子群优化算法
 
Yuhui Shi and Russell Eberhart
1998
 

摘要:

  本文在原有的粒子群算法中引入了一个新的参数--惯性权重。仿真结果表明,该新参数对粒子群优化算法具有显著而有效的影响。

1. INTRODUCTION

2. A MODIFIED PARTICLE SWARM OPTIMIZER (一种改进的粒子群优化算法)

  速度本身是无记忆的。假设在开始时,粒子i具有最好的全局位置,那么粒子z将在速度为0的情况下保持不动,直到另一个粒子接管全局最好位置。同时,每个其他粒子将向其自身最佳位置和全局最佳种群位置的加权质心“飞行”。如文献[6]所述,常数c1和c2的推荐选择是整数2,因为它平均使“社会”和“社会”部分的权重为1。在这一条件下,粒子从统计上收缩到当前全局最优位置,直到另一个粒子接管,从那时起所有粒子从统计上收缩到新的全局最优位置。因此,可以想象,没有第一部分的粒子群算法的搜索过程是一个搜索空间经过几代统计收缩的过程。它类似于本地搜索算法。通过在屏幕上显示“飞行”过程,可以更清楚地说明这一点。从屏幕上可以很容易地看出,如果没有方程式(La)的第一部分,所有的粒子都会倾向于向同一位置移动,即搜索区域在世代之间都在收缩。只有当全局最优解在初始搜索空间内时,PSO才有机会找到解。最终的解决方案在很大程度上依赖于初始种子(种群)。因此,在没有第一部分的情况下,它更有可能表现出局部搜索能力。另一方面,通过增加第一部分,部分有扩大搜索空间的趋势,即他们有能力探索新的领域。因此,通过添加第一部分,THQ更有可能具有全局搜索能力。局部搜索和全局搜索都有利于解决某些类型的问题。对于不同的问题,全局搜索和局部搜索是有权衡的,在局部搜索能力和全局搜索能力之间应该有不同的平衡。考虑到这一点,如公式(2)所示,在公式(1)中引入惯性权重w。这个w起到平衡全局搜索和局部搜索的作用,它可以是正常数,甚至是时间的正线性或非线性函数。

3. EXPERIMENTS AND DISCUSSION

4. CONCLUSION

  本文在原有的粒子Swann优化算法中引入了一个参数惯性权重。已经进行了仿真,以说明该参数的hpct对粒子群优化算法性能的影响。结果表明,惯性权重平均在[0.9,1.2]范围内的粒子群算法具有更好的性能,即在合理的迭代次数内有更大的机会找到全局最优解。此外,引入了随时间递减的惯性权重,使粒子群算法的性能有了很大的改善。已经做了仿真来支持它。
  虽然引入时变惯量已取得了较好的效果,但仍需做更多的研究。为了寻求更好的时间函数,需要测试不同的时间递减函数。例如,从图1可以很容易地看出,惯性权重不需要从1.4减小到0。从1.4降到0.5;也许效果会更好。时间的非线性递减函数也需要检验。本文只测试了一个Snoall基准问题:要充分证明惯性权重的好处,还需要检验更多的问题。在积累经验之后,可以期望更好地了解惯性权重对PSO性能的影响,可以建立一个模糊控制系统[101]来在线调整惯性权重。我们现在正在做这些事情。

其他:

进化规划
遗传算法
进化策略
遗传规划

A Modified Particle Swarm Optimizer的更多相关文章

  1. 【智能算法】粒子群算法(Particle Swarm Optimization)超详细解析+入门代码实例讲解

    喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 01 算法起源 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由E ...

  2. 粒子群优化算法(Particle Swarm Optimization)

    粒子群算法的思想源于对鸟/鱼群捕食行为的研究,模拟鸟集群飞行觅食的行为,鸟之间通过集体的协作使群体达到最优目的,是一种基于Swarm Intelligence的优化方法.它没有遗传算法的"交 ...

  3. A novel multi-swarm particle swarm optimization with dynamic learning strategy(一种新颖的具有动态学习策略的多种群粒子群优化算法)

    1.核心 在每个子种群的粒子被划分为普通粒子(ordinary particles)和交流粒子(communication particles),在每次迭代过程中,不同的粒子执行不同的进化操作.普通粒 ...

  4. 粒子群算法 Particle Swarm Optimization, PSO(转贴收藏)

    粒子群算法(1)----粒子群算法简介 http://blog.csdn.net/niuyongjie/article/details/1569671 粒子群算法(2)----标准的粒子群算法 htt ...

  5. A New Discrete Particle Swarm Optimization Algorithm

    题目:一种新的离散粒子群优化算法 中文摘要 粒子群优化算法在许多优化问题上表现得非常好.粒子群优化算法的缺点之一是假设算法中的变量为连续变量.本文提出一个新的粒子群优化算法,能够优化离散变量.这个新算 ...

  6. 算法(三)粒子群算法PSO的介绍

    一.引言 在讲算法之前,先看两个例子: 例子一:背包问题,一个书包,一堆物品,每个物品都有自己的价值和体积,装满书包,使得装的物品价值最大. 例子二:投资问题,n个项目,第i个项目投资为ci 收益为p ...

  7. 粒子群优化算法及其java实现

    憋了两周终于把开题报告憋出来了,再一次证明自己不适合搞学术,哎--,花了点时间把报告中提到的粒子群算法看了看,看了些资料,用java跑起来. 算法简介 粒子群算法最先由Barnhart博士和Kenne ...

  8. [Algorithm] 群体智能优化算法之粒子群优化算法

    同进化算法(见博客<[Evolutionary Algorithm] 进化算法简介>,进化算法是受生物进化机制启发而产生的一系列算法)和人工神经网络算法(Neural Networks,简 ...

  9. GO语言的开源库

    Indexes and search engines These sites provide indexes and search engines for Go packages: godoc.org ...

随机推荐

  1. 使用gitlab runner 进行CI(二):gitlab runner的安装与配置

    参考 https://docs.gitlab.com/runner/install/index.html,可以选择与gitlab相同的版本. gitlab runner可以通过安装binary包或do ...

  2. Java多线程--实现同步的9种方法

    我们通常说的保持同步,其实就是对共享资源的保护.在单线程模型中, 我们永远不用担心"多个线程试图同时使用同一个资源的问题", 但是有了并发, 就有可能发生多个线程竞争同一个共享资源 ...

  3. Python基础 | 字符串格式化输出及print()函数介绍

    在写代码时,我们会经常与字符串打交道,Python中控制字符串格式通常有三种形式,分别是使用str%,str.format(),f-str,用法都差不多,但又有一些细微之差. 一起来看看吧~~~ 一. ...

  4. iOS能否自动扫描周边wifi信息并通过密码连接

    能否获取系统wifi列表信息 不能,只能获取用户当前连接的wifi信息 https://developer.apple.com/forums/thread/112177 https://develop ...

  5. CAM对象样式表

    CAM对象样式表 121 160 UF_machining_task_type UF_mach_order_task_subtype 112 UF_machining_null_grp_type 无 ...

  6. Spring 5 MVC 中的 Router Function 使用

    Spring 5 发行已经好几年了,里面提出了好几个新点子.其中一个就是 RouterFunction,这是个什么东西呢? Spring框架给我们提供了两种http端点暴露方式来隐藏servlet原理 ...

  7. [技术博客]WEB实现划词右键操作

    [技术博客]WEB实现划词右键操作 一.功能解释 简单地对题目中描述的功能进行解释:在浏览器中,通过拖动鼠标选中一个词(或一段文字),右键弹出菜单,且菜单为自定义菜单,而非浏览器本身的菜单.类似的功能 ...

  8. 2020BUAA软工个人博客作业

    2020BUAA软工个人博客作业 17373010 杜博玮 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业 我在这个课程的目标是 学 ...

  9. js基础学习之"=="与"==="的区别

    var a = 1; var b = 1; var c = "1"; 1. "==" 可理解为相等运算符.相等运算符比较时,会自己进行类型转换,等于什么类型就会 ...

  10. Python课程笔记(二)

    1.格式化输出 print("%d %d %s" % (15, 3.14, 12.8)) 对比C语言 printf("%d,%d,%s",15, 3.14, 1 ...