1.背景
2023年,K Zolf等人受到淘金热时代淘金者如何找到金矿启发,提出了淘金优化算法(Gold Rush Optimizer, GRO)。
2.算法原理
2.1算法思想
GRO模拟了淘金热时代淘金者如何利用三个关键点(迁移、协作和淘金)找到金矿。
2.2算法过程
探矿者迁移
最佳金矿勘探者的位置被用作最佳金矿位置:
D
→
1
=
C
→
1
.
X
→
∗
(
t
)
−
X
→
i
(
t
)
(1)
\overrightarrow{D}_{1}=\overrightarrow{C}_{1}.\overrightarrow{X}^{*}(t)-\overrightarrow{X}_{i}(t)\tag{1}
D1=C1.X∗(t)−Xi(t)(1)
X
new
i
→
(
t
+
1
)
=
X
→
i
(
t
)
+
A
→
1
.
D
→
1
(2)
\overrightarrow{X\text{new}_i}\left(t+1\right)=\overrightarrow{X}_i\left(t\right)+\overrightarrow{A}_1.\overrightarrow{D}_1\tag{2}
Xnewi(t+1)=Xi(t)+A1.D1(2)
其中,X*为最佳金矿的位置。(PS:PSO去掉个体最优位置更新🤣
参数表述为:
A
→
1
=
1
+
l
1
(
r
→
1
−
1
2
)
C
→
1
=
2
r
→
2
(3)
\overrightarrow{A}_1=1+l_1(\overrightarrow{r}_1-\frac12)\\\overrightarrow{C}_1=2\overrightarrow{r}_2\tag{3}
A1=1+l1(r1−21)C1=2r2(3)
le为平衡因子:
l
e
=
(
max
i
t
e
r
−
i
t
e
r
max
i
t
e
r
−
1
)
e
(
2
−
1
max
i
t
e
r
)
+
1
max
i
t
e
r
(4)
l_e = \left(\frac{\max_{\mathrm{iter}}-\mathrm{iter}}{\max_{\mathrm{iter}}-1}\right)^e\left(2-\frac1{\max_{\mathrm{iter}}}\right)+ \frac1{\max_{\mathrm{iter}}}\tag{4}
le=(maxiter−1maxiter−iter)e(2−maxiter1)+maxiter1(4)
金矿开采
每个金矿勘探者的位置都被视为金矿的近似位置:
D
→
2
=
X
→
i
(
t
)
−
X
→
r
(
t
)
X
new
→
i
(
t
+
1
)
=
X
→
r
(
t
)
+
A
→
2
.
D
→
2
(5)
\overrightarrow{D}_{2}=\overrightarrow{X}_{i}\left(t\right)-\overrightarrow{X}_{r}\left(t\right)\\\overrightarrow{X\text{new}}_{i}\left(t+1\right)=\overrightarrow{X}_{r}\left(t\right)+\overrightarrow{A}_{2}.\overrightarrow{D}_{2}\tag{5}
D2=Xi(t)−Xr(t)Xnewi(t+1)=Xr(t)+A2.D2(5)
参数表述为:
A
→
2
=
2
l
2
r
1
→
−
l
2
(6)
\overrightarrow{A}_2=2l_2\overrightarrow{r_1}-l_2\tag{6}
A2=2l2r1−l2(6)
勘探者合作
由于淘金有时是通过团队合作进行,其中g1和g2是随机选择两个淘金者:
D
→
3
=
X
→
g
2
(
t
)
−
X
→
g
1
(
t
)
X
new
i
→
(
t
+
1
)
=
X
→
i
(
t
)
+
r
→
1
.
D
→
3
(7)
\overrightarrow{D}_{3}=\overrightarrow{X}_{g_{2}}\left(t\right)-\overrightarrow{X}_{g_{1}}\left(t\right)\\\overrightarrow{X\text{new}_{i}}\left(t+1\right)=\overrightarrow{X}_{i}\left(t\right)+\overrightarrow{r}_{1}.\overrightarrow{D}_{3}\tag{7}
D3=Xg2(t)−Xg1(t)Xnewi(t+1)=Xi(t)+r1.D3(7)
勘探者搬迁
金矿勘探者在不断地移动,他们为了获得更多的黄金。为了决定探矿者是留在原来的位置还是搬到新的位置,通过适应度值进行比较:
X
→
i
(
t
+
1
)
=
X
new
i
→
(
t
+
1
)
i
f
f
(
X
new
i
→
(
t
+
1
)
)
<
f
(
X
→
i
(
t
)
)
(8)
\overrightarrow{X}_i\left(t+1\right) = \overrightarrow{X\text{new}_i}\left(t+1\right) \mathrm{if} f( \overrightarrow{X\text{new}_i}\left(t+1\right) ) < f( \overrightarrow{X}_i\left(t\right))\tag{8}
Xi(t+1)=Xnewi(t+1)iff(Xnewi(t+1))<f(Xi(t))(8)
伪代码
3.结果展示
使用测试框架,测试GRO性能 一键run.m
CEC2005-F14:
CEC2005-F20:
PS:GRO效果不错👍
4.参考文献
[1] Zolf K. Gold rush optimizer: a new population-based metaheuristic algorithm[J]. Operations Research and Decisions, 2023, 33.