一、建模思想
微粒群算法(粒子群算法)是从20世纪90年代初发展起来的一种群体智能算法。基本思想是模拟鸟群和鱼群的群体行为来构造随机优化算法。

美国的社会心理学家Kennedy和电气工程师Eberhart早期在对鸟群的群体行为进行研究时发现。虽然每一个个体具有非常简单的行为规则,但群体的行为非常复杂。比如鸟群在觅食或寻找栖息地的时候使用简单的规则确定自己的飞行方向和飞行速度。建立仿真模型时就采用了以下的三条简单规则:

(1)飞离最近的个体,避免碰撞;
(2)飞向目标;
(3)飞向群体中心。

从这几点看来,鸟类寻找栖息地和对一个特定问题求解很类似。寻找栖息地的过程就是寻找最优解的过程。已经找到栖息地的鸟会引导它周围的鸟飞向栖息地。一只鸟就是一个粒子。对一个优化问题来说,一只鸟的位置就是一个解,那建立仿真模型的关键就是微粒能够飞向解空间并且在最好解的位置降落。
Pi ---- 当前最好位置
Pg ---- 全局最好位置
S个微粒Xi

比如在一个空间当中S个微粒Xi,它们的初始位置以及飞行速度都是随机的。最优解在某一个位置,在飞行过程当中,每一个微粒都有它自己所经历过的最好位置Pi,所有的这些微粒又有一个全局最好位置Pg。微粒的飞行是有一定记忆特性的,它会向着Pi和Pg飞行。在飞行的过程中又会产生新的Pi和Pg,直到找到最优解。

二、基本微粒群算法

2.1 算法原理

不失一般性,我们使所要求的最优解问题为:

对于这个最优化问题,微粒群算法的求解模型是这样的:
初始化S个微粒 {X1,X2,…….,Xs}。设:
Xi = { Xi1,Xi2,…….Xin }为微粒i的当前位置
Vi = { Vi1,Vi2,…….,Vin }为微粒i的当前速度
Pi = { Pi1,Pi2,…….,Pin }为微粒i的当前最好速度
(Pi是迭代过程中产生的,指的是微粒i所经历过的具有最好适应值的位置,也称个体最好位置。)

迭代公式为:

定义Pg(t)为全局最好位置:

有以上的基本定义,基本微粒群算法的描述为:

从(3)可以看出,C1是调节微粒飞向自身最好位置的步长,C2是调节微粒飞向全局最好位置的步长。为了在进化过程中,微粒能够留在搜索空间,一般要给Vi一个限定范围:
-Vmax <= Vi <= Vmax
-Xmax <= Xi <= Xmax
Vmax = kXmax , 0 <= k <=1.0
以上是基本微粒群算法的基本模型。下面是算法流程。

2.2 算法流程
(1)初始化
i. 设定种群规模S
ii. 在 [ -Xmax , Xmax ]产生均匀分布Xi
iii. 在 [ -Vmax , Vmax ]产生均匀分布Vi
iv. 令Pi = Xi

(2)计算每个微粒的适应值f( Xi )

(3)求取Pi

(4)求取Pg

(5)对速度和位置进行进化

(6)判断是否达到结束条件,否就返回步骤(2)

2.3 算法分析
从上面的算法流程可以看出,基本微粒群算法相对来说比较简单,计算量较小,那么基本微粒群算法的效果怎么样,能否达到问题优化目的。下面我们做一个算法分析:

把(3)式化简为: Vi(t+1) = G1 + G2 + G3 (5)
其中 G1 = Vi(t)
G2 = C1r1[ Pi(t) - Xi(t) ]
G3 = C2r2[ Pi(t) - Xi(t) ]
那么,G1是微粒先前的速度,G2称为认知部分,考虑微粒自身的经验,表示微粒对本身的思考。G3称为“社会”部分,表示微粒对社会信息的共享。

那么,我们可以看出,G1是微粒原先的速度项,G2,G3是对速度的修正。

