堆优化算法(Heap-based optimizer, HBO)模拟公司层次结构建立的树状结构,目前它选择的是三元堆或者说是一个三叉树。企业等级制度的最终目标是以最好的方式完成与业务相关的任务,主要包括三个数学模型:下属与直接领导的交互、与同事的交互和个体的自我贡献。
与直接领导交互的数学模型可以描述为:
X
i
k
(
t
+
1
)
=
B
k
+
γ
λ
k
∣
B
k
−
X
i
k
(
t
)
∣
(1)
X_i^k(t+1)=B^k+\gamma\lambda^k|B^k-X_i^k(t)|\tag{1}
Xik(t+1)=Bk+γλk∣Bk−Xik(t)∣(1)
γ
=
∣
2
−
4
mod
(
T
,
25
)
/
25
∣
(2)
\gamma=|2-4\text{mod}(T,25)/25|\tag{2}
γ=∣2−4mod(T,25)/25∣(2)
λ
k
=
2
r
−
1
(3)
\lambda^k=2r-1\tag{3}
λk=2r−1(3)其中,
t
t
t是当前迭代次数,
T
T
T是最大迭代次数,
B
B
B是当前个体的直接领导,
r
r
r是均匀分布在
[
0
,
1
]
[0,1]
[0,1]中的随机数。在迭代过程中,
γ
\gamma
γ是一个三角波,它的值在1的左右波动,从2到0,或从0到2。
在堆中,位于同一层的个体都是其同事,每个个体
X
→
i
\overrightarrow X_i
X
i根据其随机选择的同事
S
→
r
\overrightarrow S_r
S
r更新其位置,其数学模型见式(4):
X
i
k
(
t
+
1
)
=
{
S
r
k
+
γ
λ
k
∣
S
r
k
−
X
i
k
(
t
)
∣
,
f
(
S
→
r
)
<
f
(
X
→
i
(
t
)
)
X
i
k
+
γ
λ
k
∣
S
r
k
−
X
i
k
(
t
)
∣
,
f
(
S
→
r
)
≥
f
(
X
→
i
(
t
)
)
(4)
X_i^k(t+1)=\begin{dcases}S_r^k+\gamma\lambda^k|S_r^k-X_i^k(t)|,\quad\, f(\overrightarrow S_r)<f(\overrightarrow X_i(t))\\X_i^k+\gamma\lambda^k|S_r^k-X_i^k(t)|,\quad f(\overrightarrow S_r)≥f(\overrightarrow X_i(t))\end{dcases}\tag{4}
Xik(t+1)={Srk+γλk∣Srk−Xik(t)∣,f(S
r)<f(X
i(t))Xik+γλk∣Srk−Xik(t)∣,f(S
r)≥f(X
i(t))(4)其中,
f
f
f是目标函数。对于极小值问题,若
f
(
S
→
r
)
<
f
(
X
→
i
(
t
)
)
f(\overrightarrow S_r)<f(\overrightarrow X_i(t))
f(S
r)<f(X
i(t)),个体可以探索
S
→
r
\overrightarrow S_r
S
r周围的区域;若
f
(
S
→
r
)
≥
f
(
X
→
i
(
t
)
)
f(\overrightarrow S_r)≥f(\overrightarrow X_i(t))
f(S
r)≥f(X
i(t)),个体可以探索
X
→
i
\overrightarrow X_i
X
i周围的区域,以保证搜索向好的方向发展。
在个体的自我贡献的模型中,个体在前一次迭代中的一些位置信息会一直保留到下一次迭代。即个体
X
→
i
\overrightarrow X_i
X
i在下一次迭代中不会改变其第
k
k
k个分量的值。
X
i
k
(
t
+
1
)
=
X
i
k
(
t
)
(5)
X_i^k(t+1)=X_i^k(t)\tag{5}
Xik(t+1)=Xik(t)(5)在HBO中,
p
1
p_1
p1、
p
2
p_2
p2和
p
3
p_3
p3决定了个体将会在这三个数学模型中选择哪个模型进行更新。选择概率的计算方法如下:
p
1
=
1
−
t
T
(6)
p_1=1-\frac tT\tag{6}
p1=1−Tt(6)
p
2
=
p
1
+
1
−
p
1
2
(7)
p_2=p_1+\frac{1-p_1}{2}\tag{7}
p2=p1+21−p1(7)
p
3
=
p
2
+
1
−
p
1
2
=
1
(8)
p_3=p_2+\frac{1-p_1}{2}=1\tag{8}
p3=p2+21−p1=1(8)HBO通过
p
1
p_1
p1选择自我贡献模型更新个体,通过
p
2
p_2
p2选择与直接领导交互的数学模型更新个体,通过
p
3
p_3
p3选择与同事交互的数学模型更新个体。
HBO算法伪代码如下所示:
设置参数并随机初始化种群 评估种群中个体的适应度值,获取全局最优解 构建堆 for t=1 to T do for i=N to 2 do for j=1 to D do p = rand if p≤p1 通过式(5)更新个体位置 elseif p≤p2 通过式(1)更新个体位置 else 通过式(4)更新个体位置 end if end for 边界控制,计算个体的适应度值 贪心选择更新种群 更新堆,更新全局最优解 end for end for 输出全局最优解
为了验证HOA的寻优性能,将其与MVO、MFO、SCA、PSO进行对比,以文献[1]中的f52、f53、f56、f58、f62、f65、f66、f68为例。仿真实验中,5种算法的运行次数、种群规模、空间维度和最大迭代次数都保持一致,即
N
=
40
,
d
i
m
=
30
,
M
a
x
_
i
t
e
r
=
1000
N=40,dim=30,Max\_iter=1000
N=40,dim=30,Max_iter=1000,每个算法分别独立运行30次。结果显示如下:
函数:F52 MVO:最差值: 211.064,最优值:101.681,平均值:155.7958,标准差:26.0195,秩和检验:3.018e-11 MFO:最差值: 182.856,最优值:98.5464,平均值:136.828,标准差:26.2753,秩和检验:3.018e-11 SCA:最差值: 307.3645,最优值:270.2184,平均值:287.0837,标准差:8.543,秩和检验:3.018e-11 PSO:最差值: 330.8335,最优值:192.1346,平均值:283.4069,标准差:43.5351,秩和检验:3.018e-11 HBO:最差值: 11.8438,最优值:1.2728e-05,平均值:5.3955,标准差:3.9457,秩和检验:1 函数:F53 MVO:最差值: 191.1514,最优值:61.7417,平均值:108.5901,标准差:30.1568,秩和检验:3.018e-11 MFO:最差值: 242.0581,最优值:95.5866,平均值:159.2234,标准差:36.2839,秩和检验:3.018e-11 SCA:最差值: 92.928,最优值:6.1775e-06,平均值:19.4962,标准差:27.7064,秩和检验:0.64142 PSO:最差值: 90.1476,最优值:26.565,平均值:51.8968,标准差:13.447,秩和检验:3.018e-11 HBO:最差值: 6.9647,最优值:0.99496,平均值:4.2452,标准差:1.8648,秩和检验:1 函数:F56 MVO:最差值: 8.888,最优值:1.77,平均值:4.3319,标准差:1.7228,秩和检验:3.0199e-11 MFO:最差值: 19.7608,最优值:5.8027e-06,平均值:4.5296,标准差:5.7016,秩和检验:3.0199e-11 SCA:最差值: 0.089923,最优值:7.649e-05,平均值:0.010243,标准差:0.017799,秩和检验:3.0199e-11 PSO:最差值: 2.6854,最优值:0.17142,平均值:0.92583,标准差:0.57549,秩和检验:3.0199e-11 HBO:最差值: 2.5821e-06,最优值:1.4358e-13,平均值:1.5626e-07,标准差:4.9198e-07,秩和检验:1 函数:F57 MVO:最差值: 9.9815,最优值:0.00010717,平均值:0.76633,标准差:2.0537,秩和检验:3.0199e-11 MFO:最差值: 1609630106.3936,最优值:3521.8979,平均值:67933285.2464,标准差:292420436.3928,秩和检验:3.0199e-11 SCA:最差值: 0.72932,最优值:2.0792e-10,平均值:0.029731,标准差:0.13478,秩和检验:3.1589e-10 PSO:最差值: 72.6817,最优值:4.7463e-05,平均值:3.2683,标准差:13.4487,秩和检验:3.3384e-11 HBO:最差值: 5.2777e-05,最优值:8.3571e-21,平均值:1.7602e-06,标准差:9.6354e-06,秩和检验:1 函数:F58 MVO:最差值: 2.0664,最优值:0.09946,平均值:1.0191,标准差:0.69936,秩和检验:3.0199e-11 MFO:最差值: 19.9645,最优值:0.0023143,平均值:15.0424,标准差:7.9098,秩和检验:3.0199e-11 SCA:最差值: 20.297,最优值:4.744e-05,平均值:13.0569,标准差:9.2268,秩和检验:3.0199e-11 PSO:最差值: 2.5884,最优值:0.035501,平均值:1.3998,标准差:0.70149,秩和检验:3.0199e-11 HBO:最差值: 1.2159e-10,最优值:4.3689e-12,平均值:2.8884e-11,标准差:3.0036e-11,秩和检验:1 函数:F62 MVO:最差值: 0.10342,最优值:0.0156,平均值:0.0405,标准差:0.019097,秩和检验:7.8566e-12 MFO:最差值: 3.0919,最优值:6.6597e-07,平均值:0.3093,标准差:0.87696,秩和检验:7.8566e-12 SCA:最差值: 0.32443,最优值:1.2039e-07,平均值:0.042849,标准差:0.085921,秩和检验:7.8566e-12 PSO:最差值: 0.076388,最优值:0.0004588,平均值:0.012453,标准差:0.015401,秩和检验:7.8566e-12 HBO:最差值: 2.8547e-11,最优值:0,平均值:1.064e-12,标准差:5.2271e-12,秩和检验:1 函数:F65 MVO:最差值: 0.16349,最优值:0.014097,平均值:0.052552,标准差:0.03636,秩和检验:3.0199e-11 MFO:最差值: 1.6439,最优值:7.671e-05,平均值:0.077576,标准差:0.30425,秩和检验:3.0199e-11 SCA:最差值: 6677.416,最优值:1.7833,平均值:302.8989,标准差:1272.3339,秩和检验:3.0199e-11 PSO:最差值: 0.034022,最优值:0.00066859,平均值:0.0081244,标准差:0.0084745,秩和检验:3.0199e-11 HBO:最差值: 6.0684e-20,最优值:7.5179e-23,平均值:5.5285e-21,标准差:1.1829e-20,秩和检验:1 函数:F66 MVO:最差值: 7.4294,最优值:0.0022331,平均值:1.3449,标准差:1.4754,秩和检验:3.0199e-11 MFO:最差值: 1.5113,最优值:1.6542e-06,平均值:0.23741,标准差:0.42486,秩和检验:3.0199e-11 SCA:最差值: 6.0264,最优值:0.26732,平均值:1.2747,标准差:1.513,秩和检验:3.0199e-11 PSO:最差值: 5.6573,最优值:0.00057109,平均值:2.2011,标准差:1.3915,秩和检验:3.0199e-11 HBO:最差值: 8.0067e-21,最优值:7.1095e-24,平均值:9.2849e-22,标准差:1.9276e-21,秩和检验:1 函数:F68 MVO:最差值: 0.026324,最优值:0.005155,平均值:0.013884,标准差:0.0059283,秩和检验:0.77312 MFO:最差值: 40.3371,最优值:0.0462,平均值:6.2696,标准差:10.1312,秩和检验:3.0199e-11 SCA:最差值: 0.1634,最优值:0.0023236,平均值:0.02997,标准差:0.034871,秩和检验:0.012212 PSO:最差值: 8.0612,最优值:0.0013099,平均值:0.90147,标准差:2.2659,秩和检验:0.0038481 HBO:最差值: 0.020456,最优值:0.0068732,平均值:0.013077,标准差:0.0041165,秩和检验:1
实验结果表明,HBO算的性能优于其他算法。
[1] Qamar Askari, Mehreen Saeed, Irfan Younas. Heap-based optimizer inspired by corporate rank hierarchy for global optimization[J]. Expert Systems with Applications, 2021, 161: 113702.
[2] 张新明, 温少晨, 刘尚旺. 差分扰动的堆优化算法[J/OL]. 计算机应用: 1-9[2021-11-08].