智能优化算法:人工电场优化算法
摘要:人工电场算法(Artificial Electric Field Algorithm,AEFA)是由 Anita 和 Anupam Yadav于 2019 年提出的元启发式优化算法。AEFA 算法是一个杰出的非线性优化算法,具有全局搜索能力强、优化精度高和适应范围广等特点。
1.算法原理
人工电场算法(AEFA)受库仑定律的启发,通过模拟带电粒子在静电场的运动,将其演化成随机搜索最优解的过程。电荷在静电力的作用下相互吸引或排斥,使电荷能在搜索空间中移动。在 AEFA 算法中,仅考虑电荷的吸引力,而忽略电荷的排斥力,因而电荷量大的带电粒子能吸引所有其他电荷量较低的粒子向其靠近。
在搜索空间中,每一个电荷代表一个可行解,其强度由他们的电荷量来衡量,电荷的电荷量越大,表明该电荷越接近理论最优解。如图1所示,电荷面积的大小表示该电荷量的大小,电荷 Q 1 Q_1 Q1分别受到其它三个电荷的吸引力,根据运动定律,形成一个合力 F F F和该方向的加速度。由于电荷 Q 4 Q_4 Q4 的电荷量最大,其吸引力也越大,电荷 Q 1 Q_1 Q1 合力 F F F的方向更接近 Q 1 Q_1 Q1 与 Q 4 Q_4 Q4 之间的中心连线。因此,AEFA 算法通过模拟电荷间的相互作用力,当搜索空间存在电荷量大的电荷时,其它电荷都向电荷量大的方向靠近,使算法收敛到最优解。
图1.库仑力的作用。
AEFA 算法可看作是一个遵循库仑静电力定律和运动定律孤立的电荷系统。在此基础上,定义了算法的物理性质。
设
d
d
d维搜索空间中,第
i
i
i个电荷的位置为:
X
i
=
(
x
i
1
,
x
i
2
,
.
.
.
,
x
i
d
)
;
i
=
1
,
2
,
.
.
.
,
N
(1)
X_i=(x_i^1,x_i^2,...,x_i^d);i=1,2,...,N\tag{1}
Xi=(xi1,xi2,...,xid);i=1,2,...,N(1)
式中,
x
i
d
x_i^d
xid为电荷
i
i
i在第
d
d
d维上的位置,
N
N
N为电荷的总数。
电荷
i
i
i 在时刻
t
t
t 获得的最佳适应度值的位置由下式确定:
p
i
d
(
t
+
1
)
=
{
p
i
d
(
t
)
,
i
f
f
(
P
i
(
t
)
)
<
f
(
X
i
(
t
+
1
)
)
x
i
d
(
t
+
1
)
,
e
l
s
e
(2)
p_i^d(t+1)=\begin{cases}p_i^d(t),if\,f(P_i(t))<f(X_i(t+1))\\x_i^d(t+1),else \end{cases}\tag{2}
pid(t+1)={pid(t),iff(Pi(t))<f(Xi(t+1))xid(t+1),else(2)
所有电荷的全局最佳适应度的位置用
P
b
e
s
t
=
X
b
e
s
t
P_{best}=X_{best}
Pbest=Xbest表示。
在时刻
t
t
t,电荷
j
j
j在第
d
d
d维上受到电荷
i
i
i的库仑力如公式所示:
F
i
j
d
=
K
(
t
)
Q
i
(
t
)
Q
j
(
t
)
(
p
j
d
(
t
)
−
X
i
d
(
t
)
)
R
i
j
(
t
)
+
ξ
(3)
F_{ij}^d = K(t)\frac{Q_i(t)Q_j(t)(p_j^d(t)-X_i^d(t))}{R_{ij}(t)+\xi} \tag{3}
Fijd=K(t)Rij(t)+ξQi(t)Qj(t)(pjd(t)−Xid(t))(3)
式中,
Q
i
Q_i
Qi和
Q
j
Q_j
Qj分别为作用电荷
i
i
i和被作用电荷
j
j
j的电荷量,
ξ
\xi
ξ表示一个极小的常量。
R
i
j
R_{ij}
Rij为电荷
i
i
i与电荷
j
j
j之间的欧式距离,由下式得出:
R
i
j
(
t
)
=
∣
∣
X
i
t
(
t
)
,
X
j
(
t
)
∣
∣
2
(4)
R_{ij}(t)=||X_i^t(t),X_j(t)||_2\tag{4}
Rij(t)=∣∣Xit(t),Xj(t)∣∣2(4)
库仑常数
K
(
t
)
K(t)
K(t)为当前迭代数和系统迭代数的函数,为了控制算法的搜索精度,呈指数递减。时刻
t
t
t的库仑常数
K
(
t
)
K(t)
K(t)可由下式计算:
K
(
t
)
=
K
0
∗
e
x
p
(
−
α
i
t
e
r
m
a
x
i
t
e
r
)
(5)
K(t)=K_0*exp(-\alpha \frac{iter}{maxiter}) \tag{5}
K(t)=K0∗exp(−αmaxiteriter)(5)
式中,
K
0
K_0
K0为初值,
α
\alpha
α为常数,
i
t
e
r
iter
iter是当前迭代的次数,
m
a
x
i
t
e
r
maxiter
maxiter是系统迭代的次数。在算法伊始,库仑常数常被初始化为一个较高的值,以便于算法的初期探索,然后逐次迭代递减以控制算法的搜索精度。
在
d
d
d维搜索空间中,作用在电荷
i
i
i总的作用力等于来自其他所有电荷作用力的总和,其大小为:
F
i
d
(
t
)
=
∑
j
=
1
,
j
≠
i
N
r
a
n
d
j
F
i
j
d
(
t
)
(6)
F_i^d(t)=\sum_{j=1,j\ne i}^N rand_jF_{ij}^d(t)\tag{6}
Fid(t)=j=1,j=i∑NrandjFijd(t)(6)
式中,
r
a
n
d
j
rand_j
randj为[0,1]之间的随机数,
F
i
j
d
F_{ij}^d
Fijd为电荷
j
j
j作用在电荷
i
i
i上的库仑力。在任意时刻
t
t
t,电荷
i
i
i位于第
d
d
d维时的电场强度由下式给出:
E
i
d
(
t
)
=
F
i
d
(
t
)
Q
j
(
t
)
(7)
E_i^d(t)=\frac{F_i^d(t)}{Q_j(t)}\tag{7}
Eid(t)=Qj(t)Fid(t)(7)
根据牛顿第二运动定律,得出电荷
i
i
i在时刻
t
t
t的加速度:
a
i
d
(
t
)
=
Q
i
(
t
)
E
i
d
(
t
)
/
M
i
(
t
)
(8)
a_i^d(t)=Q_i(t)E_i^d(t)/M_i(t)\tag{8}
aid(t)=Qi(t)Eid(t)/Mi(t)(8)
在每一次迭代过程中,电荷
i
i
i根据计算得到的加速度来更新电荷的速度和位置,更新方式如下式所示:
V
i
d
(
t
+
1
)
=
r
a
n
d
i
∗
V
i
d
(
t
)
+
a
i
d
(
t
)
(9)
V_i^d(t+1)=rand_i*V_i^d(t) + a_i^d(t) \tag{9}
Vid(t+1)=randi∗Vid(t)+aid(t)(9)
X i d ( t + 1 ) = X i d ( t ) + V i d ( t + 1 ) (10) X_i^d(t+1)=X_i^d(t)+V_i^d(t+1)\tag{10} Xid(t+1)=Xid(t)+Vid(t+1)(10)
式中, V i d ( t ) , X i d ( t ) V_i^d(t),X_i^d(t) Vid(t),Xid(t)分别为电荷 i i i在时刻 t t t的速度和位置。
电荷的电荷量通过适应度函数计算得出,假设初始时每个电荷的电荷量相等。
Q
i
(
t
)
=
Q
j
(
t
)
;
i
,
j
=
1
,
2
,
.
.
.
,
N
(11)
Q_i(t)=Q_j(t);i,j=1,2,...,N \tag{11}
Qi(t)=Qj(t);i,j=1,2,...,N(11)
采取以下式子更新电荷
i
i
i的电荷量:
q
i
(
t
)
=
e
x
p
(
f
i
t
p
i
(
t
)
−
w
o
r
s
t
(
t
)
b
e
s
t
(
t
)
−
w
o
r
s
t
(
t
)
)
(12)
q_i(t)=exp(\frac{fit_{pi}(t) -worst(t)}{best(t)-worst(t)})\tag{12}
qi(t)=exp(best(t)−worst(t)fitpi(t)−worst(t))(12)
Q i ( t ) = q i ( t ) ∑ i = 1 N q i ( t ) (13) Q_i(t)=\frac{q_i(t)}{\sum_{i=1}^Nq_i(t)}\tag{13} Qi(t)=∑i=1Nqi(t)qi(t)(13)
式中, f i t i ( t ) fit_i(t) fiti(t)为电荷 i i i在时刻 t t t的适应度值。 b e s t , w o r s t best,worst best,worst分别为最优适应度值和最差适应度值。
人工电场算法实现的基本步骤如下:
Step1.在搜索空间中,随机初始电荷种群;
Step2. 随机初始化电荷的速度和位置,并计算每个电荷的适应度值
Step3.计算电荷的库仑常数,全局最优值和最差值
Step4.计算电荷的库伦力和加速度,更新例子的速度以及位置
Step5.判断是否满足停止条件,如果满足则输出最优值,否则重复步骤2-5;
2.实验结果
3.参考文献
[1]Anita,Anupam Yadav. AEFA: Artificial electric field algorithm for global optimization[J]. Swarm and Evolutionary Computation,2019,48{5}:
[1]叶桂旗. 基于人工电场算法的城市供水泵站优化调度研究[D].长安大学,2020.
4.Matlab
个人资料介绍