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

一種新的優化方法:海豚回聲定位

海豚回聲定位算法(Dolphin echolocation,DE)由伊朗人A. Kaveh和N. Farhoudi於2013年提出,是一種新型的元啓發式優化算法,其模擬了海豚在捕食過程中利用回聲定位的策略。

回聲定位

海豚可以發出滴答滴答的聲音,這些滴答聲的頻率遠遠高於交流信號的頻率。當聲音撞擊到物體,聲波的部分能量會反射回海豚身上,海豚接收到回聲後會發出另一種滴答聲,海豚會根據滴答聲與回聲之間的時間間隔評估出與物體的距離,還會根據頭部兩側接收到的不同強度的信號進行方向判斷,通過不斷地發出滴答聲和接受回聲,海豚可以跟蹤並鎖定目標。當海豚接近感興趣的目標時,還會提高滴答的速率

儘管蝙蝠也是利用回聲定位,但是它們卻與海豚的聲納系統不同。蝙蝠聲納系統的範圍較小,一般3到4米左右,而海豚能探測到的目標範圍從幾十米到一百多米不等。聲波在空氣中的傳播速度大約是水傳播速度的五分之一,因此蝙蝠在聲納傳播過程中的信息傳遞速度要比海豚短得多。這些在環境和獵物方面的不同就需要不同類型的聲納系統,從而很難直接比較出孰好孰壞。

圖1 海豚回聲定位

對於優化問題,海豚利用回聲定位的原理捕食獵物的過程類似於尋找問題的最優解。初始時,海豚對整個空間進行搜索以尋找獵物,隨着越來越接近目標,海豚就會縮小搜索範圍,並增加滴答聲以專注於某一位置。

該算法通過限制與目標距離成比例的探索來模擬回聲定位,分爲兩個階段:第一階段,算法探索整個空間以進行去全局搜索,因而可以搜尋未曾探索過的區域,主要是通過隨機探索位置來實現;第二階段,算法將圍繞前一階段中獲得的較優結果附近進行開發利用。

使用海豚回聲定位算法時,用戶可以根據預定義的曲線改變階段1與階段2產生解的比率。在用戶定義的這條曲線上應該保證優化收斂,算法然後設置參數以便遵循這條曲線。與其他方法相比,該方法與最優解出現的可能性相關,換句話說,對於每個變量,在可行域內都有不同的可選值,在每個循環中,算法根據用戶確定的收斂曲線,定義了選擇到目前爲止實現的最優值的可能性,利用這條曲線,使算法的收斂性得到控制,從而降低對參數的依賴性。

回聲定位算法

在開始優化之前,需要對搜索空間按以下規則進行排序:

搜索空間排序:對於每個變量,對搜索空間的可選值按升序或降序排序,如果可選值包含多個特徵,則按最重要的進行排序。對於變量jj,所有的可選值構成了長度爲LAjLA_j的向量AjA_j,將這些向量作爲列就得到了矩陣AlternativesMA×NVAlternatives_{MA\times NV},其中MVMVmax(LAj)j=1:NVmax(LA_{j})_{j=1:NV}NVNV爲變量個數。

優化過程中收斂因子應根據曲線進行改變,曲線定義如下:

PP(Loopi)=PP1+(1PP1)LoopiPower 1(LoopsNumber)Power1(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}

其中PPPP爲預定義的概率,PP1PP_1爲第一次循環時的收斂因子,在第一次循環中隨機選擇解。LoopiLoop_i爲當前循環數,PowerPower爲曲線度。

循環數:算法達到收斂點的循環數,這個參數應該根據計算量由用戶選擇。

算法的流程圖如下圖所示,以下面的優化問題爲例,說明海豚回聲定位的主要步驟。

海豚回聲定位算法流程圖

min(h=i=1Nxi2),xiZ,20xi20(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}
其中N=4N=4

在算法優化之前,首先根據等式(1)選擇曲線,其中Power=1Power=1,循環數Loops number=8,以及PP10.1PP_10.1,則由

PP=0.1+0.9(Loopi17)=0.1+0.9(Loopi1)(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}

  1. 隨機初始化NLNL個海豚位置。

這一步主要包括創建LNV×NVL_{NV\times NV},其中NLNL爲位置個數,NVNV爲變量個數(每個位置的維度)。對於該實例,考慮NL=30NL=30NV=4NV=4,每個維度取值均在[-20,20]之間,第ii位置的解可能爲Li=10,4,7,18L_i={10,4,-7,18}

  1. 根據等式(1)(對於該例子就是等式(3))計算循環的PPPP
  2. 計算每個位置的適應度值。

在該例中,式(2)定義了目標函數,如對於位置LiL_ih=(10)2+42+(7)2+182=489h=(-10)^2+4^2+(-7)^2+18^2=489。在海豚回聲定位算法中,適應度值用於計算概率,較優的適應度值應該具有更高的概率,因此對於對於最小化問題則適應度應該爲目標值的相反數,即Fitness=1/hFitness=1/h。爲了避免除以0,通常使用Fitness=1/(h+1)Fitness=1/(h+1),在該例中,Fitness(Li)=1/(489+1)=0.00204Fitness(L_i)=1/(489+1)=0.00204

  1. 根據如下的海豚規則計算累積適應度值:

