粒子群算法-基础知识
Posted 算法与编程之美
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了粒子群算法-基础知识相关的知识,希望对你有一定的参考价值。
1 前言
这篇文章是对网友在文章的下的提问,做出的解答。
2 问题描述
粒子群算法相关的基础知识。
3 粒子群算法的简介
粒子群算法(particle swarmoptimization,PSO)由Kennedy和Eberhart在1995年提出,该算法对于Hepper的模拟鸟群(鱼群)的模型进行修正,以使粒子能够飞向解空间,并在最好解处降落,从而得到了粒子群优化算法。
PSO的优势在于简单,容易实现,无需梯度信息,参数少,特别是其天然的实数编码特点特别适合于处理实优化问题。同时又有深刻的智能背景,既适合科学研究,又特别适合工程应用。
4 应用场景
我们举一个应用场景:一群飞鸟在一个区域内寻找着一块食物,鸟儿不知道食物的具体位置,只知道自己与食物间的距离。如何最快的找到食物呢?那就是搜索目前距离食物最近的鸟儿周围的区域。
现在将每一只鸟儿当作一个粒子,在一个n维的空间中搜索食物,每一个粒子具有速度(v)和位置(x)两个属性。
PSO初始化为一群随机的粒子,通过不断地迭代找到最优解,每一次迭代都会根据该粒子自己目前找的最优位置(pbest)和整个粒子群目前找到的最优(gbest)来更新自己的位置和速度。
PSO基础逻辑:
基本PSO公式:
vi+1=w∗vi+c1∗rand1∗(pbesti−xi)+c2∗rand2∗(gbesti−xi)
xi+1= xi+ vi+1
w—惯性权重,一般来说取1。
rand1,rand2—(1,2)之间的随机数。
c1,c2—学习因子,一般取2。
pbesti ,gbesti—某个粒子第i维最优位置,整个粒子群第i维最优位置。
注意:每一个粒子的每一个维度都需要使用上面的基本PSO公式更新自己的位置和速度。
编写代码时我们还需要numpy(用于适应度公式的计算) ,random(用于生成rand1,rand2两个随机数),matplotlib.pyplot(用于绘制图表)掌握这三个第三方库的基础知识。
实习编辑:李欣容
稿件来源:深度学习与文旅应用实验室(DLETA)
以上是关于粒子群算法-基础知识的主要内容,如果未能解决你的问题,请参考以下文章