原文

同进化算法(见博客《[Evolutionary Algorithm] 进化算法简介》,进化算法是受生物进化机制启发而产生的一系列算法)和人工神经网络算法(Neural Networks,简称NN,神经网络是从信息处理角度对人脑的神经元网络系统进行了模拟的相关算法)一样,群体智能优化算法也属于一种生物启发式方法,它们三者可以称为是人工智能领域的三驾马车(PS:实际上除了上述三种算法还有一些智能算法应用也很广泛,比如模拟金属物质热力学退火过程的模拟退火算法(Simulated Algorithm,简称SA),模拟人体免疫系统在抗原刺激下产生抗体过程的人工免疫系统算法(Artificial Immune System,简称AIS)等,但是相对三者而言,模拟退火和人工免疫系统算法已逐渐处于低潮期)。群体智能优化算法主要模拟了昆虫、兽群、鸟群和鱼群的群集行为,这些群体按照一种合作的方式寻找食物,群体中的每个成员通过学习它自身的经验和其他成员的经验来不断地改变搜索的方向。群体智能优化算法的突出特点就是利用了种群的群体智慧进行协同搜索,从而在解空间内找到最优解。

回到顶部

1. 常见的群体智能优化算法分类

  常见的群体智能优化算法主要有如下几类:

  (1)蚁群算法(Ant Colony Optimization,简称ACO)[1992年提出];

  (2)粒子群优化算法(Particle Swarm Optimization,简称PSO)[1995年提出](简单易于实现,也是目前应用最为广泛的群体智能优化算法);

  (3)菌群优化算法(Bacterial Foraging Optimization,简称BFO)[2002年提出];

  (4)蛙跳算法(Shuffled Frog Leading Algorithm,简称SFLA)[2003年提出];

  (5)人工蜂群算法(Artificial Bee Colony Algorithm,简称ABC)[2005年提出];

  除了上述几种常见的群体智能算法以外,还有一些并不是广泛应用的群体智能算法,比如萤火虫算法、布谷鸟算法、蝙蝠算法以及磷虾群算法等等。

回到顶部

2. 粒子群优化算法思想

  由于博主对粒子群优化算法比较熟悉,在硕士期间也进行了比较系统的学习,所以利用本博文系统的介绍一下应用最为广泛的PSO算法。

  粒子群优化算法是在1995年由Eberhart博士和Kennedy博士一起提出的,它源于对鸟群捕食行为的研究。它的基本核心是利用群体中的个体对信息的共享从而使得整个群体的运动在问题求解空间中产生从无序到有序的演化过程,从而获得问题的最优解。我们可以利用一个有关PSO的经典描述来对PSO算法进行一个直观的描述。设想这么一个场景:一群鸟进行觅食,而远处有一片玉米地,所有的鸟都不知道玉米地到底在哪里,但是它们知道自己当前的位置距离玉米地有多远。那么找到玉米地的最佳策略,也是最简单有效的策略就是是搜寻目前距离玉米地最近的鸟群的周围区域。PSO就是从这种群体觅食的行为中得到了启示,从而构建的一种优化模型。

  在PSO中,每个优化问题的解都是搜索空间中的一只鸟,称之为“粒子”,而问题的最优解就对应为鸟群要寻找的“玉米地”。所有的粒子都具有一个位置向量(粒子在解空间的位置)和速度向量(决定下次飞行的方向和速度),并可以根据目标函数来计算当前的所在位置的适应值(fitness value),可以将其理解为距离“玉米地”的距离。在每次的迭代中,种群中的粒子除了根据自身的“经验”(历史位置)进行学习以外,还可以根据种群中最优粒子的“经验”来学习,从而确定下一次迭代时需要如何调整和改变飞行的方向和速度。就这样逐步迭代,最终整个种群的粒子就会逐步趋于最优解。

回到顶部

3. 粒子群优化算法的基本框架

  在介绍PSO的算法流程之前,我们写给出PSO中常用的迭代算子的形式。令Xi=(xi1,xi2,...,xin)Xi=(xi1,xi2,...,xin)代表粒子ii的位置向量,Vi=(vi1,vi2,...,vin)Vi=(vi1,vi2,...,vin)代表粒子ii的速度向量(其中nn为优化问题的维度大小),最早版本的粒子群优化算法的迭代算子形式如下:

  速度向量迭代公式:

