智能优化算法:吉萨金子塔建造优化算法
摘要:吉萨金子塔建造优化算法(Giza Pyramids Construction,GPC)是于2020年提出的一种,新型智能优化算法,其仿照金字塔建造的过程,具有寻优能力强,精度高的特点。
1.算法原理
(1)计算斜坡石块位移。
在这里,我们需要一个恒定加速度下的时间无关的运动方程,可以用下面的方程来计算斜坡上石块的位移,
d
=
v
0
2
2
g
(
s
i
n
(
θ
)
+
u
k
c
o
s
(
θ
)
)
(1)
d=\frac{v_0^2}{2g(sin(\theta)+u_kcos(\theta))}\tag{1}
d=2g(sin(θ)+uk?cos(θ))v02??(1) 其中
d
d
d是位移的值。
g
g
g是重力加速度取值9.8。
θ
\theta
θ为斜坡角度。
v
0
v_0
v0??为石块的初始速度,算法中每次迭代由一个均匀分布的随机数确定。在这种安排下,如果工人对石块施加力,石块就开始以初始速度移动。根据物理科学,摩擦力使石块在一段时间后停止。于是工人再次对石块施加另一个力,使石块以初始速度再次移动。在算法的每一次迭代中,初始速度被认为是一个随机数,因为每次工人试图移动石块时,施加的力根据工人消耗的功率而变化。
v
0
v_0
v0?可由式(2)计算。
v
0
=
r
a
n
d
(
0
,
1
)
(2)
v_0=rand(0,1) \tag{2}
v0?=rand(0,1)(2) 实际上,
r
a
n
d
(
0
,
1
)
rand(0,1)
rand(0,1)是一个介于0和1之间的随机数,即
0
<
v
0
=
r
a
n
d
(
0
,
1
)
<
1
0<v0=rand(0, 1)<1
0<v0=rand(0,1)<1,同时,
u
k
u_k
uk?是石砌块之间的动态摩擦系数和斜坡和算法是由均匀分布的随机数。由式(3)计算。
u
k
=
r
a
n
d
[
u
k
m
i
n
,
u
k
m
a
x
]
(3)
u_k=rand[u_{kmin},u_{kmax}]\tag{3}
uk?=rand[ukmin?,ukmax?](3) 该算法预先确定最小
u
k
u_k
uk?和最大
u
k
u_k
uk?,然后在每次迭代中假设这两个值之间的一个随机数。磨擦量随机性的原因是坡道表面没有抛光,由于某些部位可能不均匀,磨擦量可能增加或减少。
该算法的基本思想是推动石块的工人不断地移动或摇动,以获得对石块的最佳支配和最佳控制。这些冲击使工人进行非重复性的动作,以更好地推动石块。
如前所述,公式(1)决定了相对于之前位置的石块位移量。用这个等式来确定工人的新位置,变动不大。对于工人来说,摩擦是不考虑的。因此,工人推石块的新位置可由式(4)求得。
x
=
v
0
2
2
g
s
i
n
(
θ
)
(4)
x=\frac{v_0^2}{2gsin(\theta)}\tag{4}
x=2gsin(θ)v02??(4) 在这个方程中,
x
x
x是工人的移动量。工人随着石块向上移动,同时对石块施加力。这里的目标是让工人们用他们的小动作更好地控制岩块。但是工人也有初始速度。所以对于工人来说,摩擦力是不考虑的。
这是算法的规则之一。通过公式(3)和(4)计算出石块位置和工人运动的变化,由这两个公式的结果得到一个新的位置见式(5)。
p
i
=
(
p
i
+
d
)
?
x
ξ
i
(5)
p_i=(p_i+d)*x\xi_i\tag{5}
pi?=(pi?+d)?xξi?(5) 其中,
p
i
p_i
pi??为当前位置,
d
d
d为石块的位移值,
x
x
x为工人的移动量,
ξ
i
\xi_i
ξi?为符合均匀分布、正态分布或Lévy分布的随机向量。这样,将石块的位移与之前的位置相加,再乘以工人的位移量,就得到了新的位置。
有时,在建造金字塔的过程中,工人失去了他的能力或权力,结果,他被另一个人取代。这种替换是为了平衡力量。这样,工人们就可以根据自己的力量和能力自行搬运合适的石块。所以一个工人在他自己的位置上没有效率,也许在其他位置上,效率会来的。这个替换操作在算法中以50%的概率执行(默认情况下)。
因此,在每次迭代中,一个工人被另一个工人替换的概率是50%。替换操作的使用非常类似于统一交叉操作。
假设,如果问题的主要解决方案是
?
=
(
ψ
1
,
ψ
2
,
.
.
.
,
ψ
n
)
\phi = (\psi_1,\psi_2,...,\psi_n)
?=(ψ1?,ψ2?,...,ψn?),和由式(5)生成的解决方案
Φ
=
(
Φ
1
,
Φ
2
,
.
.
.
,
Φ
n
)
\Phi = (\Phi_1,\Phi_2,...,\Phi_n)
Φ=(Φ1?,Φ2?,...,Φn?)有百分之一百五十的概率,将取代一些的主要解决方案与生成的解决方案。产生的新解为
Z
=
(
ξ
1
,
ξ
2
,
.
.
.
,
ξ
n
)
Z=(\xi _1,\xi _2,...,\xi_n)
Z=(ξ1?,ξ2?,...,ξn?)。因此,由式(6)用于替换乘上这个值就决定了下一次迭代时工作人员在石块周围的位置。
ξ
k
=
{
Φ
k
,
i
f
?
r
a
n
d
≤
0.5
ψ
k
,
e
l
s
e
(6)
\xi_k=\begin{cases} \Phi_k,if\,rand\leq0.5\\ \psi_k,else \end{cases}\tag{6}
ξk?={Φk?,ifrand≤0.5ψk?,else?(6) 算法步骤如下:
步骤1:初始化种群,并评估适应度函数值确定最优工人或石块位置。
步骤2:根据式(1)更新石块移动量。
步骤3:根据式(4)更新工人的移动量。
步骤4:根据式(5)更新种群位置。
步骤5:根据式(6)评估替代工人的可能性。
步骤6:重新评估适应度函数值,并更新最优解位置和最优解。
步骤6:判断是否满足迭代条件,如是满足则输出最优结果否则返回步骤2重新迭代更新计算。
2.算法结果
3.参考文献
[1]Sasan Harifi et al., A Giza Pyramids Construction: an ancient?inspired metaheuristic algorithm for optimization [J]. Evolutionary Intelligence. 2020.
4.Matlab代码
|