智能优化算法之海豚回声定位(Dolphin echolocation,DE)

一种新的优化方法:海豚回声定位

海豚回声定位算法(Dolphin echolocation,DE)由伊朗人A. Kaveh和N. Farhoudi于2013年提出,是一种新型的元启发式优化算法,其模拟了海豚在捕食过程中利用回声定位的策略。

回声定位

海豚可以发出滴答滴答的声音,这些滴答声的频率远远高于交流信号的频率。当声音撞击到物体,声波的部分能量会反射回海豚身上,海豚接收到回声后会发出另一种滴答声,海豚会根据滴答声与回声之间的时间间隔评估出与物体的距离,还会根据头部两侧接收到的不同强度的信号进行方向判断,通过不断地发出滴答声和接受回声,海豚可以跟踪并锁定目标。当海豚接近感兴趣的目标时,还会提高滴答的速率

尽管蝙蝠也是利用回声定位,但是它们却与海豚的声纳系统不同。蝙蝠声纳系统的范围较小,一般3到4米左右,而海豚能探测到的目标范围从几十米到一百多米不等。声波在空气中的传播速度大约是水传播速度的五分之一,因此蝙蝠在声纳传播过程中的信息传递速度要比海豚短得多。这些在环境和猎物方面的不同就需要不同类型的声纳系统,从而很难直接比较出孰好孰坏。

图1 海豚回声定位

对于优化问题,海豚利用回声定位的原理捕食猎物的过程类似于寻找问题的最优解。初始时,海豚对整个空间进行搜索以寻找猎物,随着越来越接近目标,海豚就会缩小搜索范围,并增加滴答声以专注于某一位置。

该算法通过限制与目标距离成比例的探索来模拟回声定位,分为两个阶段:第一阶段,算法探索整个空间以进行去全局搜索,因而可以搜寻未曾探索过的区域,主要是通过随机探索位置来实现;第二阶段,算法将围绕前一阶段中获得的较优结果附近进行开发利用。

使用海豚回声定位算法时,用户可以根据预定义的曲线改变阶段1与阶段2产生解的比率。在用户定义的这条曲线上应该保证优化收敛,算法然后设置参数以便遵循这条曲线。与其他方法相比,该方法与最优解出现的可能性相关,换句话说,对于每个变量,在可行域内都有不同的可选值,在每个循环中,算法根据用户确定的收敛曲线,定义了选择到目前为止实现的最优值的可能性,利用这条曲线,使算法的收敛性得到控制,从而降低对参数的依赖性。

回声定位算法

在开始优化之前,需要对搜索空间按以下规则进行排序:

搜索空间排序:对于每个变量,对搜索空间的可选值按升序或降序排序,如果可选值包含多个特征,则按最重要的进行排序。对于变量 j j j,所有的可选值构成了长度为 L A j LA_j LAj的向量 A j A_j Aj,将这些向量作为列就得到了矩阵 A l t e r n a t i v e s M A × N V Alternatives_{MA\times NV} AlternativesMA×NV,其中 M V MV MV m a x ( L A j ) j = 1 : N V max(LA_{j})_{j=1:NV} max(LAj)j=1:NV N V NV NV为变量个数。

优化过程中收敛因子应根据曲线进行改变,曲线定义如下:

P P ( L o o p i ) = P P 1 + ( 1 − P P 1 ) L o o p i Power  − 1 ( LoopsNumber ) Power − 1 (1) P P\left(L o o p_{i}\right)=P P_{1}+\left(1-P P_{1}\right) \frac{L o o p_{i}^{\text {Power }}-1}{(\text {LoopsNumber})^{\text {Power}}-1}\tag{1} PP(Loopi)=PP1+(1PP1)(LoopsNumber)Power1LoopiPower 1(1)

其中 P P PP PP为预定义的概率, P P 1 PP_1 PP1为第一次循环时的收敛因子,在第一次循环中随机选择解。 L o o p i Loop_i Loopi为当前循环数, P o w e r Power Power为曲线度。

