智能优化算法:河马优化算法

智能优化算法:河马优化算法


河马优化算法是 Amiri M. H. 等 [ 20 ] ^{[20]} [20]于 2024 年提出的新群体智能算法,灵感来源于河马的行为。该算法模拟河马在河流或池塘中的位置更新、防御捕食者策略和规避方法来解决优化问题。其核心分为 3 个阶段:河马初始位置更新、河马防御捕食者、河马逃离捕食者。

1.算法原理

河马算法初始阶段决策变量初始化公式为
z i j = l b j + p × ( u b j − l b j ) ,   ( i = 1 , 2 , … , N ; j = 1 , 2 , … , m ) (7) z_{ij} = lb_j + p \times (ub_j - lb_j),\ (i = 1,2,\dots,N; j = 1,2,\dots,m) \tag{7} zij=lbj+p×(ubjlbj), (i=1,2,,N;j=1,2,,m)(7)
式中, p p p ( 0 , 1 ) (0,1) (0,1) 内的随机数; u b j ub_j ubj l b j lb_j lbj 分别为第 j j j 维度的上界和下界。

河马初始位置更新主要模拟河马群体的社会结构的动态变化。

雄性河马的更新公式为
z i j M = z i j + p 1 × ( A hippo − J 1 × z i j ) (8) z_{ij}^{\text{M}} = z_{ij} + p_1 \times (A_{\text{hippo}} - J_1 \times z_{ij}) \tag{8} zijM=zij+p1×(AhippoJ1×zij)(8)
式中, z i j M z_{ij}^{\text{M}} zijM 为第 i i i 只河马在第 j j j 维的位置; A hippo A_{\text{hippo}} Ahippo 为统治雄性河马的位置; p 1 p_1 p1 [ 0 , 1 ] [0,1] [0,1] 区间的随机数; J 1 J_1 J1 代表距离减少的因子。

