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

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

回声定位

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

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

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

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

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

回声定位算法

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

搜索空间排序:对于每个变量,对搜索空间的可选值按升序或降序排序,如果可选值包含多个特征,则按最重要的进行排序。对于变量jjj,所有的可选值构成了长度为LAjLA_jLAj​的向量AjA_jAj​,将这些向量作为列就得到了矩阵AlternativesMA×NVAlternatives_{MA\times NV}AlternativesMA×NV​,其中MVMVMV为max(LAj)j=1:NVmax(LA_{j})_{j=1:NV}max(LAj​)j=1:NV​,NVNVNV为变量个数。

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

PP(Loopi)=PP1+(1−PP1)LoopiPower −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​+(1−PP1​)(LoopsNumber)Power−1LoopiPower ​−1​(1)

其中PPPPPP为预定义的概率,PP1PP_1PP1​为第一次循环时的收敛因子,在第一次循环中随机选择解。LoopiLoop_iLoopi​为当前循环数,PowerPowerPower为曲线度。

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

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

min⁡(h=∑i=1Nxi2),xi∈Z,−20⩽xi⩽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=1∑N​xi2​),xi​∈Z,−20⩽xi​⩽20(2)
其中N=4N=4N=4。

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

PP=0.1+0.9(Loopi−17)=0.1+0.9(Loopi−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(7Loopi​−1​)=0.1+0.9(Loopi​−1)(3)

  1. 随机初始化NLNLNL个海豚位置。

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

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

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

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

(a)

for iii=1 to 可选值个数

 for jjj=1 to 变量个数

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

  for kkk=−Re-R_e−Re​ to ReR_eRe​

   AF(A+k)j=1Re∗(Re−∣k∣)Fitness (i)+AF(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​=Re​1​∗(Re​−∣k∣) Fitness (i)+AF(A+k)j​(4)

  end

 end

end

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

对于靠近边缘的可选值(A+kA+kA+k无效,A+k<0A+k<0A+k<0或A+k>LAjA+k>LA_jA+k>LAj​),AFAFAF将使用反射特征进行计算,这种情况下,如果可选值与边缘的距离小于ReR_eRe​,那么在边缘上放置一面镜子时,在上述可选值的镜像位置上存在相同的可选值。

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

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

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

 for iii=1 to 可选值个数

  if iii=The best location(jjj)

   AFij=0AF_{ij}=0AFij​=0

  end

 end

end

对于上述优化问题,首先根据等式(2)计算累积适应度值,前面提到过,可选值应该按照升序进行排列,则可选矩阵为:
Alternatives =[−20−20−20−20−19−19−19−19⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅1919191920202020](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 =⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡​−20−19⋅⋅⋅1920​−20−19⋅⋅⋅1920​−20−19⋅⋅⋅1920​−20−19⋅⋅⋅1920​⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤​(5)

对于采样位置LiL_iLi​,考虑Re=10R_e=10Re​=10,则等式(4)变为:

for i=Lii=L_ii=Li​

 for jjj=1 to 4

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

  for kkk=−10-10−10 to 101010

   AF(A+k)j=110∗(10−∣k∣)Fitness (i)+AF(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​∗(10−∣k∣) Fitness (i)+AF(A+k)j​(6)

  end

 end

end

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

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

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

 for kkk=-10 to 10

  AF(11+k)1=110∗(10−∣k∣)Fitness (i)+AF(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​∗(10−∣k∣) Fitness (i)+AF(11+k)1​(7)

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

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

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

 end

end

ϵ=1/(4∗202)\epsilon=1/(4*20^2)ϵ=1/(4∗202),那么AF=AF+0.000625AF=AF+0.000625AF=AF+0.000625。

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

AF=AF+0.000625AF=AF+0.000625AF=AF+0.000625

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

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

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

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

Pij=AFij∑k=140AFkj(9)P_{i j}=\frac{A F_{i j}}{\sum_{k=1}^{40} A F_{k j}}\tag{9}Pij​=∑k=140​AFkj​AFij​​(9)

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

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

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

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

   Pij=PPP_{ij}=PPPij​=PP (10)

  else

   Pij=(1−PP)PijP_{ij}=(1-PP)P_{ij}Pij​=(1−PP)Pij​ (11)

  end

 end

end

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

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

  1. 【智能优化算法】基于全局优化的改进鸡群算法求解单目标优化问题(ECSO)附matlab代码

    1 简介 智能算法分为两种,一种是群体智能算法(swarmintelligencealgorithm),该算法大多模拟自然界中动植物的特有行为,并将其表达成数学语言,从而进行迭代寻优,如模拟蝙蝠回声定 ...

  2. 智能优化算法:多目标粒子群优化算法(MOPSO)

    目录 一.粒子群优化算法(Particle Swarm Optimization,PSO) 二.多目标优化&Pareto支配 三.多目标粒子群优化算法(Multiple Objective P ...

  3. 智能优化算法:变色龙算法 -附代码

    智能优化算法:变色龙算法 文章目录 智能优化算法:变色龙算法 1.算法原理 1.1初始化 1.2 搜索猎物 1.3 变色龙眼睛旋转 1.4 捕获猎物 2.实验结果 3.参考文献 4.Matlab 4. ...

  4. 【智能优化算法】基于沙猫群优化算法求解单目标优化问题附matlab代码

    1 内容介绍 这项研究提出了一种新的元启发式算法,称为沙猫群优化 (SCSO),它模仿试图在自然界中生存的沙猫行为.这些猫能够探测到低于 2 kHz 的低频,并且具有难以置信的挖掘猎物的能力.受这两个 ...

  5. 智能优化算法:蜣螂优化算法-附代码

    智能优化算法:蜣螂优化算法 摘要:蜣螂优化算法( Dung beetle optimizer, DBO), 是由 Jiankai Xue 等于2022 年提出的一种群体智能优化算法.其灵感来源于蜣螂的 ...

  6. 【智能优化算法】基于融合莱维飞行与黄金正弦的蚁狮算法求解单目标优化问题matlab代码

    1 简介 针对蚁狮优化算法较易陷入局部最优停滞.收敛精度低以及收敛速度较慢等问题,将莱维飞行机制和黄金正弦算法融合到蚁狮优化算法中,提出了融合莱维飞行与黄金正弦的蚁狮优化算法( LGSALO) .该算 ...

  7. 【智能优化算法-野狗优化算法】基于野狗优化算法求解单目标优化问题附matlab代码

    1 内容介绍 非洲野狗主要生活在非洲的干燥草原和半荒漠地带,活跃于草原.稀树草原和幵阔的干燥灌木丛.它们通常群居,领土范围大小在200到2000平方公里之间,通过叫声进行定位.采取群体合作方式猎杀中型 ...

  8. 智能优化算法:人工大猩猩部队优化算法-附代码

    智能优化算法:人工大猩猩部队优化算法 文章目录 智能优化算法:人工大猩猩部队优化算法 1.算法原理 1.1勘探阶段 1.2 开发阶段 1.2.1 跟随银背大猩猩 1.2.2 竞争成年雌性 2.实验结果 ...

  9. 智能优化算法:麻雀搜索算法-附代码

    2020智能优化算法:麻雀搜索算法 文章目录 2020智能优化算法:麻雀搜索算法 1.算法原理 2.算法结果 3.参考文献 4.Matlab代码 5.Python代码 摘要:麻雀搜索算法(Sparro ...

  10. 智能优化算法:正余弦优化算法-附代码

    智能优化算法:正余弦优化算法-附代码 文章目录 智能优化算法:正余弦优化算法-附代码 1.算法原理 2.算法流程 3.算法结果 4.参考文献 5.MATLAB代码 6.Python代码 摘要:正 余 ...

最新文章

  1. 1078 Hashing
  2. pgpool-II3.1 的内存泄漏(四)
  3. java中常量final的用法_详解Java中final的用法
  4. MySql 性能优化
  5. 麒麟810处理器_何刚口中第二颗7nm处理器麒麟810曝光:将搭载自研NPU
  6. php操作memcache缓存基本方法
  7. 百度云服务器最新活动,百度云服务器1折_云服务器超值优惠_特价云服务器促销活动-天互数据...
  8. 20191019:(leetcode习题)第K个语法符号
  9. 数据结构—队列、循环队列、双端队列
  10. 也用C#做个视频监控客户端来玩玩
  11. 天融信荣获《中国信息安全》2018年度“双推”活动两项荣誉
  12. 【LINUX 学习】查看和修改主机名
  13. python调用phone库查询手机号码相关信息
  14. 人工智能在电力系统中的应用前景怎么样
  15. spring cloud各个微服务之间如何相互调用(Feign、Feign带token访问服务接口)
  16. 保姆级 nas 服务器搭建手册
  17. 架构:短址(short URL)原理及其实现(短地址|短url)
  18. bzoj 1106: [POI2007]立方体大作战tet(贪心+树状数组)
  19. mac如何共享网络?mac怎么建立wifi热点?
  20. 计算机网络云怎么连接网络,华为云电脑如何连网 华为云电脑使用方法介绍

热门文章

  1. 针对EasyUI的checkbox进行扩展
  2. std::condition_variable notify_one()与notify_all()的区别
  3. PHP导航栏管理,zblog导航栏管理设置的几种方法
  4. css两张图片怎么合在一起_PhotoShop怎么把两张图片合成一张?怎么用ps把两张图片合成一张?...
  5. 深度图补全-depth inpainting
  6. 论文笔记_S2D.14-2014-NIPS_利用多尺度深度网络从单张图像预测深度图
  7. java中request常用方法小结
  8. 加权最小二乘(wls)滤波算法原理及实现
  9. 圆拟合与点云数据球拟合算法
  10. spring-data-elasticsearch (elasticsearch 6.7.0) @Document 和 @Field 注解详解