循环数:算法达到收敛点的循环数,这个参数应该根据计算量由用户选择。

算法的流程图如下图所示,以下面的优化问题为例,说明海豚回声定位的主要步骤。

海豚回声定位算法流程图

min ⁡ ( h = ∑ i = 1 N x i 2 ) , x i ∈ Z , − 20 ⩽ x i ⩽ 20 (2) \min \left(h=\sum_{i=1}^{N} x_{i}^{2}\right), \quad x_{i} \in Z,-20 \leqslant x_{i} \leqslant 20\tag{2} min(h=i=1Nxi2),xiZ,20xi20(2)
其中 N = 4 N=4 N=4

在算法优化之前,首先根据等式(1)选择曲线,其中 P o w e r = 1 Power=1 Power=1,循环数Loops number=8,以及 P P 1 0.1 PP_10.1 PP10.1,则由

P P = 0.1 + 0.9 ( Loop i − 1 7 ) = 0.1 + 0.9 ( Loop i − 1 ) (3) P P=0.1+0.9\left(\frac{\text {Loop}_{i}-1}{7}\right)=0.1+0.9\left(\text {Loop}_{i}-1\right)\tag{3} PP=0.1+0.9(7Loopi1)=0.1+0.9(Loopi1)(3)

  1. 随机初始化 N L NL NL个海豚位置。

这一步主要包括创建 L N V × N V L_{NV\times NV} LNV×NV,其中 N L NL NL为位置个数, N V NV NV为变量个数(每个位置的维度)。对于该实例,考虑 N L = 30 NL=30 NL=30 N V = 4 NV=4 NV=4,每个维度取值均在[-20,20]之间,第 i i i位置的解可能为 L i = 10 , 4 , − 7 , 18 L_i={10,4,-7,18} Li=10,4,7,18

  1. 根据等式(1)(对于该例子就是等式(3))计算循环的 P P PP PP
  2. 计算每个位置的适应度值。

在该例中,式(2)定义了目标函数,如对于位置 L i L_i Li h = ( − 10 ) 2 + 4 2 + ( − 7 ) 2 + 1 8 2 = 489 h=(-10)^2+4^2+(-7)^2+18^2=489 h=(10)2+42+(7)2+182=489。在海豚回声定位算法中,适应度值用于计算概率,较优的适应度值应该具有更高的概率,因此对于对于最小化问题则适应度应该为目标值的相反数,即 F i t n e s s = 1 / h Fitness=1/h Fitness=1/h。为了避免除以0,通常使用 F i t n e s s = 1 / ( h + 1 ) Fitness=1/(h+1) Fitness=1/(h+1),在该例中, F i t n e s s ( L i ) = 1 / ( 489 + 1 ) = 0.00204 Fitness(L_i)=1/(489+1)=0.00204 Fitness(Li)=1/(489+1)=0.00204

  1. 根据如下的海豚规则计算累积适应度值:

(a)

for i i i=1 to 可选值个数

 for j j j=1 to 变量个数

  找到Alternatives中第 j j j列的位置 L ( i , j ) L(i,j) L(i,j),命名为 A A A

  for k k k= − R e -R_e Re to R e R_e Re

    A F ( A + k ) j = 1 R e ∗ ( R e − ∣ k ∣ )  Fitness  ( i ) + A F ( A + k ) j ( 4 ) A F_{(A+k) j}=\frac{1}{R_{e}} *\left(R_{e}-|k|\right) \text { Fitness }(i)+A F_{(A+k) j}(4) AF(A+k)j=Re1(Rek) Fitness (i)+AF(A+k)j(4)

  end

 end

end

其中 A F ( A + k ) j A F_{(A+k) j} AF(A+k)j是为第 j j j个变量选择的第 ( A + k ) (A+k) (A+k)个可选值的累积适应度值(可选值的编号等于Alternatives矩阵的排序), R e R_e Re为有效半径,在该半径内A的邻域的累积适应度都会受到A的适应度值的影响,该半径建议不超过搜索空间的1/4。

