馮增喜,李詩妍,趙錦彤,陳海越
(西安建筑科技大學建筑設備科學與工程學院,陜西 西安 710055)
麻雀搜索算法(Sparrow Optimization Algorithm,SSA)是受自然界中麻雀覓食行為和反捕食行為的啟發,由學者XUN等[1]人于2020年提出的一種新的全局搜索算法。該算法具有搜索精度高、尋優能力強、穩定性好等優點[2],但是在求解優化問題易陷入局部最優,收斂精度低、求解復雜函數優化效率不高仍是需解決的難題。自SSA算法被提出以來,已被應用于數據處理[3]、路徑規劃[4]、負荷預測、智能電網、能源優化等多個領域。
為了提高SSA算法優化性能以更好地解決于實際問題,許多學者專家對此進行了研究。文獻[5]通過改進ten混沌初始化種群和引入高斯變異的方法來提高算法種群多樣性和全局優化能力,但是求解過程中依舊存在“早熟”現象。文獻[6]基于鳥群算法中飛行行為的思想優化麻雀搜索算法,進行基于類間方差和Kapur熵的多閾值圖像分割,使改進的麻雀搜索算法具有更優的搜索能力和開拓能力,且分割速度和分割精度均得到提升。文獻[7]將柯西變異策略和反向學習策略引入至麻雀搜索算法中增強其跳出局部空間能力。文獻[8]通過融合改進的熊聞味搜索(IBSS)和麻雀搜索算法(SSA),形成一種混合可再生能源(HRES)的優化潮流管理方法,基于該方法的控制改進了功率控制器在潮流變化下的控制參數。利用所提出的基于源側和負載側參數變化的技術,實現了智能電網系統的潮流管理。文獻[9]提出自適應麻雀搜素算法,通過引入調整行列式與差分進化策略提高其穩定性與尋優精度。
為了更好地克服基本麻雀搜索算法諸如容易陷入局部最優、收斂精度低及復雜函數優化效率不高等問題,進一步提升麻雀搜索算法的探測和開發能力,本文引入精英反向學習機制,提出了一種基于精英反向學習的麻雀搜索算法,其通過對比麻雀搜索算法的當前解與反向解,選取較優秀個體進入下一次迭代,加快算法收斂速度。
SSA算法是一種模擬生物界麻雀覓食行為和反捕食行的新型群體智能優化算法。在該算法中,將麻雀分為發現者、加入者,并在這其中加入偵察預警的模型使部分麻雀充當警戒者。發現者自身的適應度高,搜索范圍廣,可為所有加入者提供覓食方向和區域。在覓食過程中,加入者總是能夠搜索到提供最好食物的發現者,然后從最好的食物中獲取食物或者在該發現者周圍覓食。與此同時,一些加入者為了增加自己的捕食率可能會不斷地監控發現者動態進而去爭奪食物資源。當意識到危險時,群體邊緣的麻雀會迅速向安全區域移動,以獲得更好的位置,位于種群中間的麻雀則會隨機走動,以靠近其它麻雀。
發現者位置更新如下

