粒子群算法(PSO)——总体概述

粒子群算法(Particle swarm optimization ,PSO)

PSO 是1995年由 Kennedy 和 Eberhart提出的一种算法。PSO和GA的相似之处在种群的初始化,都是随机生成初始解,但对于PSO的每个潜在解都会设置一个随机速度和位置,这被称为 粒子,粒子在问题空间飞行来搜寻最优解。粒子个体执行很简单行为:去模拟其周围个体的”成功”与该粒子本身的”成功”。从这些简单个体简单行为的群体涌现实现了在高维空间中的最优解搜索。

PSO根据他们邻居规模的不同被分为两种算法,分别是局部最优PSO( l − b e s t l-best l −b e s t PSO)和全局最优PSO( g − b e s t g-best g −b e s t PSO)。

PSO的速度成分

粒子 i 最佳位置以 y i ( t ) \mathbf y_i(t)y i ​(t ) 表示(截止 t 时刻,粒子 i 搜索到的最优位置);邻居的最佳位置,记为 y ^ ( t ) \hat\mathbf y(t)y ^​(t ); 粒子 i 的当前位置以 x i ( t ) \mathbf x_i(t)x i ​(t ) 表示。将速度更新以矢量形式描述,则有:

v i ( t + 1 ) = v i ( t ) + c 1 ⋅ r 1 ( t ) ⋅ [ y i ( t ) − x i ( t ) ] + c 2 ⋅ r 2 ( t ) ⋅ [ y ^ i ( t ) − x i ( t ) ] \mathbf v_{i}(t+1)=\mathbf v_{i}(t)+c_1\cdot \mathbf r_{1}(t)\cdot [\mathbf y_{i}(t)-\mathbf x_{i}(t)]+c_2\cdot \mathbf r_{2}(t)\cdot [\hat \mathbf y_{i}(t)-\mathbf x_{i}(t)]v i ​(t +1 )=v i ​(t )+c 1 ​⋅r 1 ​(t )⋅[y i ​(t )−x i ​(t )]+c 2 ​⋅r 2 ​(t )⋅[y ^​i ​(t )−x i ​(t )],

其中 v i ( t ) \mathbf v_{i}(t)v i ​(t ) 是前速度,表示对之前飞行方向的记忆,这一项可视为动量,它阻止粒子改变方向,是 惯性项

c 1 ⋅ r 1 ( t ) ⋅ [ y i ( t ) − x i ( t ) ] c_1\cdot \mathbf r_{1}(t)\cdot [\mathbf y_{i}(t)-\mathbf x_{i}(t)]c 1 ​⋅r 1 ​(t )⋅[y i ​(t )−x i ​(t )] 是对粒子 i 过去表现的量化,被称为 认知部分。某种意义上讲,认知部分是粒子 i 关于最优位置的个体记忆。这一项的影响是会使粒子退回到它曾经的最优位置;

c 2 ⋅ r 2 ( t ) ⋅ [ y ^ i ( t ) − x i ( t ) ] c_2\cdot \mathbf r_{2}(t)\cdot [\hat \mathbf y_{i}(t)-\mathbf x_{i}(t)]c 2 ​⋅r 2 ​(t )⋅[y ^​i ​(t )−x i ​(t )] 是对邻居信息的量化,即社会信息,被称为 社会部分。社会部分类似于个人寻求达到的群体规范或标准;这一项的影响是使得每个粒子向该粒子邻居发现的最优位置移动。

认知部分和社会部分分别由 c 1 ⋅ r 1 ( t ) c_1\cdot \mathbf r_{1}(t)c 1 ​⋅r 1 ​(t )和 c 2 ⋅ r 2 ( t ) c_2\cdot \mathbf r_{2}(t)c 2 ​⋅r 2 ​(t ) 赋予权重。当从时间 t 到 t+1 时,速度和位置的变化如下:

粒子群算法(PSO)——总体概述

; 全局最优PSO

每个粒子的邻居是整个粒子群,g − b e s t g-best g −b e s t PSO的社会网络结构应用的是 星型拓扑结构,这种结构中,粒子速度更新的社会部分反映的是从种群中的所有粒子中得到信息。

粒子群算法(PSO)——总体概述

g − b e s t g-best g −b e s t PSO的速度为:v i j ( t + 1 ) = v i j ( t ) + c 1 ⋅ r 1 j ( t ) ⋅ [ y i j ( t ) − x i j ( t ) ] + c 2 ⋅ r 2 j ( t ) ⋅ [ y ^ i j ( t ) − x i j ( t ) ] v_{ij}(t+1)=v_{ij}(t)+c_1\cdot r_{1j}(t)\cdot [y_{ij}(t)-x_{ij}(t)]+c_2\cdot r_{2j}(t)\cdot [\hat y_{ij}(t)-x_{ij}(t)]v i j ​(t +1 )=v i j ​(t )+c 1 ​⋅r 1 j ​(t )⋅[y i j ​(t )−x i j ​(t )]+c 2 ​⋅r 2 j ​(t )⋅[y ^​i j ​(t )−x i j ​(t )],

其中 v i j ( t ) v_{ij}(t)v i j ​(t ) 是粒子 i i i 在第 j j j 维的速度,x i j ( t ) x_{ij}(t)x i j ​(t ) 是粒子 i i i 在第 j j j 维的位置,j = 1 , 2 , ⋯ , n x j=1,2,\cdots,n_x j =1 ,2 ,⋯,n x ​;c 1 , c 2 c_1,c_2 c 1 ​,c 2 ​ 是加速度常数(用于衡量认知部分和社会部分分别的贡献程度),r 1 j ( t ) , r 2 j ( t ) ∼ U ( 0 , 1 ) r_{1j}(t),r_{2j}(t)\sim U(0,1)r 1 j ​(t ),r 2 j ​(t )∼U (0 ,1 ) 是从均匀分布中采样得到的随机值。

