矮猫鼬优化算法(Dwarf Mongoose Optimization Algorithm,DMO)

一、算法灵感

  矮猫鼬优化算法(Dwarf Mongoose Optimization Algorithm,DMO)是由Jeffrey O. Agushaka等人于2022年提出的一种群体智能优化算法,其灵感来源于矮猫鼬的群体觅食行为。矮猫鼬通常生活在一个母系社会的家族群体中,主要有觅食、侦察和保姆三种社会职能。矮猫鼬以集体觅食和侦察而闻名,由雌性首领引导种群进行食物源的搜寻。一旦满足保姆交换条件,即当阿尔法组未能寻找到合适的食物时,将交换阿尔法组和保姆组的成员,且阿尔法组同时进行觅食和寻找睡眠丘。

二、算法介绍

2.1 初始化

  DMO优化从初始化矮猫鼬候选种群开始,种群在给定问题的上界和下界之间随机生成。公式如下:
X = [ x 1 , 1 x 1 , 2 … x 1 , d − 1 x 1 , d x 2 , 1 x 2 , 2 … x 2 , d − 1 x 2 , d     ⋮ ⋮      x i , j ⋮          ⋮ x N , 1 x N , 2 … x N , d − 1 x N , d ] (1) X = \left[ {\begin{aligned} &{ {x_{1,1}}} & { {x_{1,2}}} &\quad \ldots & { {x_{1,d - 1}}} &\quad { {x_{1,d}}} \cr &{ {x_{2,1}}} & { {x_{2,2}}} &\quad \ldots & { {x_{2,d - 1}}} &\quad { {x_{2,d}}} \cr &\ \ \ \vdots &\vdots\ \ &\ \quad { {x_{i,j}}} & \vdots\ \ \ \ \ &\quad\ \ \vdots \cr &{ {x_{N,1}}} & { {x_{N,2}}} &\quad \ldots & { {x_{N,d - 1}}} &\quad { {x_{N,d}}} \cr \end{aligned}} \right] \tag{1} X= x1,1x2,1   xN,1x1,2x2,2  xN,2 xi,jx1,d1x2,d1     xN,d1x1,dx2,d  xN,d (1)其中, X X X 是当前候选解的集合,它们是通过式(2)随机生成的, x i , j {x_{i,j}} xi,j 表示第 i i i 个个体在第 j j j 维的位置, N N N 表示种群大小,阿尔法组的个体数量为 n ′ n' n b s bs bs 为保姆的数量, d d d 表示问题的维数。
x i , j = u n i f r n d ( l b , u b , V a r S i z e ) (2) {x_{i,j}} = unifrnd\left( {lb,ub,VarSize} \right) \tag{2} xi,j=unifrnd(lb,ub,VarSize)(2)式中, u n i f r n d unifrnd unifrnd 是均匀分布的随机数, u b ub ub l b lb lb 分别为搜索空间的上界和下界。 V a r S i z e VarSize VarSize 表示决策变量的大小。每次迭代中的最优解就是到目前为止获得的最佳解。

2.2 阿尔法组

2.2.1 雌性首领的产生

  雌性首领在阿尔法组中产生,阿尔法组中每个雌性个体成为首领的概率为 α \alpha α,计算公式如下:
α = f i t i ∑ i = 1 N f i t i (3) \alpha {\rm{ = }}{ {fi{t_i}} \over {\sum\limits_{i = 1}^N {fi{t_i}} }} \tag{3} α=i=1Nfitifiti(3)其中, f i t i fi{t_i} fiti 是第 i i i 个个体的适应度。

2.2.2 阿尔法组成员觅食

  阿尔法组成员将共行并进行觅食,食物源的候选位置由式(4)给出:
X i + 1 = X i + p h i × p e e p × ( X i − X r a n d ) (4) {X_{i + 1}} = {X_i} + phi \times peep \times ({X_i} - {X_{rand}}) \tag{4} Xi+1=Xi+phi×peep×(XiXrand)(4)其中, X i + 1 {X_{i + 1}} Xi+1 是找到的新食物源位置, X i {X_i} Xi 为雌性首领当前的位置, p h i phi phi 是均匀分布在 [ − 1 , 1 ] [-1,1] [1,1] 之间的随机数, p e e p peep peep 选取为 2 2 2 X r a n d {X_{rand}} Xrand 是阿尔法组中的随机个体。

2.3 保姆交换条件

  保姆交换条件是用于重置阿尔法组和保姆组中的猫鼬个体。当阿尔法组成员未能搜寻到合适的食物时,认为阿尔法组成员能力不足,将交换阿尔法组和保姆组的成员。交换条件满足后,阿尔法组将同时进行觅食和寻找睡眠丘,计算公式如下:
X b = l b + r a n d ∗ ( u b − l b ) (5) {X_b} = lb + rand * (ub - lb) \tag{5} Xb=lb+rand(ublb)(5)其中, X b {X_b} Xb 为交换后个体的新位置, r a n d rand rand 0 0 0 1 1 1 之间的随机数。
  保姆交换后的觅食行为由公式(4)实现。睡眠丘是猫鼬休息的场所,而猫鼬不会回到之前的睡眠丘,这种生活模式能够避免搜索区域被过度开发的问题。新搜寻到的睡眠丘的数学模型如下:
