鹈鹕优化算法(Pelican Optimization Algorithm,POA)是2022年由Pavel Trojovský和Mohammad Dehghani 提出的,该算法模拟了鹈鹕在狩猎过程中的自然行为。
鹈鹕很大,喙很长,喉咙里有一个大袋子,用来捕捉和吞咽猎物。这种鸟喜欢群体和社交生活,并以数百只鹈鹕为一群生活。鹈鹕的外观如下:它们的体重约为2.75至15公斤,高度约为1.06至1.83米,翼展约为0.5至3米。鹈鹕的食物主要是以鱼类为主,不常吃的是青蛙、海龟和甲壳类动物;如果它很饿,它甚至会吃海鲜。鹈鹕经常组团一起捕猎,鹈鹕在确定猎物的位置后,从10-20米的高度俯冲到猎物身上。当然,有些物种也会在低海拔地区找到它们的猎物。然后,它们在水面上展开翅膀,迫使鱼进入浅水区,以便它们能很容易地抓住鱼。当捕获鱼后,大量的水进入鹈鹕的喙,在吞下鱼之前将头部向前移动以除去多余的水。
鹈鹕在捕猎时的行为和策略是一个智能的行为过程,使得这种鸟类成为熟练的猎手。该鹈鹕优化算法设计的主要灵感来自于上述策略的建模。
在鹈鹕优化算法中,模拟了鹈鹕在攻击和狩猎时的行为和策略,以此来更新候选解。该狩猎过程分为两个阶段:逼近猎物(勘探阶段),水面飞行(开发阶段)。
鹈鹕种群初始化数学描述如下:
x i , j = l j + r a n d ⋅ ( u j − l j ) , i = 1 , 2 , … , N , j = 1 , 2 , … , m (1) {x_{i,j}} = {l_j} + rand \cdot \left( {{u_j} - {l_j}} \right),i = 1,2, \ldots ,N,j = 1,2, \ldots ,m \tag{1} xi,j=lj+rand⋅(uj−lj),i=1,2,…,N,j=1,2,…,m(1)
式中: x i , j x_{i,j} xi,j为第i个鹈鹕的第j维的位置;N为鹈鹕的种群数量;m为求解问题的维度; r a n d rand rand是[0,1]范围内的随机数;和 u j u_j uj和 l j l_j lj分别是求解问题的第j维的上下边界。
在鹈鹕优化算法中,鹈鹕种群可以用以下种群矩阵表示:
X = [ X 1 ⋮ X i ⋮ X N ] N × m = [ x 1 , 1 ⋯ x 1 , j ⋯ x 1 , m ⋮ ⋱ ⋮ ⋮ x i , 1 ⋯ x i , j ⋯ x i , m ⋮ ⋮ ⋱ ⋮ x N , 1 ⋯ x N , j ⋯ x N , m ] N × m (2) X=\left[\begin{array}{c} X_{1} \\ \vdots \\ X_{i} \\ \vdots \\ X_{N} \end{array}\right]_{N \times m}=\left[\begin{array}{ccccc} x_{1,1} & \cdots & x_{1, j} & \cdots & x_{1, m} \\ \vdots & \ddots & \vdots & & \vdots \\ x_{i, 1} & \cdots & x_{i, j} & \cdots & x_{i, m} \\ \vdots & & \vdots & \ddots & \vdots \\ x_{N, 1} & \cdots & x_{N, j} & \cdots & x_{N, m} \end{array}\right]_{N \times m} \tag{2} X=⎣⎢⎢⎢⎢⎢⎢⎡X1⋮Xi⋮XN⎦⎥⎥⎥⎥⎥⎥⎤N×m=⎣⎢⎢⎢⎢⎢⎢⎡x1,1⋮xi,1⋮xN,1⋯⋱⋯⋯x1,j⋮xi,j⋮xN,j⋯⋯⋱⋯x1,m⋮xi,m⋮xN,m⎦⎥⎥⎥⎥⎥⎥⎤N×m(2)
式中: X X X为鹈鹕的种群矩阵; X i X_i Xi为第i个鹈鹕的位置;
在鹈鹕优化算法中,求解问题的目标函数可以用来计算鹈鹕的目标函数值;鹈鹕种群的目标函数值可以用目标函数值向量表示:
F = [ F 1 ⋮ F i ⋮ F N ] N × 1 = [ F ( X 1 ) ⋮ F ( X i ) ⋮ F ( X N ) ] N × 1 (3) F=\left[\begin{array}{c} F_{1} \\ \vdots \\ F_{i} \\ \vdots \\ F_{N} \end{array}\right]_{N \times 1}=\left[\begin{array}{c} F\left(X_{1}\right) \\ \vdots \\ F\left(X_{i}\right) \\ \vdots \\ F\left(X_{N}\right) \end{array}\right]_{N \times 1}\tag{3} F=⎣⎢⎢⎢⎢⎢⎢⎡F1⋮Fi⋮FN⎦⎥⎥⎥⎥⎥⎥⎤N×1=⎣⎢⎢⎢⎢⎢⎢⎡F(X1)⋮F(Xi)⋮F(XN)⎦⎥⎥⎥⎥⎥⎥⎤N×1(3)
式中: F F F为鹈鹕种群的目标函数向量; F i F_i Fi为第i个鹈鹕的目标函数值。
在第一阶段,鹈鹕确定猎物的位置,然后向这个确定的区域移动。对鹈鹕逼近猎物策略进行建模,使得POA算法可以对搜索空间进行扫描,进而发挥POA算法在搜索空间中的不同区域的勘探能力。在POA算法中,需要重视的一点是:猎物的位置在搜索空间中是随机生成的,这样增加了POA算法在解决精确搜索问题上的勘探能力。对上述概念和逼近猎物策略进行数学建模,如下:
x i , j P 1 = { x i , j + rand ⋅ ( p j − I ⋅ x i , j ) , F p < F i x i , j + rand ⋅ ( x i , j − p j ) , else (4) x_{i, j}^{P_{1}}=\left\{\begin{array}{ll} x_{i, j}+\text { rand } \cdot\left(p_{j}-I \cdot x_{i, j}\right), & F_{p}
式中: x i , j P 1 x_{i,j}^{P_1} xi,jP1为基于第1阶段更新后第i个鹈鹕的第j维的位置;rand是[0,1]范围内的随机数; I I I为1或2的随机整数; p j p_j pj为猎物的第j维的位置; F p F_p Fp为猎物的目标函数值。
在POA算法中,如果目标函数值在该位置得到改善,则接受鹈鹕的新位置。在这种类型的更新中,也被称为有效更新,该算法不能移动到非最优区域。这个过程可以如下公式描述:
X i = { X i P 1 , F i P 1 < F i X i , else (5) X_{i}=\left\{\begin{array}{cc} X_{i}^{P_{1}}, & F_{i}^{P_{1}}
式中: X i P 1 X_i^{P_1} XiP1为第i个鹈鹕的新位置; F i P 1 F_i^{P_1} FiP1为基于第一阶段更新后的第i个鹈鹕的新位置的目 X i P 1 X_i^{P_1} XiP1标函数值。
在第二阶段,当鹈鹕到达水面后,它们在水面上展开翅膀,将鱼向上移动,然后把猎物放在它们的喉咙袋里。鹈鹕水面飞行的这种策略可以使得它们在被攻击区域内捕获更多的鱼。对鹈鹕的这种行为过程进行建模,可以使得POA算法收敛到狩猎区域更好的位置,这样增加了POA算法的局部搜索能力和开发能力。从数学的视角来看,该算法必须检查鹈鹕位置附近的位置,以便算法可以收敛到更好的位置。鹈鹕在狩猎过程中的这种行为在数学建模为:
x i , j P 2 = x i , j + R ⋅ ( 1 − t T ) ⋅ ( 2 ⋅ r a n d − 1 ) ⋅ x i , j (6) x_{i,j}^{{P_2}} = {x_{i,j}} + R \cdot \left( {1 - \frac{t}{T}} \right) \cdot (2 \cdot rand - 1) \cdot {x_{i,j}}\tag{6} xi,jP2=xi,j+R⋅(1−Tt)⋅(2⋅rand−1)⋅xi,j(6)
式中: x i , j P 2 x_{i,j}^{P_2} xi,jP2为基于第2阶段更新后第i个鹈鹕的第j维的位置;rand是[0,1]范围内的随机数; R R R为0或2的随机整数;t为当前迭代次数;T为最大迭代次数。
算法流程图如下:
[1] Trojovský P, Dehghani M. Pelican Optimization Algorithm: A Novel Nature-Inspired Algorithm for Engineering Applications. Sensors (Basel). 2022 Jan 23;22(3):855. doi: 10.3390/s22030855. PMID: 35161600; PMCID: PMC8838090.