分数阶粒子群算法-附代码
分数阶粒子群算法
文章目录
- 分数阶粒子群算法
- 1.粒子群优化算法
- 2. 改进粒子群算法
- 2.1 分数阶粒子群算法
- 3.实验结果
- 4.参考文献
- 5.Matlab代码
- 6.Python代码
摘要:通过引入粒子进化因子,利用粒子的状态信息自适应更改分数阶次 α ,通过速度增量为零来更新粒子速度、位置值;结合传统粒子群粒子更新公式,采用粒子对称分布的改进粒子群算法。
1.粒子群优化算法
基础粒子群算法的具体原理参考网络资料
2. 改进粒子群算法
2.1 分数阶粒子群算法
为防止传统粒子群算法陷入局部最优、早熟收敛等问题的发生,同时为了加快算法的收敛速度,由于基于分数阶的学习训练算法很容易跳出局部极值点,且能克服基于一阶梯度的传统学习训练算法易陷入局部极值的缺点,本文将粒子群算法与分数阶微分相结合,通过粒子群粒子的速度、位置的重新组合来自适应调整速度导数的阶次 α 。并通过 对 粒 子 当 前 的 速 度 求 α 阶 导 数 来 更 新 其 速 度、位置值。
根据分数阶微分的 G − L \mathrm{G}-\mathrm{L} G−L 定义, 当信号持续 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(t−1)+2(−α)(−α+1)v(t−2)+
(
−
α
)
(
−
α
+
1
)
(
−
α
+
2
)
6
v
(
t
−
3
)
=
0
(
12
)
\frac{(-\alpha)(-\alpha+1)(-\alpha+2)}{6} v(t-3)=0 (12)
6(−α)(−α+1)(−α+2)v(t−3)=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(t−1)+2(α)(−α+1)v(t−2)+6(α)(−α+1)(−α+2)v(t−3)(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(t−1)+21α(1−α)v(t−2)+61α(1−α)(2−α)v(t−3)+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=N−11j=1,j=i∑Nk=1∑D(xik−xjk)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=dmax−dmindg−dmin∈[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/2e−0.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.