一種新的優化方法:海豚回聲定位
海豚回聲定位算法(Dolphin echolocation,DE)由伊朗人A. Kaveh和N. Farhoudi於2013年提出,是一種新型的元啓發式優化算法,其模擬了海豚在捕食過程中利用回聲定位的策略。
回聲定位
海豚可以發出滴答滴答的聲音,這些滴答聲的頻率遠遠高於交流信號的頻率。當聲音撞擊到物體,聲波的部分能量會反射回海豚身上,海豚接收到回聲後會發出另一種滴答聲,海豚會根據滴答聲與回聲之間的時間間隔評估出與物體的距離,還會根據頭部兩側接收到的不同強度的信號進行方向判斷,通過不斷地發出滴答聲和接受回聲,海豚可以跟蹤並鎖定目標。當海豚接近感興趣的目標時,還會提高滴答的速率。
儘管蝙蝠也是利用回聲定位,但是它們卻與海豚的聲納系統不同。蝙蝠聲納系統的範圍較小,一般3到4米左右,而海豚能探測到的目標範圍從幾十米到一百多米不等。聲波在空氣中的傳播速度大約是水傳播速度的五分之一,因此蝙蝠在聲納傳播過程中的信息傳遞速度要比海豚短得多。這些在環境和獵物方面的不同就需要不同類型的聲納系統,從而很難直接比較出孰好孰壞。
對於優化問題,海豚利用回聲定位的原理捕食獵物的過程類似於尋找問題的最優解。初始時,海豚對整個空間進行搜索以尋找獵物,隨着越來越接近目標,海豚就會縮小搜索範圍,並增加滴答聲以專注於某一位置。
該算法通過限制與目標距離成比例的探索來模擬回聲定位,分爲兩個階段:第一階段,算法探索整個空間以進行去全局搜索,因而可以搜尋未曾探索過的區域,主要是通過隨機探索位置來實現;第二階段,算法將圍繞前一階段中獲得的較優結果附近進行開發利用。
使用海豚回聲定位算法時,用戶可以根據預定義的曲線改變階段1與階段2產生解的比率。在用戶定義的這條曲線上應該保證優化收斂,算法然後設置參數以便遵循這條曲線。與其他方法相比,該方法與最優解出現的可能性相關,換句話說,對於每個變量,在可行域內都有不同的可選值,在每個循環中,算法根據用戶確定的收斂曲線,定義了選擇到目前爲止實現的最優值的可能性,利用這條曲線,使算法的收斂性得到控制,從而降低對參數的依賴性。
回聲定位算法
在開始優化之前,需要對搜索空間按以下規則進行排序:
搜索空間排序:對於每個變量,對搜索空間的可選值按升序或降序排序,如果可選值包含多個特徵,則按最重要的進行排序。對於變量j,所有的可選值構成了長度爲LAj的向量Aj,將這些向量作爲列就得到了矩陣AlternativesMA×NV,其中MV爲max(LAj)j=1:NV,NV爲變量個數。
優化過程中收斂因子應根據曲線進行改變,曲線定義如下:
PP(Loopi)=PP1+(1−PP1)(LoopsNumber)Power−1LoopiPower −1(1)
其中PP爲預定義的概率,PP1爲第一次循環時的收斂因子,在第一次循環中隨機選擇解。Loopi爲當前循環數,Power爲曲線度。
循環數:算法達到收斂點的循環數,這個參數應該根據計算量由用戶選擇。
算法的流程圖如下圖所示,以下面的優化問題爲例,說明海豚回聲定位的主要步驟。
min(h=i=1∑Nxi2),xi∈Z,−20⩽xi⩽20(2)
其中N=4。
在算法優化之前,首先根據等式(1)選擇曲線,其中Power=1,循環數Loops number=8,以及PP10.1,則由
PP=0.1+0.9(7Loopi−1)=0.1+0.9(Loopi−1)(3)
- 隨機初始化NL個海豚位置。
這一步主要包括創建LNV×NV,其中NL爲位置個數,NV爲變量個數(每個位置的維度)。對於該實例,考慮NL=30,NV=4,每個維度取值均在[-20,20]之間,第i位置的解可能爲Li=10,4,−7,18。
- 根據等式(1)(對於該例子就是等式(3))計算循環的PP。
- 計算每個位置的適應度值。
在該例中,式(2)定義了目標函數,如對於位置Li,h=(−10)2+42+(−7)2+182=489。在海豚回聲定位算法中,適應度值用於計算概率,較優的適應度值應該具有更高的概率,因此對於對於最小化問題則適應度應該爲目標值的相反數,即Fitness=1/h。爲了避免除以0,通常使用Fitness=1/(h+1),在該例中,Fitness(Li)=1/(489+1)=0.00204。
- 根據如下的海豚規則計算累積適應度值:
(a)
for i=1 to 可選值個數
for j=1 to 變量個數
找到Alternatives中第j列的位置L(i,j),命名爲A
for k=−Re to Re
AF(A+k)j=Re1∗(Re−∣k∣) Fitness (i)+AF(A+k)j(4)
end
end
end
其中AF(A+k)j是爲第j個變量選擇的第(A+k)個可選值的累積適應度值(可選值的編號等於Alternatives矩陣的排序),Re爲有效半徑,在該半徑內A的鄰域的累積適應度都會受到A的適應度值的影響,該半徑建議不超過搜索空間的1/4。
對於靠近邊緣的可選值(A+k無效,A+k<0或A+k>LAj),AF將使用反射特徵進行計算,這種情況下,如果可選值與邊緣的距離小於Re,那麼在邊緣上放置一面鏡子時,在上述可選值的鏡像位置上存在相同的可選值。
(b)爲了在搜索空間中更均勻地分佈分佈這種可能性,對所有的序列均加上一個很小的數AF=AF+ε,其中ε應該按照適應度值定義的方式選擇,最好小於適應度值所能取得的最小值。
©找到當前循環中的最優位置,並記爲最優位置“The best location”,找出分配給最優位置中各個變量的可選值,設置它們的AF爲0,即:
for j=1 to 變量個數
for i=1 to 可選值個數
if i=The best location(j)
AFij=0
end
end
end
對於上述優化問題,首先根據等式(2)計算累積適應度值,前面提到過,可選值應該按照升序進行排列,則可選矩陣爲:
Alternatives =⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡−20−19⋅⋅⋅1920−20−19⋅⋅⋅1920−20−19⋅⋅⋅1920−20−19⋅⋅⋅1920⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤(5)
對於採樣位置Li,考慮Re=10,則等式(4)變爲:
for i=Li
for j=1 to 4
找到Alternatives中第j列的位置L(i,j),命名爲A
for k=−10 to 10
AF(A+k)j=101∗(10−∣k∣) Fitness (i)+AF(A+k)j(6)
end
end
end
其中式(5)也可表示爲:
for j=1,2,3,4
L(i,j)=−10,4,−7,18,那麼A=11,25,14,39,-10在可選值矩陣的第一列中排在第11位,以此類推就可以得到A。
for k=-10 to 10
AF(11+k)1=101∗(10−∣k∣) Fitness (i)+AF(11+k)1(7)
AF(25+k)2=101∗(10−∣k∣) Fitness (i)+AF(25+k)2
AF(14+k)3=101∗(10−∣k∣) Fitness (i)+AF(14+k)3
AF(39+k)4=101∗(10−∣k∣) Fitness (i)+AF(39+k)4
end
end
ϵ=1/(4∗202),那麼AF=AF+0.000625。
在式(7)的這些等式中,對於第2個變量j=2,在計算累積適應度時,應該將搜索空間分爲兩個區域:受影響區域(有效半徑內)和不受影響區域。設定Re=10,由於第2個變量選擇的可選值爲4,那麼與4的距離大於10(x<6或x>10)的區域不會受到影響。同時在受影響的區域內,由該樣本位置產生的累積適應度線性變化,其最大值出現在x=4處,則有:
AF=AF+0.000625
對所有隨機選擇的解進行以上操作,就得到了第一次循環的最終累積適應度。
- 對於變量j(j=1toNV),根據以下關係計算選擇可選值i(i=1toALj)的概率:
Pij=∑i=1LAjAFijAFij(8)
根據分配給每個可選值的概率,計算下一步的位置。
在該例中,對於變量j(j=1to4),計算可選值i(i=1to40)的概率:
Pij=∑k=140AFkjAFij(9)
- 爲最優位置的所有變量選擇的所有可選值分配概率PP,根據下面的公式,把其餘的概率分配給其他可選值:
for j=1 to 變量個數
for i=1 to 可選值個數
if i=1 The best location(j)
Pij=PP (10)
else
Pij=(1−PP)Pij (11)
end
end
end
第一次循環的最優位置爲X1=−11,X2=3,X3=X4=4,根據等式(3),第一次循環的PP=10%,即在最優位置上的所有變量的概率爲10%,而將剩餘的90%分配給其他可選值。
Pij=(1−0.1)Pij=0.9Pij(12)