一种新的优化方法:海豚回声定位
海豚回声定位算法(Dolphinecholocation,DE)由伊朗人A.Kaveh和N.Farhoudi于年提出,是一种新型的元启发式优化算法,其模拟了海豚在捕食过程中利用回声定位的策略。
回声定位海豚可以发出滴答滴答的声音,这些滴答声的频率远远高于交流信号的频率。当声音撞击到物体,声波的部分能量会反射回海豚身上,海豚接收到回声后会发出另一种滴答声,海豚会根据滴答声与回声之间的时间间隔评估出与物体的距离,还会根据头部两侧接收到的不同强度的信号进行方向判断,通过不断地发出滴答声和接受回声,海豚可以跟踪并锁定目标。当海豚接近感兴趣的目标时,还会提高滴答的速率。
尽管蝙蝠(第十章蝙蝠算法)也是利用回声定位,但是它们却与海豚的声纳系统不同。蝙蝠声纳系统的范围较小,一般3到4米左右,而海豚能探测到的目标范围从几十米到一百多米不等。声波在空气中的传播速度大约是水传播速度的五分之一,因此蝙蝠在声纳传播过程中的信息传递速度要比海豚短得多。这些在环境和猎物方面的不同就需要不同类型的声纳系统,从而很难直接比较出孰好孰坏。
图1海豚回声定位对于优化问题,海豚利用回声定位的原理捕食猎物的过程类似于寻找问题的最优解。初始时,海豚对整个空间进行搜索以寻找猎物,随着越来越接近目标,海豚就会缩小搜索范围,并增加滴答声以专注于某一位置。
该算法通过限制与目标距离成比例的探索来模拟回声定位,分为两个阶段:第一阶段,算法探索整个空间以进行去全局搜索,因而可以搜寻未曾探索过的区域,主要是通过随机探索位置来实现;第二阶段,算法将围绕前一阶段中获得的较优结果附近进行开发利用。
使用海豚回声定位算法时,用户可以根据预定义的曲线改变阶段1与阶段2产生解的比率。在用户定义的这条曲线上应该保证优化收敛,算法然后设置参数以便遵循这条曲线。与其他方法相比,该方法与最优解出现的可能性相关,换句话说,对于每个变量,在可行域内都有不同的可选值,在每个循环中,算法根据用户确定的收敛曲线,定义了选择到目前为止实现的最优值的可能性,利用这条曲线,使算法的收敛性得到控制,从而降低对参数的依赖性。
回声定位算法在开始优化之前,需要对搜索空间按以下规则进行排序:
搜索空间排序:对于每个变量,对搜索空间的可选值按升序或降序排序,如果可选值包含多个特征,则按最重要的进行排序。对于变量
,所有的可选值构成了长度为
的向量
,将这些向量作为列就得到了矩阵
,其中
为
,
为变量个数。
优化过程中收敛因子应根据曲线进行改变,曲线定义如下:
其中
为预定义的概率,
为第一次循环时的收敛因子,在第一次循环中随机选择解。
为当前循环数,
为曲线度。
循环数:算法达到收敛点的循环数,这个参数应该根据计算量由用户选择。
算法的流程图如下图所示,以下面的优化问题为例,说明海豚回声定位的主要步骤。
海豚回声定位算法流程图其中
。
在算法优化之前,首先根据等式(1)选择曲线,其中
,循环数Loopsnumber=8,以及
,则由
随机初始化
个海豚位置。
这一步主要包括创建
,其中
为位置个数,
为变量个数(每个位置的维度)。对于该实例,考虑
,
,每个维度取值均在[-20,20]之间,第
位置的解可能为
。
根据等式(1)(对于该例子就是等式(3))计算循环的。计算每个位置的适应度值。
在该例中,式(2)定义了目标函数,如对于位置
,
。在海豚回声定位算法中,适应度值用于计算概率,较优的适应度值应该具有更高的概率,因此对于对于最小化问题则适应度应该为目标值的相反数,即
。为了避免除以0,通常使用
,在该例中,
。
根据如下的海豚规则计算累积适应度值:(a)
for
=1to可选值个数
?for
=1to变量个数
??找到Alternatives中第
列的位置
,命名为
??for
=
to
??
??end
?end
end
其中
是为第
个变量选择的第
个可选值的累积适应度值(可选值的编号等于Alternatives矩阵的排序),
为有效半径,在该半径内A的邻域的累积适应度都会受到A的适应度值的影响,该半径建议不超过搜索空间的1/4。
对于靠近边缘的可选值(
无效,
或
),
将使用反射特征进行计算,这种情况下,如果可选值与边缘的距离小于
,那么在边缘上放置一面镜子时,在上述可选值的镜像位置上存在相同的可选值。
(b)为了在搜索空间中更均匀地分布分布这种可能性,对所有的序列均加上一个很小的数
,其中
应该按照适应度值定义的方式选择,最好小于适应度值所能取得的最小值。
(c)找到当前循环中的最优位置,并记为最优位置“Thebestlocation”,找出分配给最优位置中各个变量的可选值,设置它们的
为0,即:
for
to变量个数
?for
=1to可选值个数
??if
=Thebestlocation(
)
??
??end
?end
end
对于上述优化问题,首先根据等式(2)计算累积适应度值,前面提到过,可选值应该按照升序进行排列,则可选矩阵为:
对于采样位置
,考虑
,则等式(4)变为:
for
?for
=1to4
??找到Alternatives中第
列的位置
,命名为
??for
=
to
??
??end
?end
end
其中式(5)也可表示为:
for
,那么
,-10在可选值矩阵的第一列中排在第11位,以此类推就可以得到
。
?for
=-10to10
?
?
?
?
?end
end
,那么
。
在式(7)的这些等式中,对于第2个变量
,在计算累积适应度时,应该将搜索空间分为两个区域:受影响区域(有效半径内)和不受影响区域。设定
,由于第2个变量选择的可选值为4,那么与4的距离大于10(
或
)的区域不会受到影响。同时在受影响的区域内,由该样本位置产生的累积适应度线性变化,其最大值出现在x=4处,则有:
对所有随机选择的解进行以上操作,就得到了第一次循环的最终累积适应度。
对于变量,根据以下关系计算选择可选值
的概率:
根据分配给每个可选值的概率,计算下一步的位置。
在该例中,对于变量
,计算可选值
的概率:
为最优位置的所有变量选择的所有可选值分配概率
,根据下面的公式,把其余的概率分配给其他可选值:
for
to变量个数
?for
to可选值个数
??if
Thebestlocation(
)
??
(10)
??else
??
(11)
??end
?end
end
第一次循环4个变量的累积适应度第一次循环的最优位置为
,根据等式(3),第一次循环的
,即在最优位置上的所有变量的概率为
,而将剩余的
分配给其他可选值。
韩宝安
您的鼓励是我前进的动力!