X s m = { X i − C F ∗ p h i ∗ r a n d ∗ [ X i − M → ] i f φ i + 1 > φ i X i + C F ∗ p h i ∗ r a n d ∗ [ X i − M → ] e l s e } (6) {X_{sm}} = \left\{ {\begin{aligned} { {X_i} - CF * phi * rand * \left[ { {X_i} - \overrightarrow M } \right]} & {if} & { {\varphi _{i + 1}} > {\varphi _i}} \cr { {X_i} + CF * phi * rand * \left[ { {X_i} - \overrightarrow M } \right]} & {} & {else} \cr \end{aligned}} \right\} \tag{6} Xsm= XiCFphirand[XiM ]Xi+CFphirand[XiM ]ifφi+1>φielse (6)其中, X s m {X_{sm}} Xsm 为新的睡眠丘的位置, M → \overrightarrow M M 是决定猫鼬移动到新睡眠丘的方向向量, φ \varphi φ 是睡眠丘的平均值,计算公式如下:
M → = ∑ i = 1 N X i × s m i X i (7) \overrightarrow M = \sum\limits_{i = 1}^N { { { {X_i} \times s{m_i}} \over { {X_i}}}} \tag{7} M =i=1NXiXi×smi(7) φ = ∑ i = 1 N s m i n (8) \varphi = { {\sum\limits_{i = 1}^N {s{m_i}} } \over n} \tag{8} φ=ni=1Nsmi(8)其中, s m i s{m_i} smi 代表睡眠丘值:
s m i = f i t i + 1 − f i t i max ⁡ { ∣ f i t i + 1 , f i t i ∣ } (9) s{m_i} = { {fi{t_{i + 1}} - fi{t_i}} \over {\max \left\{ {\left| {fi{t_{i + 1}},fi{t_i}} \right|} \right\}}}\tag{9} smi=max{ fiti+1,fiti}fiti+1fiti(9)   C F CF CF 表示猫鼬种群移动能力的参数,它会随着迭代次数线性递减,计算公式如下:
C F = ( 1 − t T ) ( 2 t / T ) (10) CF = {\left( {1 - {t \over T}} \right)^{\left( { {2t /T}} \right)}}\tag{10} CF=(1Tt)(2t/T)(10)其中, t t t 为当前迭代次数, T T T 为最大迭代次数。

2.4 DMO的算法伪代码

  1. 初始化算法参数 p e e p peep peep、猫鼬种群规模 N N N、保姆数量 b s bs bs,等
  2. 设置 n ′ = N − b s n' = N - bs n=Nbs
  3. 设置保姆交换参数 L L L
  4. While t < T t<T t<T do
  5.   计算猫鼬的适应度
  6.   设置交换计数器 C C C
  7.   计算个体成为首领的概率 α \alpha α 根据公式(3)
  8.   生成一个食物源的候选位置根据公式(4)
  9.   计算找到的食物源新位置 X i + 1 {X_{i + 1}} Xi+1 的适应度
  10.   计算评估睡眠丘值根据公式(9)
  11.   计算睡眠丘值的平均值根据公式(8)
  12.   计算移动向量根据公式(7)
  13.   If C ≥ L C \ge L CL then
  14.     初始化保姆的位置根据公式(1)并计算适应度
  15.     阿尔法组寻找新睡眠丘根据公式(6)
  16.   End If
  17.   更新目前最优解
  18. End While
  19. 返回最优解

三、实验结果

DMO在23个经典测试函数(设置维度 d i m = 30 dim=30 dim=30)的F1、F5、F8中的收敛曲线,测试函数公式如下:

函数 公式 理论值
F1 F 1 ( x ) = ∑ i = 1 n x i 2 {F_1}(x) = \sum\nolimits_{i = 1}^n {x_i^2} F1(x)=i=1nxi2 0.00 0.00 0.00
F11 F 11 ( x ) = 1 400 ∑ i = 1 n x i 2 − Π i = 1 n cos ⁡ ( x i i ) + 1 {F_{11}}(x) = {1 \over {400}}\sum\nolimits_{i = 1}^n {x_i^2 - \Pi _{i = 1}^n\cos ({ { {x_i}} \over {\sqrt i }}) + 1} F11(x)=4001i=1nxi2Πi=1ncos(i xi)+1 0.00 0.00 0.00
F21 F 21 ( x ) = − ∑ i = 1 5 [ ( X − a i ) ( X − a i ) T + c i ] − 1 {F_{21}}(x) = - \sum\nolimits_{i = 1}^5 { { {[(X - {a_i}){ {(X - {a_i})}^T} + {c_i}]}^{ - 1}}} F21(x)=i=15[(Xai)(Xai)T+ci]1 − 10.1532 -10.1532 10.1532

3.1 F1收敛曲线

在这里插入图片描述

3.2 F11收敛曲线

在这里插入图片描述

3.3 F21收敛曲线

在这里插入图片描述

四、参考文献

[1] Agushaka J. O., Ezugwu A. E., Abualigag L. Dwarf mongoose optimization algorithm[J]. Computer methods in applied mechanics and engineering, 2022, 391, 114570.

猜你喜欢

转载自blog.csdn.net/jiaheming1983/article/details/129344138