对于靠近边缘的可选值( A + k A+k A+k无效, A + k < 0 A+k<0 A+k<0 A + k > L A j A+k>LA_j A+k>LAj), A F AF AF将使用反射特征进行计算,这种情况下,如果可选值与边缘的距离小于 R e R_e Re,那么在边缘上放置一面镜子时,在上述可选值的镜像位置上存在相同的可选值。

(b)为了在搜索空间中更均匀地分布分布这种可能性,对所有的序列均加上一个很小的数 A F = A F + ε A F=A F+\varepsilon AF=AF+ε,其中 ε \varepsilon ε应该按照适应度值定义的方式选择,最好小于适应度值所能取得的最小值

©找到当前循环中的最优位置,并记为最优位置“The best location”,找出分配给最优位置中各个变量的可选值,设置它们的 A F AF AF为0,即:

for j = 1 j=1 j=1 to 变量个数

 for i i i=1 to 可选值个数

  if i i i=The best location( j j j)

    A F i j = 0 AF_{ij}=0 AFij=0

  end

 end

end

对于上述优化问题,首先根据等式(2)计算累积适应度值,前面提到过,可选值应该按照升序进行排列,则可选矩阵为:
 Alternatives  = [ − 20 − 20 − 20 − 20 − 19 − 19 − 19 − 19 ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 19 19 19 19 20 20 20 20 ] (5) \text { Alternatives }=\left[\begin{array}{cccc} -20 & -20 & -20 & -20 \\ -19 & -19 & -19 & -19 \\ \cdot & \cdot & \cdot & \cdot \\ \cdot & \cdot & \cdot & \cdot \\ \cdot & \cdot & \cdot & \cdot \\ 19 & 19 & 19 & 19 \\ 20 & 20 & 20 & 20 \end{array}\right]\tag{5}  Alternatives =20191920201919202019192020191920(5)

对于采样位置 L i L_i Li,考虑 R e = 10 R_e=10 Re=10,则等式(4)变为:

for i = L i i=L_i i=Li

 for j j j=1 to 4

  找到Alternatives中第 j j j列的位置 L ( i , j ) L(i,j) L(i,j),命名为 A A A

  for k k k= − 10 -10 10 to 10 10 10

    A F ( A + k ) j = 1 10 ∗ ( 10 − ∣ k ∣ )  Fitness  ( i ) + A F ( A + k ) j ( 6 ) A F_{(A+k) j}=\frac{1}{10} *\left(10-|k|\right) \text { Fitness }(i)+A F_{(A+k) j}(6) AF(A+k)j=101(10k) Fitness (i)+AF(A+k)j(6)

  end

 end

end

其中式(5)也可表示为:

for j = 1 , 2 , 3 , 4 j={1,2,3,4} j=1,2,3,4

L ( i , j ) = − 10 , 4 , − 7 , 18 L(i,j)={-10,4,-7,18} L(i,j)=10,4,7,18,那么 A = 11 , 25 , 14 , 39 A={11,25,14,39} A=11,25,14,39,-10在可选值矩阵的第一列中排在第11位,以此类推就可以得到 A A A

 for k k k=-10 to 10

   A F ( 11 + k ) 1 = 1 10 ∗ ( 10 − ∣ k ∣ )  Fitness  ( i ) + A F ( 11 + k ) 1 ( 7 ) A F_{(11+k) 1}=\frac{1}{10} *\left(10-|k|\right) \text { Fitness }(i)+A F_{(11+k) 1}(7) AF(11+k)1=101(10k) Fitness (i)+AF(11+k)1(7)

   A F ( 25 + k ) 2 = 1 10 ∗ ( 10 − ∣ k ∣ )  Fitness  ( i ) + A F ( 25 + k ) 2 A F_{(25+k) 2}=\frac{1}{10} *\left(10-|k|\right) \text { Fitness }(i)+A F_{(25+k) 2} AF(25+k)2=101(10k) Fitness (i)+AF(25+k)2

   A F ( 14 + k ) 3 = 1 10 ∗ ( 10 − ∣ k ∣ )  Fitness  ( i ) + A F ( 14 + k ) 3 A F_{(14+k) 3}=\frac{1}{10} *\left(10-|k|\right) \text { Fitness }(i)+A F_{(14+k) 3} AF(14+k)3=101(10k) Fitness (i)+AF(14+k)3

   A F ( 39 + k ) 4 = 1 10 ∗ ( 10 − ∣ k ∣ )  Fitness  ( i ) + A F ( 39 + k ) 4 A F_{(39+k) 4}=\frac{1}{10} *\left(10-|k|\right) \text { Fitness }(i)+A F_{(39+k) 4} AF(39+k)4=101(10k) Fitness (i)+AF(39+k)4

 end