在最小化问题中,y i ( t ) \mathbf y_i(t)y i ​(t ) 的更新规则为:y i ( t + 1 ) = { y i ( t ) , i f f ( x i ( t + 1 ) ) ≥ f ( y i ( t ) ) x i ( t + 1 ) i f f ( x i ( t + 1 ) ) < f ( y i ( t ) ) \displaystyle \mathbf y_i(t+1)=\left{ \begin{aligned} \mathbf y_i(t), & & {if\,\,f(\mathbf x_i(t+1))\ge f(y_i(t))}\ \mathbf x_i(t+1) & & {if\,\,f(\mathbf x_i(t+1))< f(y_i(t))}\ \end{aligned} \right.y i ​(t +1 )={y i ​(t ),x i ​(t +1 )​​i f f (x i ​(t +1 ))≥f (y i ​(t ))i f f (x i ​(t +1 ))<f (y i ​(t ))​
其中,f : R n x → R f:\mathbb R^{n_x}\to\mathbb R f :R n x ​→R 是适应度函数。

而 y ^ ( t ) = m i n { f ( x 0 ( t ) ) , ⋯ , x n s ( t ) ) } \displaystyle \hat\mathbf y(t)=min{f(\mathbf x_0(t)),\cdots,\mathbf x_{n_s}(t))}y ^​(t )=m i n {f (x 0 ​(t )),⋯,x n s ​​(t ))}

其算法伪代码可表示如下:

粒子群算法(PSO)——总体概述

对于一个二维变量的寻优问题,以符号 “× \times ×” 表示最优解位置,则在第 t 步和 t + 1步,粒子变化示意图为:

粒子群算法(PSO)——总体概述

局部最优PSO

l − b e s t l-best l −b e s t PSO 中每个粒子的邻居相比于g − b e s t g-best g −b e s t PSO要少很多,它采用的是 环形社会网络拓扑结构。这种结构中,粒子速度更新的社会部分反映的是粒子周边邻居中得到的信息,反映的是局部环境信息。这种情况下,社会信息是该粒子的邻居中的最佳位置,记为 y ^ ( t ) ∈ N i \hat\mathbf y(t)\in\mathcal N_i y ^​(t )∈N i ​。

粒子群算法(PSO)——总体概述

其邻居集合可表示为:N i = { y i − n N i ( t ) , y i − n N i + 1 ( t ) , ⋯ , y i − 1 ( t ) , y i + 1 ( t ) , ⋯ , y i + n N i ( t ) } \mathcal N_i={\mathbf y_{i-n_{\mathcal N_i}}(t),\mathbf y_{i-n_{\mathcal N_i}+1}(t),\cdots,\mathbf y_{i-1}(t),\mathbf y_{i+1}(t),\cdots,\mathbf y_{i+n_{\mathcal N_i}}(t)}N i ​={y i −n N i ​​​(t ),y i −n N i ​​+1 ​(t ),⋯,y i −1 ​(t ),y i +1 ​(t ),⋯,y i +n N i ​​​(t )},邻居数量为n N i n_{\mathcal N_i}n N i ​​。个体最佳位置以 y i ( t ) \mathbf y_i(t)y i ​(t ) 表示(截止 t 时刻,粒子 i 搜索到的最优位置)。则该方法的速度更新与 g − b e s t g-best g −b e s t PSO相同。

在基础的PSO中,粒子彼此之间没有联系,而邻居的选择是基于粒子索引的。基于索引的邻居选择,其不需要粒子的空间序列,因此计算是很便宜的,利用粒子之间的距离来生成邻居;同时,它不需要粒子在空间中的相对位置,还有助于所有粒子相关的优良解的信息的传播。

一个粒子可以作为许多粒子的邻居,这种邻居之间的交互作用促进了邻居之间的信息交换,使得种群向最优解收敛。

粒子群算法(PSO)——总体概述

对于一个二维变量的寻优问题,以符号 “× \times ×” 表示最优解位置,则在第 t 步和 t + 1步,粒子变化示意图为:

粒子群算法(PSO)——总体概述

如图所示,在邻居 1 中,粒子 a 和 b 向 c 移动;邻居 2 中, 粒子 d 和 e 向 f 移动,但在下一次迭代中,粒子 e 变成了这一组的最优位置,则粒子 d 和 f 向 e 移动。

因为 g − b e s t g-best g −b e s t PSO 有着更大的粒子连通性,它的收敛比 l − b e s t l-best l −b e s t PSO更快;但是,它的多样性比 l − b e s t l-best l −b e s t PSO要差。因为 l − b e s t l-best l −b e s t PSO 的多样性更大,即其可以覆盖更大的搜索空间,因此不容易陷入局部最优,而其邻居的网络拓扑结构对 l − b e s t l-best l −b e s t PSO的性能也有影响。

关于粒子群算法参数及其他方面的讨论,可看以下两篇:
粒子群算法(PSO)——算法详解(一)
粒子群算法(PSO)——算法详解(二)

Original: https://blog.csdn.net/qq_41536160/article/details/122127808
Author: 有梦想的雨
Title: 粒子群算法(PSO)——总体概述

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/651617/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球