(1)
式中:t代表當前迭代數,itermax是表示最大的迭代次數,是一個常數。Xi,j表示第i個麻雀在第j維中的位置信息。α∈(0,1]是一個隨數,R2∈(0,1]和ST∈(0.5,1]分別表示預警值和安全值。Q是服從正態分布的隨機數。L表示一個 1×d的矩陣,其中該矩陣內每個元素全部為 1。當R2 加入者位置更新如下 (2) 式中:XP是目前發現者所占據的最優位置,Xworst則表示當前全局最差的位置。A表示一個1×d的矩陣,其中每個元素隨機賦值為 1 或-1,并且A+=AT(AAT)-1。當i>N/2時,這表明,適應度值較低的第i個加入者沒有獲得食物,處于十分饑餓的狀態,此時需要飛往其它地方覓食,以獲得更多的能量。 偵察預警位置更新如下 (3) 式中:Xbest表示全局最佳的位置,β為步長調整系數,是一個均值為0、方差為 1 的正態分布隨機數,k∈[-1,1]范圍內的一個均勻隨機數。fi是當前麻雀的適應度值。fg和fw依次為目前全局最優和最差適應度值。ε為最小常數,防止分母出現 0 的情況。當fi>fg時,表示麻雀處于種群的邊緣地帶,非常容易被天敵所襲擊;fi=fg表明在種群中心的麻雀察覺到了被天敵襲擊的危險,需要向其它麻雀靠攏。k表示麻雀運動的方位,為步長調整系數。 精英反向解定義:設xi(t)定義為第t次迭代的一個解,則反向解為xi(t)′,f(x)為目標函數。當f(xi(t))≥f(xi(t)′)時,則稱xi(t)為第t次迭代精英個體,當f(xi(t))≤f(xi(t)′)時,則稱xi(t)′為 第t次迭代精英個體,設xij為普通個體xi在第j維上的值,則其反向解為 xij(t)′=m(lij(t)+uij(t))-xij(t) (4) 式中:m是介于0到1的隨機數,稱為精英反向系數。lij(t)和uij(t)為xi(t)′在第j維上的最小值、最大值。[lij,uij]為精英群體所構造的區間; 基于精英反向學習的麻雀搜索算法較基本麻雀搜索算法,其改進主要是在麻雀更新后,取麻雀適應度排名10%作為精英解,同時獲取精英麻雀的動態邊界,利用反向學習策略求解反向解,對比更新前后麻雀,如果更優則替代之前的麻雀。融合了精英反向學習策略的改進麻雀搜索算法簡易步驟如下: Step1:利用精英反向學習策略初始化種群,迭代次數,初始化發現者和加入者比列。 Step2:計算適應度值,并排序。 Step3:麻雀更新發現者位置。 Step4:麻雀更新加入者位置。 Step5:麻雀更新警戒者位置。 Step6:計算適應度值并更新麻雀位置。 Step7:獲取精英麻雀,求取其邊界動態變化,利用精英反向學習策略更新精英麻雀。 Step8:計算適應度值并更新麻雀位置。 Step9:是否滿足停止條件,滿足則退出,輸出結果,否則,重復執行Step2-8。 為驗證EOBL-SSA算法的性能,選用如表1所示的7個典型基準測試函數進行算法性能測試,并與基本算法SSA性能進行對比。測試函數中包括單峰、多峰函數,其維數和初始值的上下界和按照表1 中各基準函數具體選定。針對各基準測試函數的測試在同一運行環境下進行,仿真軟件采用MATLAB2020a 版本,操作系統為Microsoft Windows 8.1。通用條件設置相同:種群數量為 30,迭代次數為 500,預警值ST=0.8,發現者的比例PD=0.2,剩下的種群是作為加入者,意識到有危險麻雀的比重SD=0.1。 表1 基準測試函數 為克服算法的偶然性誤差,對每個測試函數,每個算法分別獨立運行30 次,圖1到7 為本文所提的改進算法(EOBL-SSA)與基本麻雀搜索算法(SSA)的進化曲線對比。算法性能分析如表2所示。 圖1到圖7表明,對于求解不同測試函數,EOBL-SSA算法比SSA算法表現出更好的收斂性。由圖1、2、3可以看出,EOBL-SSA算法在單峰測試函數F1、F2、F3上的收斂速度明顯優于SSA算法。對于函數F4,該算法相比SSA算法log值更低,表明尋優精度較高。由圖5到7可以看出,F5、F6、F7均經過約10次迭代收斂到最優值,收斂速度優于SSA算法。通過對 F1到 F 7測試函數收斂曲線分析,所提出的EOBL-SSA相比SSA在求解復雜問題問題時具有較快的收斂速度和全局搜索能力。 圖1 F1測試函數尋優對比曲線 圖2 F2測試函數尋優對比曲線 圖3 F3測試函數尋優對比曲線 圖4 F7測試函數尋優對比曲線 表2 算法性能結果 表2中,平均結果、標準差、平均迭代次數、最小迭代次數反映了SSA 和EOBL-SSA 對測試函數 F1到F7所求解的質量,可得出改進的算法普遍優于原算法,特別是針對測試函數F1 、F2 、F3 、F4。標準差反映出算法的穩定性,對于函數F1 、F2 、F3 、F4,EOBL-SSA 均有較明顯優勢。而對于F5、F6、F7而言,30 次測試SSA算法均陷入一個局部極值,從而標準差極小,這并不能說明算法性能優越,而屬于“早熟”現象。平均迭代次數與最小迭代次數可綜合體現算法的尋優速度,對于函數F1至F7,EOBL-SSA平均迭代次數與最小迭代次數均小于SSA,表明EOBL-SSA在收斂速度上快于SSA。對于多峰函數F5至F7,SSA與EOBL-SSA 優化效果差別不大。但總體來說,從平均值和標準差兩個指標來看,EOBL-SSA 的值更小,表明EOBL-SSA全局尋優能力比SSA 更強,穩定性更高,是一種更為高效的算法。以上分析表明基于精英反向學習的麻雀搜索算法在尋優精度和收斂速度方面均有所提高。究其原因,主要源于精英反向學習保持了種群多樣性,同時充分利用精英麻雀的特征信息,加快了算法收斂速度與收斂精度。 本文針對基本麻雀搜索算法存在的收斂速度慢、易陷入局部極值的缺點,在基本SSA算法基礎上,引入精英反向學習策略,構成基于精英反向學習的麻雀搜索算法,優化迭代種群,通過構建精英麻雀群體,充分利用麻雀的有效信息,增加種群多樣性。并通過使用7個基本測試函數的仿真測試實驗,驗證了該算法在收斂精度、求解速度、跳出局部最優方面相較于原算法表現出了更為出色的性能,證實了該算法的有效性。

3 精英反向學習策略麻雀搜索算法

4 實驗結果與分析
4.1 測試函數與實驗參數的設置

4.2 EOBL-SSA 與 SSA 仿真結果比較





5 結論