智能优化算法:鱼鹰优化算法
文章目录
- 智能优化算法:鱼鹰优化算法
- 1. 鱼鹰优化算法
- 1.1 初始化
- 1.2 阶段一:定位和捕鱼(探索阶段)
- 1.3 阶段二:把鱼带到合适的位置(开发阶段)
- 2.实验结果
- 3.参考文献
- 4.Matlab
摘要:鱼鹰优化算法(Osprey Optimization Algorithm (OOA)),是于2023年提出的一种基于鱼鹰行为的优化算法,该算法通过模拟鱼鹰猎食行为来进行寻优,具有寻优能力强,收敛速度快等特点
1. 鱼鹰优化算法
1.1 初始化
与其他优化算法类似,在寻优空间里随机初始化种群:
x
i
,
j
=
l
b
j
+
r
⋅
(
u
b
j
−
l
b
j
)
(2)
x_{i, j}=l b_j+r \cdot\left(u b_j-l b_j\right) \tag{2}
xi,j=lbj+r⋅(ubj−lbj)(2)
其中
x
i
,
j
x_{i,j}
xi,j为个体,
l
b
j
lb_j
lbj为寻优下边界,
u
b
j
ub_j
ubj为寻优上边界,
r
r
r为[0,1]之间的随机数。
1.2 阶段一:定位和捕鱼(探索阶段)
鱼鹰是一种强大的猎人,由于其强大的视力,能够探测水下鱼类的位置。在确定了鱼的位置后,他们攻击它,并在水下捕食。OOA中种群更新的第一阶段是基于对鱼鹰这种自然行为的模拟而建模的。对鱼鹰攻击鱼类的建模会导致鱼鹰在搜索空间中的位置发生显著变化,这增加了OOA在识别最佳区域和逃离局部最优方面的探索能力。
在OOA设计中,对于每只鱼鹰,搜索空间中具有更好目标函数值的其他鱼鹰的位置被视为水下鱼类。每个鱼鹰的鱼组是用(4)指定的。
F
P
i
=
{
X
k
∣
k
∈
{
1
,
2
,
…
,
N
}
∧
F
k
<
F
i
}
∪
{
X
best
}
(4)
F P_i=\left\{X_k \mid k \in\{1,2, \ldots, N\} \wedge F_k<F_i\right\} \cup\left\{X_{\text {best }}\right\}\tag{4}
FPi={Xk∣k∈{1,2,…,N}∧Fk<Fi}∪{Xbest }(4)
其中
F
P
i
FP_i
FPi是第
i
i
i只鱼鹰的鱼集合,
X
b
e
s
t
X_{best}
Xbest是最佳鱼鹰的位置。
鱼鹰随机检测到其中一条鱼的位置并攻击它。在模拟鱼鹰向鱼移动的基础上,使用(5)计算相应鱼鹰的新位置。如果该新位置更优,则根据(6)替换鱼鹰的先前位置。
x
i
,
j
P
1
=
x
i
,
j
+
r
i
,
j
⋅
(
S
F
i
,
j
−
I
i
,
j
⋅
x
i
,
j
)
,
(5-a)
x_{i, j}^{P 1}=x_{i, j}+r_{i, j} \cdot\left(S F_{i, j}-I_{i, j} \cdot x_{i, j}\right),\tag{5-a}
xi,jP1=xi,j+ri,j⋅(SFi,j−Ii,j⋅xi,j),(5-a)
x i , j P 1 = { x i , j P 1 , l b j ≤ x i , j P 1 ≤ u b j l b j , x i , j P 1 < l b j u b j , x i , j P 1 > u b j (5-b) x_{i, j}^{P 1}=\left\{\begin{array}{l} x_{i, j}^{P_1}, l b_j \leq x_{i, j}^{P_1} \leq u b_j \\ l b_j, x_{i, j}^{P_1}<l b_j \\ u b_j, x_{i, j}^{P 1}>u b_j \end{array}\right.\tag{5-b} xi,jP1=⎩ ⎨ ⎧xi,jP1,lbj≤xi,jP1≤ubjlbj,xi,jP1<lbjubj,xi,jP1>ubj(5-b)
X i = { X i P 1 , F i P 1 < F i X i , else (6) X_i=\left\{\begin{array}{l} X_i^{P 1}, F_i^{P 1}<F_i \\ X_i, \text { else } \end{array}\right.\tag{6} Xi={XiP1,FiP1<FiXi, else (6)
其中 S F SF SF为鱼鹰选中的鱼, r r r为[0,1]之间的随机数, I I I的值为{1,2}中的一个。
1.3 阶段二:把鱼带到合适的位置(开发阶段)
鱼鹰在猎杀一条鱼后,会把它带到一个合适的(对他来说安全的)位置,在那里吃。OOA中种群更新的第二阶段是基于对鱼鹰这种自然行为的模拟进行建模的。将鱼带到合适位置的建模导致鱼鹰在搜索空间中的位置发生微小变化,这导致OOA在局部搜索中的利用能力增加,并在发现的解决方案附近收敛到更好的解决方案。
在OOA的设计中,为了模拟鱼鹰的这种自然行为,首先,对于种群中的每个成员,使用(7)计算一个新的随机位置作为“适合吃鱼的位置”。然后,如果目标函数的值在这个新位置上得到改善,则它根据(8)替换相应鱼鹰的先前位置。
x
i
,
j
P
2
=
x
i
,
j
+
l
b
j
+
r
⋅
(
u
b
j
−
l
b
j
)
t
,
i
=
1
,
2
,
…
,
N
,
j
=
1
,
2
,
…
,
m
,
t
=
1
,
2
,
…
,
T
,
(7-a)
x_{i, j}^{P 2}=x_{i, j}+\frac{l b_j+r \cdot\left(u b_j-l b_j\right)}{t}, i=1,2, \ldots, N, j=1,2, \ldots, m, t=1,2, \ldots, T, \tag{7-a}
xi,jP2=xi,j+tlbj+r⋅(ubj−lbj),i=1,2,…,N,j=1,2,…,m,t=1,2,…,T,(7-a)
x i , j P 2 = { x i , j P 2 , l b j ≤ x i , j P 2 ≤ u b j l b j , x i , j P 2 < l b j u b j , x i , j P 2 > u b j , (7-b) x_{i, j}^{P 2}=\left\{\begin{array}{l} x_{i, j}^{P 2}, l b_j \leq x_{i, j}^{P 2} \leq u b_j \\ l b_j, x_{i, j}^{P 2}<l b_j \\ u b_j, x_{i, j}^{P 2}>u b_j, \end{array}\right.\tag{7-b} xi,jP2=⎩ ⎨ ⎧xi,jP2,lbj≤xi,jP2≤ubjlbj,xi,jP2<lbjubj,xi,jP2>ubj,(7-b)
X i = { X i P 2 , F i P 2 < F i X i , else (8) X_i=\left\{\begin{array}{l} X_i^{P 2}, F_i^{P 2}<F_i \\ X_i, \text { else } \end{array}\right.\tag{8} Xi={XiP2,FiP2<FiXi, else (8)
其中 t t t为迭代次数, T T T为最大迭代次数。
算法流程图如下:
2.实验结果
3.参考文献
[1]Dehghani Mohammad,Trojovský Pavel. Osprey optimization algorithm: A new bio-inspired metaheuristic algorithm for solving engineering optimization problems[J]. Frontiers in Mechanical Engineering,2023.