如果没有 Vi(t+1) = G1, 微粒保持原来的速度不变,一只飞向搜索的边界。

如果包含认知部分Vi(t+1) = G1 + G2,则进化的性能变差,主要是因为信息缺乏交流,即没有社会信息共享,微粒之间没有交互,使得一个规模为S的群体等价于运行了S个单个微粒。因而得到最优解的可能性很小。

如果只包含社会部分,即 Vi(t+1) = G1 + G3,这样微粒在相互作用下有能力达到新的搜索空间,但对与复杂的问题容易陷入局部最优点,这一点已经由Eberhart进行了证明。

如果不要速度项,只保留认知部分和社会部分,即Vi(t+1) = G2 + G3,那么这时微粒的速度将取决于历史最优位置与群体最优位置,从而导致速度无记忆性。假如有一个微粒处在了整体最优位置,它将停止进化,其它的微粒向着这个最优位置飞去,并在这个位置的周围搜索,这说明没有第一项的话,算法有很强的局部搜索能力。

通过以上分析,我们可以发现G2,G3使得微粒群算法具有局部收敛能力,G1则保证算法的全局收敛能力,这一点也是比遗传算法好的地方。

三、改进微粒群算法

前边是整个基本微粒群算法的基本原理、算法流程、算法分析。基本微粒群算法有很多优点,比如,算法简单,计算量小,全局搜索能力强等。但人们在利用基本微粒群算法,求解最优化问题时,也发现了基本微粒群算法的一些缺点:比如前边提到了基本微粒群算法第一部分保证全局搜索能力,第二、三部分保证局部搜索能力。对于不同的问题,如何确定局部搜索能力和全局搜索能力的比例关系,对求解过程非常重要。于是有人提出了带惯性权重的改进微粒群算法:

Vi(t+1) = wVi(t) + C1r1[ Pi(t) - Xi(t) ] + C2r2[ Pi(t) - Xi(t) ]
Xi(t+1)= Xi(t)+ V(t+1)

w称为惯性权重,取值范围一般在 [0.9 ,1.2]计算时收敛速度较快。
惯性权重类似于模拟褪火算法中的温度,较大的w有较好的全局收敛能力,单容易在最优解处发生震荡,而较小的w有较强的局部收敛能力。从这一点看,随着迭代次数的增加,w应不但减少,以而使算法在初期具有较强的全局收敛能力,晚期具有较强的局部收敛能力。

一种典型的递减方法是线性递减方法:
w(t) = 0.9 – 0.5*t/maxNumber (6)

maxNumber为最大截止代数,t为迭代次数,这种方法对于4个测试函数测试效果很好。

四、备注
PSO算法常有如下n种重要的控制参数:
(1)微粒群的规模S
(2)认知学习系数C1
(3)社会学习系数C2
(4)控制微粒飞行的速度Vmax
(5)惯性权重系数w

五、应用实例