end

ϵ = 1 / ( 4 ∗ 2 0 2 ) \epsilon=1/(4*20^2) ϵ=1/(4202),那么 A F = A F + 0.000625 AF=AF+0.000625 AF=AF+0.000625

在式(7)的这些等式中,对于第2个变量 j = 2 j=2 j=2,在计算累积适应度时,应该将搜索空间分为两个区域:受影响区域(有效半径内)和不受影响区域。设定 R e = 10 R_e=10 Re=10,由于第2个变量选择的可选值为4,那么与4的距离大于10( x < 6 x<6 x<6 x > 10 x>10 x>10)的区域不会受到影响。同时在受影响的区域内,由该样本位置产生的累积适应度线性变化,其最大值出现在x=4处,则有:

A F = A F + 0.000625 AF=AF+0.000625 AF=AF+0.000625

对所有随机选择的解进行以上操作,就得到了第一次循环的最终累积适应度。

  1. 对于变量 j ( j = 1 t o N V ) j_{(j=1 to NV)} j(j=1toNV),根据以下关系计算选择可选值 i ( i = 1 t o A L j ) i_{(i=1toAL_j)} i(i=1toALj)的概率:
    P i j = A F i j ∑ i = 1 L A j A F i j (8) P_{i j}=\frac{A F_{i j}}{\sum_{i=1}^{L A j} A F_{i j}}\tag{8} Pij=i=1LAjAFijAFij(8)

根据分配给每个可选值的概率,计算下一步的位置。

在该例中,对于变量 j ( j = 1 t o 4 ) j_{(j=1 to 4)} j(j=1to4),计算可选值 i ( i = 1 t o 40 ) i_{(i=1to40)} i(i=1to40)的概率:

P i j = A F i j ∑ k = 1 40 A F k j (9) P_{i j}=\frac{A F_{i j}}{\sum_{k=1}^{40} A F_{k j}}\tag{9} Pij=k=140AFkjAFij(9)

  1. 为最优位置的所有变量选择的所有可选值分配概率 P P PP PP,根据下面的公式,把其余的概率分配给其他可选值:

for j = 1 j=1 j=1 to 变量个数

 for i = 1 i=1 i=1 to 可选值个数

  if i = 1 i=1 i=1 The best location( j j j)

    P i j = P P P_{ij}=PP Pij=PP (10)

  else

    P i j = ( 1 − P P ) P i j P_{ij}=(1-PP)P_{ij} Pij=(1PP)Pij (11)

  end

 end

end

第一次循环4个变量的累积适应度

第一次循环的最优位置为 X 1 = − 11 , X 2 = 3 , X 3 = X 4 = 4 X1=-11,X2=3,X3=X4=4 X1=11,X2=3,X3=X4=4,根据等式(3),第一次循环的 P P = 10 % PP=10\% PP=10%,即在最优位置上的所有变量的概率为 10 % 10\% 10%,而将剩余的 90 % 90\% 90%分配给其他可选值。
P i j = ( 1 − 0.1 ) P i j = 0.9 P i j (12) P_{i j}=(1-0.1) P_{i j}=0.9 P_{i j}\tag{12} Pij=(10.1)Pij=0.9Pij(12)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

松间沙路hba

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

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

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

打赏作者

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

抵扣说明:

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

余额充值