zl程序教程

您现在的位置是:首页 >  其他

当前栏目

粒子群算法-基础知识

2023-03-14 22:44:15 时间

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)