目录
- 1.背景
- 2.算法原理
- 2.1算法思想
- 2.2算法过程
- 3.结果展示
- 4.参考文献
1.背景
2019年,A Yadav等人受库伦定律和运动定律启发,提出了人工电场算法(Artificial Electric Field Algorithm,AEFA)。
2.算法原理
2.1算法思想
AEFA中每个个体是一个带电的粒子,每个粒子的位置代表问题的一个解,这些带电的粒子在它们之间的电场力的引导下,逐步的向种群中最优的位置靠近。电量较小的粒子在电量较大的粒子的引力下,向带电量较大的粒子移动。在引力的不断作用下,整个种群逐渐向电量较大的个体方向逼近,最终搜索到问题的最优解,整个过程遵循牛顿第二定律。
2.2算法过程
库伦定律规定两个带电粒子间的电场力与粒子所带的电量成正比,与粒子间的距离成反比。假如两个粒子的带电量分别为 Q1和Q2 ,引力常数用K 来表示,粒子间的欧氏距离用 D 来表示,则粒子间的电场力F可用公式表示为:
F
=
K
Q
1
Q
2
D
2
(1)
F=K\frac{Q_{1}Q_{2}}{D^{2}}\tag{1}
F=KD2Q1Q2(1)
在第 t次迭代,第 i个粒子和第 j个粒子间的作用力可表示为:
F
i
j
d
(
t
)
=
K
(
t
)
Q
i
(
t
)
×
Q
j
(
t
)
R
i
j
(
t
)
+
ϵ
(
p
j
d
(
t
)
−
x
i
d
(
t
)
)
(2)
F_{ij}^{d}(t)=K(t)\frac{Q_{i}(t)\times Q_{j}(t)}{R_{ij}(t)+\epsilon}\Big(p_{j}^{d}(t)-x_{i}^{d}(t)\Big)\tag{2}
Fijd(t)=K(t)Rij(t)+ϵQi(t)×Qj(t)(pjd(t)−xid(t))(2)
其中,Rij表示粒子i与粒子j的欧式距离。K(t)是第t代的库伦常数:
K
(
t
)
=
K
0
exp
(
−
α
i
t
m
a
x
i
t
)
(3)
K(t)=K_0\exp\biggl(-\alpha\frac{it}{maxit}\biggr)\tag{3}
K(t)=K0exp(−αmaxitit)(3)
第i个个体所具有的电量:
q
i
(
t
)
=
exp
(
f
i
t
p
i
(
t
)
−
w
o
r
s
t
(
t
)
b
e
s
t
(
t
)
−
w
o
r
s
t
(
t
)
)
Q
i
(
t
)
=
q
i
(
t
)
∑
i
=
1
N
q
i
(
t
)
(4)
q_{i}(t)=\exp\biggl(\frac{fit_{pi}(t)-worst(t)}{best(t)-worst(t)}\biggr)\\Q_{i}(t)=\frac{q_{i}(t)}{\sum_{i=1}^{N}q_{i}(t)}\tag{4}
qi(t)=exp(best(t)−worst(t)fitpi(t)−worst(t))Qi(t)=∑i=1Nqi(t)qi(t)(4)
粒子i在第d维所受到的合力以及所具有的加速度:
F
i
d
(
t
)
=
∑
j
=
1
,
j
=
i
N
r
a
n
d
∗
F
i
j
d
(
t
)
a
i
d
(
t
)
=
F
i
d
(
t
)
Q
i
(
t
)
(5)
F_{i}^{d}(t)=\sum_{j=1,j=i}^{N}rand*F_{ij}^{d}(t)\\a_{i}^{d}(t)=\frac{F_{i}^{d}(t)}{Q_{i}(t)}\tag{5}
Fid(t)=j=1,j=i∑Nrand∗Fijd(t)aid(t)=Qi(t)Fid(t)(5)
速度和位置更新为:
V
i
d
(
t
+
1
)
=
r
a
n
d
×
V
i
d
(
t
)
+
a
i
d
(
t
)
X
i
d
(
t
+
1
)
=
X
i
d
(
t
)
+
V
i
d
(
t
+
1
)
(6)
V_{i}^{d}\big(t+1\big)=rand\times V_{i}^{d}\big(t\big)+a_{i}^{d}\big(t\big)\\X_{i}^{d}\big(t+1\big)=X_{i}^{d}\big(t\big)+V_{i}^{d}\big(t+1\big)\tag{6}
Vid(t+1)=rand×Vid(t)+aid(t)Xid(t+1)=Xid(t)+Vid(t+1)(6)
伪代码
3.结果展示
4.参考文献
[1] Yadav A. AEFA: Artificial electric field algorithm for global optimization[J]. Swarm and Evolutionary Computation, 2019, 48: 93-108.