Vi=Vi+c1r1(Pbesti−Xi)+c2r2(Gbest−Xi)Vi=Vi+c1r1(Pbesti−Xi)+c2r2(Gbest−Xi)       (1)

  位置向量迭代公式:

Xi=Xi+ViXi=Xi+Vi        (2)

其中在公式(1)中,PbestiPbesti和GbestGbest分别代表粒子ii的历史最佳位置向量和种群历史最佳位置向量。根据公式(1)(2)可以看出,种群中的粒子通过不断地向自身和种群的历史信息进行学习,从而可以找出问题的最优解。

  但是,在后续的研究中表明,上述原始的公式中存在一个问题:公式(1)中ViVi的更新太具有随机性,从而使得整个PSO算法的全局优化能力很强,但是局部搜索能力较差。而实际上,我们需要在算法迭代初期PSO有着较强的全局优化能力,而在算法的后期,整个种群应该具有更强的局部搜索能力。所以根据上述的弊端,Shi和Eberhart通过引入惯性权重修改了公式(1),从而提出了PSO的惯性权重模型:

  速度向量迭代公式:

Vi=wVi+c1r1(Pbesti−Xi)+c2r2(Gbest−Xi)Vi=wVi+c1r1(Pbesti−Xi)+c2r2(Gbest−Xi)       (3)

其中参数ww称为是PSO的惯性权重(inertia weight),它的取值介于[0,1]区间,一般应用中均采取自适应的取值方法,即一开始令w=0.9w=0.9,使得PSO全局优化能力较强,随着迭代的深入,参数ww进行递减,从而使得PSO具有较强的局部优化能力,当迭代结束时,w=0.1w=0.1。参数c1c1和c2c2称为是学习因子(learn factor),一般设置为1.4961;而r1r1和r2r2为介于[0,1]之间的随机概率值。

  整个粒子群优化算法的算法框架如下:

  Step 1 种群初始化:可以进行随机初始化或者根据被优化的问题设计特定的初始化方法,然后计算个体的适应值,从而选择出个体的局部最优位置向量PbestiPbesti和种群的全局最优位置向量GbestGbest。

  Step 2 迭代设置:设置迭代次数gmaxgmax,并令当前迭代次数g=1g=1;

  Step 3 速度更新:根据公式(3)更新每个个体的速度向量;

  Step 4 位置更新:根据公式(2)更新每个个体的位置向量;

  Step 5 局部位置向量和全局位置向量更新:更新每个个体的PbestiPbesti和种群的GbestGbest;

  Step 6 终止条件判断:判断迭代次数时都达到gmaxgmax,如果满足,输出GbestGbest;否则继续进行迭代,跳转至Step 3

  对于粒子群优化算法的运用,主要是对速度和位置向量迭代算子的设计。迭代算子是否有效将决定整个PSO算法性能的优劣,所以如何设计PSO的迭代算子是PSO算法应用的研究重点和难点。

回到顶部

4. 对粒子群优化算法中惯性权重的认识

  参数ww被称之为是惯性权重,顾名思义ww实际反映了粒子过去的运动状态对当前行为的影响,就像是我们物理中提到的惯性。如果w<<1w<<1,从前的运动状态很少能影响当前的行为,粒子的速度会很快的改变;相反,ww较大,虽然会有很大的搜索空间,但是粒子很难改变其运动方向,很难向较优位置收敛,由于算法速度的因素,在实际运用中很少这样设置。也就是说,较高的ww设置促进全局搜索,较低的ww设置促进快速的局部搜索。

回到顶部