雌性或未成熟河马的位置更新公式为
z i j VM = { z i j + h 1 × ( A hippo − J 2 × M G i ) , B > 0.6 Δ , else (9) z_{ij}^{\text{VM}} = \begin{cases} z_{ij} + h_1 \times (A_{\text{hippo}} - J_2 \times MG_i), & B > 0.6 \\ \Delta, & \text{else} \end{cases} \tag{9} zijVM={zij+h1×(AhippoJ2×MGi),Δ,B>0.6else(9)

Δ = { z i j + h 2 × ( A hippo − J 2 × M G i ) , p 6 > 0.6 l b j + p 7 × ( u b j − l b j ) , else (10) \Delta = \begin{cases} z_{ij} + h_2 \times (A_{\text{hippo}} - J_2 \times MG_i), & p_6 > 0.6 \\ lb_j + p_7 \times (ub_j - lb_j), & \text{else} \end{cases} \tag{10} Δ={zij+h2×(AhippoJ2×MGi),lbj+p7×(ubjlbj),p6>0.6else(10)

B = exp ⁡ ( − t Maxiteration ) (11) B = \exp\left(-\frac{t}{\text{Maxiteration}}\right) \tag{11} B=exp(Maxiterationt)(11)

式中, J 2 J_2 J2 [ 1 , 2 ] [1,2] [1,2] 区间内的随机数; M G i MG_i MGi 表示从群体中随机选择一些河马的平均位置; p 6 p_6 p6 p 7 p_7 p7 均为一个 [ 0 , 1 ] [0,1] [0,1] 区间内的随机数; h 1 h_1 h1 h 2 h_2 h2 是随机抽取的数字或者向量。

河马在群体中的位置更新可描述为
z i = { z i M ( F ) , F i M ( F ) < F i z i , else (12) z_i = \begin{cases} z_i^{M(F)}, & F_i^{M(F)} < F_i \\ z_i, & \text{else} \end{cases} \tag{12} zi={ziM(F),zi,FiM(F)<Fielse(12)

河马防御捕食者阶段通过模拟河马转向捕食者与对捕食者咆哮的防御方式来避免算法进入局部最优解情况。

捕食者位置随机更新为
Predato j = l b j + p 8 ⋅ ( u b j − l b j ) (13) \text{Predato}_j = lb_j + p_8 \cdot (ub_j - lb_j) \tag{13} Predatoj=lbj+p8(ubjlbj)(13)

式中, p 8 p_8 p8 表示 [ 0 , 1 ] [0,1] [0,1] 范围内的随机向量。
性河马的位置; p 1 p_1 p1 [ 0 , 1 ] [0,1] [0,1] 区间的随机数; J 1 J_1 J1 代表距离减少的因子。

雌性或未成熟河马的位置更新公式为
z i j VM = { z i j + h 1 × ( A hippo − J 2 × M G i ) , B > 0.6 Δ , else (9) z_{ij}^{\text{VM}} = \begin{cases} z_{ij} + h_1 \times (A_{\text{hippo}} - J_2 \times MG_i), & B > 0.6 \\ \Delta, & \text{else} \end{cases} \tag{9} zijVM={zij+h1×(AhippoJ2×MGi),Δ,B>0.6else(9)

Δ = { z i j + h 2 × ( A hippo − J 2 × M G i ) , p 6 > 0.6 l b j + p 7 × ( u b j − l b j ) , else (10) \Delta = \begin{cases} z_{ij} + h_2 \times (A_{\text{hippo}} - J_2 \times MG_i), & p_6 > 0.6 \\ lb_j + p_7 \times (ub_j - lb_j), & \text{else} \end{cases} \tag{10} Δ={zij+h2×(AhippoJ2×MGi),lbj+p7×(ubjlbj),p6>0.6else(10)

B = exp ⁡ ( − t Maxiteration ) (11) B = \exp\left(-\frac{t}{\text{Maxiteration}}\right) \tag{11} B=exp(Maxiterationt)(11)

式中, J 2 J_2 J2 [ 1 , 2 ] [1,2] [1,2] 区间内的随机数; M G i MG_i MGi 表示从群体中随机选择一些河马的平均位置; p 6 p_6 p6 p 7 p_7 p7 均为一个 [ 0 , 1 ] [0,1] [0,1] 区间内的随机数; h 1 h_1 h1 h 2 h_2 h2 是随机抽取的数字或者向量。

河马在群体中的位置更新可描述为
z i = { z i M ( F ) , F i M ( F ) < F i z i , else (12) z_i = \begin{cases} z_i^{M(F)}, & F_i^{M(F)} < F_i \\ z_i, & \text{else} \end{cases} \tag{12} zi={ziM(F),zi,FiM(F)<Fielse(12)

河马防御捕食者阶段通过模拟河马转向捕食者与对捕食者咆哮的防御方式来避免算法进入局部最优解情况。

捕食者位置随机更新为
Predato j = l b j + p 8 ⋅ ( u b j − l b j ) (13) \text{Predato}_j = lb_j + p_8 \cdot (ub_j - lb_j) \tag{13} Predatoj=lbj+p8(ubjlbj)(13)

式中, p 8 p_8 p8 表示 [ 0 , 1 ] [0,1] [0,1] 范围内的随机向量。河马对捕食者的反应情况为
z i j MhippoD = { RL ⊕ Predato r j + g k − m × cos ⁡ ( 2 π c ) × 1 D , F Predator j < F i RL ⊕ Predato r j + g k − m × cos ⁡ ( 2 π c ) × 1 D + p 9 , else (14) z_{ij}^{\text{MhippoD}} = \begin{cases} \text{RL} \oplus \text{Predato}_{r_j} + \dfrac{g}{k - m \times \cos(2\pi c)} \times \dfrac{1}{D}, & F_{\text{Predator}_j} < F_i \\ \text{RL} \oplus \text{Predato}_{r_j} + \dfrac{g}{k - m \times \cos(2\pi c)} \times \dfrac{1}{D + p_9}, & \text{else} \end{cases} \tag{14} zijMhippoD= RLPredatorj+km×cos(2πc)g×D1,RLPredatorj+km×cos(2πc)g×D+p91,FPredatorj<Fielse(14)

式中, RL \text{RL} RL 是具有莱维分布的随机向量,用来模拟遭受捕食攻击时河马的快速变动行为; g , k , m , c g,k,m,c g,k,m,c 是随机数,用于控制河马反应的强度和方向。

此时第 i i i 只河马的位置更新为
z i = { z i HippoD , F i HippoD < F i z i , else (15) z_i = \begin{cases} z_i^{\text{HippoD}}, & F_i^{\text{HippoD}} < F_i \\ z_i, & \text{else} \end{cases} \tag{15} zi={ziHippoD,zi,FiHippoD<Fielse(15)

河马逃离捕食者阶段主要关注在解空间中进行有效的局部搜索,以提高解决方案的精确度和质量。河马逃离位置更新为
z i j Hippoe = z i j + p 10 × [ l b j local + s 1 × ( u b j local − l b j local ) ] (16) z_{ij}^{\text{Hippoe}} = z_{ij} + p_{10} \times \left[ lb_j^{\text{local}} + s_1 \times (ub_j^{\text{local}} - lb_j^{\text{local}}) \right] \tag{16} zijHippoe=zij+p10×[lbjlocal+s1×(ubjlocallbjlocal)](16)

l b j local = l b j t ,   u b j local = u b j t (17) lb_j^{\text{local}} = \frac{lb_j}{t},\ ub_j^{\text{local}} = \frac{ub_j}{t} \tag{17} lbjlocal=tlbj, ubjlocal=tubj(17)

式中, p 10 p_{10} p10 表示 [ 0 , 1 ] [0,1] [0,1] 范围内的随机向量; s 1 s_1 s1 表示随机向量数[0,1]内的随机向量;t表示当前的迭代次数。

2.算法结果Matlab&Python

在这里插入图片描述

3.参考文献

[1] Amiri, M. H., Mehrabi Hashjin, N., Montazeri, M., & Shokouhifar, M. (2024). Hippopotamus optimization algorithm: a novel nature-inspired optimization algorithm. Scientific Reports, 14(1), 5032. https://doi.org/10.1038/s41598-024-54910-3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能算法研学社(Jack旭)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值