(a)

for ii=1 to 可選值個數

 for jj=1 to 變量個數

  找到Alternatives中第jj列的位置L(i,j)L(i,j),命名爲AA

  for kk=Re-R_e to ReR_e

   AF(A+k)j=1Re(Rek) 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)

  end

 end

end

其中AF(A+k)jA F_{(A+k) j}是爲第jj個變量選擇的第(A+k)(A+k)個可選值的累積適應度值(可選值的編號等於Alternatives矩陣的排序),ReR_e爲有效半徑,在該半徑內A的鄰域的累積適應度都會受到A的適應度值的影響,該半徑建議不超過搜索空間的1/4。

對於靠近邊緣的可選值(A+kA+k無效,A+k<0A+k<0A+k>LAjA+k>LA_j),AFAF將使用反射特徵進行計算,這種情況下,如果可選值與邊緣的距離小於ReR_e,那麼在邊緣上放置一面鏡子時,在上述可選值的鏡像位置上存在相同的可選值。

(b)爲了在搜索空間中更均勻地分佈分佈這種可能性,對所有的序列均加上一個很小的數AF=AF+εA F=A F+\varepsilon,其中ε\varepsilon應該按照適應度值定義的方式選擇,最好小於適應度值所能取得的最小值

©找到當前循環中的最優位置,並記爲最優位置“The best location”,找出分配給最優位置中各個變量的可選值,設置它們的AFAF爲0,即:

for j=1j=1 to 變量個數

 for ii=1 to 可選值個數

  if ii=The best location(jj)

   AFij=0AF_{ij}=0

  end

 end

end

對於上述優化問題,首先根據等式(2)計算累積適應度值,前面提到過,可選值應該按照升序進行排列,則可選矩陣爲:
 Alternatives =[20202020191919191919191920202020](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}

對於採樣位置LiL_i,考慮Re=10R_e=10,則等式(4)變爲:

for i=Lii=L_i

 for jj=1 to 4

  找到Alternatives中第jj列的位置L(i,j)L(i,j),命名爲AA

  for kk=10-10 to 1010

   AF(A+k)j=110(10k) 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)

  end

 end

end

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

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

L(i,j)=10,4,7,18L(i,j)={-10,4,-7,18},那麼A=11,25,14,39A={11,25,14,39},-10在可選值矩陣的第一列中排在第11位,以此類推就可以得到AA

 for kk=-10 to 10

  AF(11+k)1=110(10k) 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(25+k)2=110(10k) 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(14+k)3=110(10k) 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(39+k)4=110(10k) 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}

 end

end

ϵ=1/(4202)\epsilon=1/(4*20^2),那麼AF=AF+0.000625AF=AF+0.000625

在式(7)的這些等式中,對於第2個變量j=2j=2,在計算累積適應度時,應該將搜索空間分爲兩個區域:受影響區域(有效半徑內)和不受影響區域。設定Re=10R_e=10,由於第2個變量選擇的可選值爲4,那麼與4的距離大於10(x<6x<6x>10x>10)的區域不會受到影響。同時在受影響的區域內,由該樣本位置產生的累積適應度線性變化,其最大值出現在x=4處,則有:

AF=AF+0.000625AF=AF+0.000625

對所有隨機選擇的解進行以上操作,就得到了第一次循環的最終累積適應度。

  1. 對於變量j(j=1toNV)j_{(j=1 to NV)},根據以下關係計算選擇可選值i(i=1toALj)i_{(i=1toAL_j)}的概率:
    Pij=AFiji=1LAjAFij(8)P_{i j}=\frac{A F_{i j}}{\sum_{i=1}^{L A j} A F_{i j}}\tag{8}

根據分配給每個可選值的概率,計算下一步的位置。

在該例中,對於變量j(j=1to4)j_{(j=1 to 4)},計算可選值i(i=1to40)i_{(i=1to40)}的概率:

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

  1. 爲最優位置的所有變量選擇的所有可選值分配概率PPPP,根據下面的公式,把其餘的概率分配給其他可選值:

for j=1j=1 to 變量個數

 for i=1i=1 to 可選值個數

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

   Pij=PPP_{ij}=PP (10)

  else

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

  end

 end

end

第一次循環4個變量的累積適應度

第一次循環的最優位置爲X1=11,X2=3,X3=X4=4X1=-11,X2=3,X3=X4=4,根據等式(3),第一次循環的PP=10%PP=10\%,即在最優位置上的所有變量的概率爲10%10\%,而將剩餘的90%90\%分配給其他可選值。
Pij=(10.1)Pij=0.9Pij(12)P_{i j}=(1-0.1) P_{i j}=0.9 P_{i j}\tag{12}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章