分数阶粒子群算法-附代码

分数阶粒子群算法


摘要:通过引入粒子进化因子,利用粒子的状态信息自适应更改分数阶次 α ,通过速度增量为零来更新粒子速度、位置值;结合传统粒子群粒子更新公式,采用粒子对称分布的改进粒子群算法。

1.粒子群优化算法

基础粒子群算法的具体原理参考网络资料

2. 改进粒子群算法

2.1 分数阶粒子群算法

为防止传统粒子群算法陷入局部最优、早熟收敛等问题的发生,同时为了加快算法的收敛速度,由于基于分数阶的学习训练算法很容易跳出局部极值点,且能克服基于一阶梯度的传统学习训练算法易陷入局部极值的缺点,本文将粒子群算法与分数阶微分相结合,通过粒子群粒子的速度、位置的重新组合来自适应调整速度导数的阶次 α 。并通过 对 粒 子 当 前 的 速 度 求 α 阶 导 数 来 更 新 其 速 度、位置值。

根据分数阶微分的 G − L \mathrm{G}-\mathrm{L} GL 定义, 当信号持续 3 个单位即 n = 3 n=3 n=3 时, 根据分数阶微分的差值表达式 (9), 令当前时刻 导数为 0 , 即速度增量为零时求当前时刻速度, 如下式

d a v ( t ) d ( t ) α ≈ v ( t ) + ( − α ) v ( t − 1 ) + ( − α ) ( − α + 1 ) 2 v ( t − 2 ) + \frac{d^a v(t)}{d(t)^\alpha} \approx v(t)+(-\alpha) v(t-1)+\frac{(-\alpha)(-\alpha+1)}{2} v(t-2)+ d(t)αdav(t)v(t)+(α)v(t1)+2(α)(α+1)v(t2)+ ( − α ) ( − α + 1 ) ( − α + 2 ) 6 v ( t − 3 ) = 0 ( 12 ) \frac{(-\alpha)(-\alpha+1)(-\alpha+2)}{6} v(t-3)=0 (12) 6(α)(α+1)(α+2)v(t3)=0(12)
可得
v ( t ) = ( α ) v ( t − 1 ) + ( α ) ( − α + 1 ) 2 v ( t − 2 ) + ( α ) ( − α + 1 ) ( − α + 2 ) 6 v ( t − 3 ) (13) v(t)=(\alpha) v(t-1)+\frac{(\alpha)(-\alpha+1)}{2} v(t-2)+\frac{(\alpha)(-\alpha+1)(-\alpha+2)}{6} v(t-3) \tag{13} v(t)=(α)v(t1)+2(α)(α+1)v(t2)+6(α)(α+1)(α+2)v(t3)(13)

设式 (10) 中 ω = 1 \omega=1 ω=1, 则粒子速度按下列公式更新
v ( t + 1 ) = α v ( t − 1 ) + 1 2 α ( 1 − α ) v ( t − 2 ) + 1 6 α ( 1 − α ) ( 2 − α ) v ( t − 3 ) + c 1 r 1 d ( p i d ( t ) − x i d ( t ) ) + c 2 r 2 d ( p g d ( t ) − x i d ( t ) ) (14) \begin{gathered} v(t+1)=\alpha v(t-1)+\frac{1}{2} \alpha(1-\alpha) v(t-2)+\frac{1}{6} \alpha(1-\alpha)(2-\alpha) v(t-3)+c_1 r_{1 d}\left(p_{i d}(t)-\right. \\ \left.x_{i d}(t)\right)+c_2 r_{2 d}\left(p_{g d}(t)-x_{i d}(t)\right) \end{gathered}\tag{14} v(t+1)=αv(t1)+21α(1α)v(t2)+61α(1α)(2α)v(t3)+c1r1d(pid(t)xid(t))+c2r2d(pgd(t)xid(t))(14)
其中, α \alpha α 为分数阶次。粒子位置按照式 (11) 进行不断调整 更新, 直到找到最佳位置。

由于本文分数阶粒子群算法的分数阶次 α \alpha α 采用的是自 适应参数调整机制, 通过引入进化因子 f f f, 利用粒子的位 置、速度状态来自适应改变分数阶次 α \alpha α 。对于粒子群算法中 的每个粒子i, 粒子到其它粒子的平均距离公式如下
d i x = 1 N − 1 ∑ j = 1 , j = i N ∑ k = 1 D ( x i k − x j k ) 2 (15) d_{i x}=\frac{1}{N-1} \sum_{j=1, j=i}^N \sqrt{\sum_{k=1}^D\left(x_{i k}-x_{j k}\right)^2} \tag{15} dix=N11j=1,j=iNk=1D(xikxjk)2 (15)
其中, N N N D D D 分别为粒子群个数和空间维数。
在进化过程中, 进化因子 (evolutionary factor) f f f 决定 系统当前的进化状态, 其定义为
f = d g − d min ⁡ d max ⁡ − d min ⁡ ∈ [ 0 , 1 ] (16) f=\frac{d_g-d_{\min }}{d_{\max }-d_{\min }} \in[0,1] \tag{16} f=dmaxdmindgdmin[0,1](16)
其中, d g d_g dg 为全局最优位置到其它粒子的平均距离, d max ⁡ d_{\max } dmax d min ⁡ d_{\min } dmin 为所有 d i x d_{i x} dix 中的最大值和最小值。
根据进化因子 f f f, 鉴于分数阶次 α \alpha α [ 0.5 , 0.8 ] [0.5,0.8] [0.5,0.8] 范围 内算法能够获得吏快的收敛速度 [ 13 ] { }^{[13]} [13], 故提出 α \alpha α 的动态调整 等式如下, 此时的 α \alpha α 变化与迭代次数无关
α ( f ) = 1 / 2 e − 0.47 f ∈ [ 0.5 , 0.8 ] (17) \alpha(f)=1 / 2 e^{-0.47 f} \in[0.5,0.8] \tag{17} α(f)=1/2e0.47f[0.5,0.8](17)

3.实验结果

请添加图片描述

4.参考文献

[1]魏晶茹,马瑜,夏瑞,蒋海波,周亭亭.基于分数阶粒子群的Otsu图像分割算法[J].计算机工程与设计,2017,38(12):3284-3290.DOI:10.16208/j.issn1000-7024.2017.12.017.

5.Matlab代码

6.Python代码

猜你喜欢

转载自blog.csdn.net/u011835903/article/details/127253187