微粒群算法(一、简介)相关推荐

  1. 【CI】CN.一种多尺度协同变异的微粒群优化算法

    [论文标题]一种多尺度协同变异的微粒群优化算法 (2010) [论文作者]陶新民,刘福荣, 刘  玉 , 童智靖 [论文链接]Paper(14-pages // Single column) [摘要] ...

  2. 蚁群算法(Ant Colony Optimization)

    蚁群算法(Ant Colony Optimization) 蚁群算法简介 蚁群算法(Ant Clony Optimization, ACO)是一种群智能算法,它是由一群无智能或有轻微智能的个体(Age ...

  3. tsp java_蚁群算法java实现以及TSP问题蚁群算法求解

    1. 蚁群算法简介 蚁群算法(Ant Clony Optimization, ACO)是一种群智能算法,它是由一群无智能或有轻微智能的个体(Agent)通过相互协作而表现出智能行为,从而为求解复杂问题 ...

  4. 群体智能算法之蚁群算法初探(一)

    一.背景 20世纪90年代,意大利学者M.Dorigo,V.Maniezzo,A.Colorni等从生物进化的机制中受到启发,通过穆尼自然界蚂蚁搜索路径的行为,提出来一种新型的模拟进化算法--蚁群算法 ...

  5. 群体智能算法之粒子群算法

    智能算法:粒子群算法 1. 简介 2. 粒子群算法(PSO)算法数学模型 2.1 数学模型 2.2 算法流程 3. 具体应用 4. PSO算法的参数选取原则 5. 改进版本的PSO算法 5.1 捕食逃 ...

  6. 蚁群算法java实现_蚁群算法java实现以及TSP问题蚁群算法求解

    1. 蚁群算法简介 蚁群算法(Ant Clony Optimization, ACO)是一种群智能算法,它是由一群无智能或有轻微智能的个体(Agent)通过相互协作而表现出智能行为,从而为求解复杂问题 ...

  7. 蚁群算法解决TSP问题

    原文转载于https://www.cnblogs.com/biaoyu/archive/2012/09/26/2704456.html 蚁群算法简介 蚁群算法(Ant Clony Optimizati ...

  8. vrp车辆路径问题 php,蚁群算法在车辆路径问题(VRP)中的应用.ppt

    蚁群算法在车辆路径问题(VRP)中的应用 ◆割平面法(Cutting Planes Approach)[6] 割平面法求解VRP问题(A)的基本思想是,在求解相应的不含整数约束的VRP问题(B)上,增 ...

  9. 【智能优化算法】蚁群算法ACO

    文章目录 [智能优化算法] 蚁群算法 1. 简介 1.1 简介 1.2 蚁群流程图 1.3 分类(可以不看) 2. 算法 2.1 参数讲解 2.2 计算公式 1) 转移概率公式 2) 启发式因子计算公 ...

  10. 粒子群算法的寻优算法-非线性函数极值寻优

    粒子群算法的寻优算法-非线性函数极值寻优 1.算法概述 粒子群优化算法(Particle Swarm optimization,PSO)又翻译为粒子群算法.微粒群算法.或微粒群优化算法.是通过模拟鸟群 ...

最新文章

  1. ffmpeg+mencoder环境搭建和视频处理总结
  2. 《C语言课程设计》一第3章 文 件 类
  3. 电脑屏幕保护怎么取消_怎么监控员工电脑?老板如何知道员工上班在干什么?...
  4. 第一章 docker 镜像,容器,仓库基本命令(二)
  5. 【数学+编程】对函数进行抽象
  6. linux清除硬盘,linux下清除硬盘的几种方法
  7. 嵌入式Linux入门8:rootfs移植
  8. 如何克服大数据安全问题
  9. SQL 修改表字段失败 解决方法
  10. Wsus 清理的计划任务
  11. 2022 Java IDEA 安装导入JDBC驱动
  12. 上古卷轴5json文件修改_捏脸工具-RaceMenu
  13. c语言jni调用外部函数,(转)JNI调用C函数
  14. apk改之理简单教程
  15. wordpress连接mysql数据库_wordpress远程连接mysql数据库方法
  16. 如何快速统计考勤(bushi)
  17. 电脑开机左上角只有一个减号一直在闪的解决方案
  18. 如何操作电脑压缩包解压文件?干货技巧!电脑压缩包怎样进行文件解压?
  19. 漫画趣解Linux内核
  20. QT5+zint库实现条形码条形码(一)

热门文章

  1. 查询linux信号量命令,Linux信号量动作和说明列表
  2. win10定时关机c语言,电脑定时关机win10,电脑定时关机命令-
  3. C语言段错误的有用总结
  4. 【C语言】学生打卡系统(完整代码)
  5. Python人脸识别考勤打卡系统
  6. PHP算法学习(5) 位运算
  7. (深度剖析结构)模块化解释矢量控制
  8. ios 录音生成.aac录音文件
  9. 全面讲解在BIOS设置IDE设备的多种组合方式
  10. 计算机一级报名照片是几寸的,一级建造师报名照片要几寸的