粒子群优化算法PSO相关推荐

  1. 概率检索模型+模糊k近邻+粒子群优化算法(PSO)

    1. 概率检索模型 文档属于"相关"类的概率与属于"不相关"类的概率的比值(也叫"优势比"). 显然,这个比值越大,代表该文档与查询的相关度 ...

  2. 【计算智能】——群体智能算法(蚁群优化算法ACO、粒子群优化算法PSO)

    群体智能算法 与大多数基于梯度的优化算法不同,群体智能算法依靠的是概率搜索算法. 与梯度算法及传统演化算法相比优点: 没有集中控制约束,不会因为个体的故障影响整个问题的求解. 以非直接信息交流的方式确 ...

  3. 粒子群优化算法 PSO

    文章目录 1.基本内容 1.1 概念 1.2 基本原理 1.3 基本步骤 2.代码分析 2.1 Rastrigrin()函数 2.2 Schaffer()函数 2.3 Griewank()函数 2.4 ...

  4. 【原理与代码讲解】粒子群优化算法 PSO(基础版)

    0 前言 Gitee 代码地址: https://gitee.com/futurelqh/GA 粒子群优化算法(Particle Swarm Optimization,PSO),其思想源于对鸟群觅食过 ...

  5. 优化算法(四)——粒子群优化算法(PSO)

    粒子群算法(Particle Swarm Optimization,PSO)是一种模仿鸟群.鱼群觅食行为发展起来的一种进化算法.其概念简单易于编程实现且运行效率高.参数相对较少,应用非常广泛.粒子群算 ...

  6. 图解粒子群优化算法(PSO)

    PSO:particle swarm optimization 注:以下的鸟就是粒子. 总体思想 有若干只鸟xix_ixi​,位置可能各不相同,但是每只鸟需要记录下自己的个体历史最优解pbestipb ...

  7. python特征选择pso_粒子群优化算法(PSO)之基于离散化的特征选择(FS)(三)

    作者:Geppetto 前面我们介绍了特征选择(Feature Selection,FS)与离散化数据的重要性,总览的介绍了PSO在FS中的重要性和一些常用的方法,介绍了FS与离散化的背景,介绍本文所 ...

  8. 粒子群算法离散化各代表什么_粒子群优化算法(PSO)之基于离散化的特征选择(FS)(三)...

    欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识!也可以搜索号:磐创AI,关注我们的文章. 作者:Geppetto 前 ...

  9. matlab粒子群优化算法工具箱,MATLAB粒子群优化算法(PSO)

    MATLAB粒子群优化算法(PSO) 一.介绍 粒子群优化算法(Particle Swarm Optimization Algorithm)是一种群智能算法,为了寻求全局最优.群体迭代,粒子在解空间追 ...

  10. PSO 粒子群优化算法 大整理

    一.粒子群算法的概念   粒子群优化算法(PSO:Particle swarm optimization) 是一种进化计算技术(evolutionary computation).源于对鸟群捕食的行为 ...

最新文章

  1. 学习 Git 玩转 GitHub
  2. 生成模型学习笔记:从高斯判别分析到朴素贝叶斯
  3. 树莓派python网络通信_Python3使用Socket实现树莓派与计算机半双工通信,实现聊天功能...
  4. JS实现2,8,10,16进制的相互转换
  5. 素数表的获取 O(nloglogn)复杂
  6. java 001 002_java笔记0x002:操作符
  7. 记一次rm -rf之后的数据恢复操作
  8. 计算机图形学设计线宽代码,计算机图形学画圆并改变线宽.pdf
  9. android开发跑步软件设计,计算机软件毕业设计 android跑步应用开发.doc
  10. 人工智能、大数据和云计算之间,它们之间主要有什么关系?
  11. Element-UI Select 下拉框 根据汉字拼音过滤选择选项(使用filter-method,filterable属性)
  12. 红米1A显示器于笔记本win10环境下,如何设置颜色范围使得显示器亮度恢复成250nit
  13. Electron播放 RTMP流 实现
  14. 2020年12月31日flash禁用后网页如何播放rtmp视频流
  15. android菜鸡提升之路---实现一个积木拼图游戏
  16. MFRC522模块测试
  17. 小学计算机社团活动简报,多彩社团活动幸福校园生活——南街小学社团活动报道...
  18. 2021年IT审计师CISA考试报考条件必备
  19. 7月16日安卓混服服务器升级维护公告,7月29日更新维护新服开启公告
  20. 正则表达式匹配字符串中以数字结尾的字符

热门文章

  1. 用英语说计算机的优点1000,我的英语老师作文1000字
  2. ubuntu18.10安装redshift护眼软件
  3. 恶意代码分析实战——高级反汇编
  4. css rgb转16进制,jquery获取元素颜色css('color')的值返回RGB。如何转十六进制
  5. 智能语音助手的时代,我们还有这样的一股清流:114!
  6. win7系统如何恢复或重装IE8浏览器呢?
  7. PostgreSQL 数据加密之 pgcrypto
  8. 利用CHARMM-GUI来建立膜双层结构的具体步骤
  9. Twitter群推王的推特自动发帖功能是如何实现的
  10. 怎么把一个PDF文件拆分成多个?