段玉先,劉昌云
(1.空軍工程大學(xué)防空反導(dǎo)學(xué)院,西安 710038;2.空軍工程大學(xué)研究生院,西安 710038)
最優(yōu)化問題是機(jī)器學(xué)習(xí)中的重要問題。在工程應(yīng)用中,很多復(fù)雜問題都可以轉(zhuǎn)化為優(yōu)化問題來求解。優(yōu)化的目的是在一定限制條件下,通過計(jì)算使效率、績效、生產(chǎn)率等指標(biāo)最大化[1]。在現(xiàn)實(shí)世界中,從給定的備選方案中找尋選擇解決方案對(duì)于解決最優(yōu)化問題至關(guān)重要。傳統(tǒng)的優(yōu)化算法(如牛頓法、共軛梯度法等)雖然簡單易行,但是僅適用于處理簡單的目標(biāo)函數(shù)和單峰函數(shù)[2]。因此,如何解決高度復(fù)雜的非線性問題成為學(xué)界關(guān)注的焦點(diǎn)。
術(shù)語“元啟發(fā)式”描述了一種為解決廣泛的優(yōu)化問題而提出的更高層次的啟發(fā)式算法。Kirkpatrick 等[3]在1983 年正式開啟了對(duì)于元啟發(fā)式算法的研究,為解決最優(yōu)化問題提供了新的思路。它們采用隨機(jī)化的搜索框架,通過局部和全局兩種搜索策略進(jìn)行尋優(yōu)。相比窮盡法,元啟發(fā)式算法能夠以可接受的時(shí)間成本提供對(duì)于復(fù)雜問題較好的解決方案[4]。隨著研究的不斷深入,國內(nèi)外學(xué)者提出了許多新型元啟發(fā)式算法,例如粒子群算法[5]、蟻群算法[6]、遺傳算法[7]、蜻蜓優(yōu)化算法[8]等。
雖然各種元啟發(fā)式算法層出不窮,但最主要的優(yōu)化過程分為兩個(gè)階段:探索和開發(fā)。在探索階段,算法以高度的隨機(jī)性在廣泛的鄰域中進(jìn)行全局搜索,以獲得最優(yōu)解所在的區(qū)域。在這一階段,算法多樣性較高,收斂速度較快。在開發(fā)階段,算法將專注于在已探索的區(qū)域進(jìn)行局部搜索。隨著迭代過程不斷逼近最優(yōu)解,多樣性逐漸降低,算法逐漸收斂。如果設(shè)定的探索過程比重較大而開發(fā)過程比重過小,將減慢搜索過程。反之,則將導(dǎo)致過早收斂。因此,保持探索和開發(fā)之間的平衡是所有元啟發(fā)式算法的共同點(diǎn)和基本特征[9]。傳統(tǒng)方法中,粒子群算法局部搜索能力不強(qiáng),因此容易在復(fù)雜的多峰問題中過早收斂。蟻群算法控制參數(shù)較多并且具有關(guān)聯(lián)性,性能的提升需要依賴于不斷的試錯(cuò)和調(diào)整。遺傳算法編解碼過程較為復(fù)雜。
麻雀搜索算法(Sparrow Search Algorithm,SSA)是2020年提出的一種新興的元啟發(fā)式算法[10],它與粒子群算法、蜻蜓優(yōu)化算法等同屬于基于群體的社會(huì)化特征優(yōu)化的群智能算法。該算法通過不斷更新個(gè)體位置,模擬麻雀覓食和反捕食行為。相比傳統(tǒng)算法,麻雀搜索算法的結(jié)構(gòu)簡單、易于實(shí)現(xiàn),且控制參數(shù)較少,局部搜索能力較強(qiáng)。該算法在單峰、多峰等基準(zhǔn)函數(shù)上的表現(xiàn)優(yōu)于粒子群算法、蟻群算法等傳統(tǒng)算法。但算法在處理全局最優(yōu)解不在原點(diǎn)附近的函數(shù)時(shí),容易陷入局部最優(yōu),并且存在收斂精度較低等缺陷。針對(duì)這些問題,本文提出了基于Sobol 序列和縱橫交叉策略的麻雀搜索算法(Sparrow Search Algorithm based on Sobol sequence and Crisscross strategy,SSASC)。在初始化階段引入Sobol 序列,使初始麻雀的位置分布更加均勻,提升種群多樣性。其次,引入非線性慣性權(quán)重,優(yōu)化發(fā)現(xiàn)者位置更新方式,提高全局搜索能力和收斂效率。最后,引入縱橫交叉策略,取得算法在局部搜索能力和全局開發(fā)能力上的平衡,防止算法陷入局部最優(yōu)。為驗(yàn)證算法性能,對(duì)13 個(gè)基準(zhǔn)函數(shù)進(jìn)行仿真實(shí)驗(yàn),同時(shí)結(jié)合Wilcoxon 秩和檢驗(yàn)和Friedman 檢驗(yàn)評(píng)價(jià)SSASC 算法相較其他算法的改進(jìn)和優(yōu)勢。
在麻雀搜索算法中,將個(gè)體區(qū)分為發(fā)現(xiàn)者、跟隨者和警戒者,每個(gè)個(gè)體位置對(duì)應(yīng)一個(gè)解。根據(jù)算法設(shè)定,警戒者所占種群比例是10%~20%,而發(fā)現(xiàn)者和跟隨者是動(dòng)態(tài)變化的,即一只個(gè)體成為發(fā)現(xiàn)者必然意味著另一只個(gè)體將成為跟隨者。按照分工劃分,發(fā)現(xiàn)者主要為整個(gè)種群提供覓食方向和區(qū)域,跟隨者則是跟隨發(fā)現(xiàn)者進(jìn)行覓食,警戒者負(fù)責(zé)對(duì)覓食區(qū)域的監(jiān)視。在覓食過程中,通過不斷更新三者位置,完成資源的獲取。
設(shè)種群中有n只麻雀,則由所有個(gè)體組成的種群可表示為X=[x1,x2,…,xn]T,個(gè)體各自對(duì)應(yīng)的適應(yīng)度函數(shù)為F=[f(x1),f(x2),…,f(xn)]T。其中,發(fā)現(xiàn)者的位置更新方式如下:
其中:t表示當(dāng)前迭代次數(shù),表示在第t代中第i只麻雀在第j維的位置,α∈(0,1],itermax代表最大迭代次數(shù),R2 表示報(bào)警值,ST表示安全閾值,Q是服從正態(tài)分布的隨機(jī)數(shù),L是1×dim的矩陣,dim表示維度。發(fā)現(xiàn)者位置更新方式可總結(jié)如下:當(dāng)R2 <ST時(shí),覓食區(qū)域周圍沒有捕食者,發(fā)現(xiàn)者可以廣泛搜索食物;當(dāng)R2 ≥ST時(shí),捕食者出現(xiàn),所有發(fā)現(xiàn)者都需要飛往安全區(qū)域。
跟隨者的位置更新方式如下:
警戒者位置更新方式如下:
在元啟發(fā)式算法中,初始化種群的分布很大程度上影響算法的收斂速度和準(zhǔn)確性[11]。在處理分布未知的問題時(shí),種群的初始值應(yīng)當(dāng)盡可能地在搜索空間中均勻分布,以保證較高的遍歷性和多樣性,提升搜索效率[12]。在麻雀搜索算法中,在搜索空間采用隨機(jī)數(shù)的方式產(chǎn)生初始化種群。這種方法遍歷性較低,并且個(gè)體分布不均勻,具有不可預(yù)測性,在一定程度上影響了算法的性能。
為提升全局搜索能力,有學(xué)者利用混沌搜索優(yōu)化初始化序列。例如,Tian[13]利用Tent 混沌方式初始化種群、Arora等[14]采用Circle 混沌方法初始化種群、Zhang 等[15]引入Cubic映射算法初始化種群。這些混沌算法雖然具有一定跳出局部最優(yōu)的能力,但存在兩點(diǎn)不足:一是隨機(jī)性強(qiáng),算法運(yùn)行時(shí)會(huì)面臨很大的不確定性;二是相鄰點(diǎn)緊密相關(guān),若迭代至不穩(wěn)定點(diǎn)則無法繼續(xù)運(yùn)行,如Tent 映射小周期點(diǎn)(0.2,0.4,0.6,0.8)和不穩(wěn)定點(diǎn)(0,0.25,0.5,0.75)[16]。
與偽隨機(jī)數(shù)不同,低差異序列采用確定性的低差異序列代替?zhèn)坞S機(jī)序列,又稱擬蒙特卡洛(Quasi-Monte Carlo,QMC)方法。QMC 通過選擇合理的采樣方向,將盡可能均勻的點(diǎn)填充至多維超立方體單元,因此在處理概率問題時(shí),具有更高的效率和均勻性。其中,Sobol 序列計(jì)算周期更短、采樣速度更快,并且在處理高維度序列上有更高的效率[17]。因此,本文采用Sobol 序列[18]對(duì)初始化種群進(jìn)行映射。
設(shè)最優(yōu)解的取值范圍為[xmin,xmax],Sobol 序列產(chǎn)生的隨機(jī)數(shù)Kn∈[0,1],則種群初始位置可定義為:
假設(shè)種群上下界分別為0 和1,通過每種方法運(yùn)行100 次產(chǎn)生的初始化種群分布如圖1 所示。其中,橫軸代表取值大小,縱軸表示個(gè)體落入一定范圍的次數(shù)??梢钥闯?,相較于偽隨機(jī)數(shù)序列,通過Sobol序列產(chǎn)生的初始化種群落入每個(gè)范圍內(nèi)的個(gè)體數(shù)量大致相同,分布更加均勻,遍歷性更廣。
圖1 不同方法產(chǎn)生的初始化序列分布Fig.1 Distribution of initialized sequences generated by different methods
探索和開發(fā)之間的平衡是影響元啟發(fā)式算法的關(guān)鍵因素。在麻雀搜索算法中,原算法中缺乏對(duì)于步長的有效控制,在發(fā)現(xiàn)最優(yōu)解后,其他個(gè)體迅速向最優(yōu)解靠攏,使得算法難以有效控制全局探索和局部開發(fā)進(jìn)程,從而陷入局部最優(yōu)。為此,引入非線性慣性權(quán)重ω控制搜索范圍和收斂速度。慣性權(quán)重ω計(jì)算方式如下所示:
當(dāng)?shù)\(yùn)行500 次,慣性權(quán)重ω的變化曲線如圖2 所示。從圖2 中觀察到,迭代初期全局搜索時(shí),慣性權(quán)重ω較大,非線性變化速率快,能夠使得種群不斷探索未知區(qū)域,保持較高的全局搜索能力,防止算法過早收斂。在迭代后期ω較小,非線性變化速率慢,將有助于算法專注于在已探索的區(qū)域?qū)ふ腋玫慕鉀Q方案,保持較高的局部開發(fā)能力,提高收斂速度。
圖2 非線性慣性權(quán)重的變化曲線Fig.2 Change curve of nonlinear inertia weight
在迭代過程中,隨著慣性權(quán)重ω的不斷自適應(yīng)變化,將利于改善算法在探索和開發(fā)之間的平衡。通過改進(jìn)后,發(fā)現(xiàn)者的位置更新方式如下:
由于麻雀個(gè)體在迭代過程中不斷向最優(yōu)個(gè)體周圍靠攏,隨著算法的進(jìn)行,很可能造成種群將聚集于局部最優(yōu)解周圍,從而使得算法開發(fā)全局最優(yōu)解的能力下降。為使算法在局部搜索能力和全局開發(fā)能力之間取得平衡,避免算法陷入局部最優(yōu),防止過早收斂的狀況發(fā)生,本文將縱橫交叉策略[19]引入麻雀搜索算法,改進(jìn)警戒者的搜索方式,在不影響算法收斂速度的前提下提高求解精度。通過橫向交叉將多維問題的求解空間拆分為半群超立方體,對(duì)空間進(jìn)行邊緣搜索,在減少盲點(diǎn)的同時(shí)提升算法全局尋優(yōu)能力;通過縱向交叉在種群中不同維度進(jìn)行交叉運(yùn)算,在不影響其他維的前提下,促進(jìn)陷入停滯的維度跳出局部最優(yōu)。通過二者的競爭比較,完成算法的求解。
2.3.1 橫向交叉操作
橫向交叉操作類似于遺傳算法中的交叉操作,是在不同種群的相同維度中進(jìn)行交叉運(yùn)算。針對(duì)麻雀搜索算法全局搜索能力不強(qiáng)的問題,本文應(yīng)用橫向交叉策略對(duì)警戒者的位置進(jìn)行更新。首先將父代個(gè)體隨機(jī)配對(duì),在第d維進(jìn)行交叉操作,如下所示:
經(jīng)過橫向交叉操作后,警戒者能夠以較大概率在各自的超立方體空間及外邊緣產(chǎn)生子代個(gè)體,以便擴(kuò)充算法的搜索空間,提高全局搜索能力。橫向交叉產(chǎn)生的解需要與其父代進(jìn)行比較,選擇適應(yīng)度較高的個(gè)體進(jìn)行保留。這就意味著,在外邊緣空間產(chǎn)生子代的數(shù)量會(huì)隨與父代個(gè)體的距離增加而逐漸線性遞減。在此影響下,算法能夠不斷向最優(yōu)解收斂,可以在不影響尋優(yōu)精度的同時(shí)保證收斂效率。通過橫向交叉操作,算法平衡探索和開發(fā)之間的能力得到了加強(qiáng)。
2.3.2 縱向交叉操作
麻雀搜索算法在后期容易陷入局部最優(yōu),在很大程度上是由于種群中某些個(gè)體在某一維度上陷入局部最優(yōu),從而使整體過早收斂。經(jīng)過分析發(fā)現(xiàn),在麻雀搜索算法中缺乏一定的變異機(jī)制,無法對(duì)已經(jīng)陷入局部最優(yōu)個(gè)體進(jìn)行控制,從而阻斷了搜索進(jìn)程和找到全局最優(yōu)解的可能性。因此,在執(zhí)行橫向交叉操作之后,需要對(duì)新生個(gè)體進(jìn)行縱向交叉操作,提高算法規(guī)避局部最優(yōu)的能力。不同于橫向交叉操作,縱向交叉操作是在新生個(gè)體的所有維度進(jìn)行的交叉運(yùn)算,發(fā)生的概率小于橫向交叉操作,類似于遺傳算法中的變異操作。
在迭代過程中,如果某一個(gè)體的某一維度通過縱向交叉操作跳出局部最優(yōu),會(huì)迅速通過橫向交叉操作散布至整個(gè)種群,而更新后的維也會(huì)使陷入局部最優(yōu)的其他維有更多跳出局部最優(yōu)的機(jī)會(huì)。通過橫向交叉操作和縱向交叉操作的有機(jī)融合,可以有效地提高所提算法的收斂效率和求解精度。
通過分析可以發(fā)現(xiàn),麻雀搜索算法雖然具有一定的局部搜索能力,但仍有幾點(diǎn)不足:第一,算法的初始化方式是不確定的,偽隨機(jī)數(shù)產(chǎn)生的序列難以保證多樣性和遍歷性;第二,原算法缺乏個(gè)體之間的信息交流,新個(gè)體僅僅在同當(dāng)前最優(yōu)個(gè)體進(jìn)行比較后,就向某一區(qū)域靠攏,從而失去了向其他個(gè)體周圍區(qū)域探索的機(jī)會(huì),也致使種群的多樣性和遍歷性有一定程度的降低。針對(duì)這些問題,本文作出三點(diǎn)改進(jìn):第一,采用Sobol 序列生成更加均勻分布的種群;第二,采用非線性慣性權(quán)重,對(duì)算法步長進(jìn)行有效控制,提升收斂速度;第三,變更警戒者的位置更新策略,通過引入縱橫交叉策略,在每一次迭代后利用橫向交叉操作增強(qiáng)算法的全局尋優(yōu)能力,在所有個(gè)體位置更新完畢一遍后,再利用縱向交叉操作使部分個(gè)體某一維度發(fā)生突變,通過更新適應(yīng)度值,使算法跳出局部最優(yōu)。具體改進(jìn)流程如下。
步驟1 參數(shù)初始化。設(shè)定最大迭代次數(shù)itermax,種群規(guī)模N,發(fā)現(xiàn)者數(shù)量PD、警戒者數(shù)量SD,報(bào)警閾值ST,初始值上、下界xmax、xmin,最大尋優(yōu)次數(shù)Cmax。
步驟2 種群初始化。根據(jù)式(4),生成遍歷性強(qiáng)的Sobol 序列用以種群初始化。
步驟3 計(jì)算每只麻雀個(gè)體的適應(yīng)度f(x),記錄最佳適應(yīng)度和最差適應(yīng)度對(duì)應(yīng)的個(gè)體位置。
步驟4 選取適應(yīng)度高的前PD只個(gè)體作為發(fā)現(xiàn)者,根據(jù)式(6)更新位置。
步驟5 余下的個(gè)體作為跟隨者,根據(jù)式(2)更新位置。
步驟6 從種群中隨機(jī)選取SD只個(gè)體作為警戒者,進(jìn)行橫向交叉操作,根據(jù)式(7)、(8)更新位置。
步驟7 根據(jù)式(9)進(jìn)行縱向交叉操作,比較適應(yīng)度大小,擇優(yōu)保留。
步驟8 本次迭代完成后,計(jì)算個(gè)體適應(yīng)度f(x),記錄全局最優(yōu)解Pg以及當(dāng)前最優(yōu)解Px。
步驟9 判斷算法是否達(dá)到最大迭代次數(shù)itermax:若沒有則返回步驟步驟3,同時(shí)當(dāng)前迭代次數(shù)t=t+1;否則算法結(jié)束,輸出結(jié)果。
在這一節(jié)將驗(yàn)證所提出的SSASC 算法的有效性,并與正弦余弦算法(Sine Cosine Algorithm,SCA)[20]、灰狼優(yōu)化(Grey Wolf Optimizer,GWO)算法[21]、鯨魚優(yōu)化算法(Whale Optimization Algorithm,WOA)[2]、SSA[10]、混沌麻雀搜索優(yōu)化算法(Chaotic Sparrow Search optimization Algorithm,CSSA)[22]五種算法進(jìn)行比較。選取了具有代表性的13 個(gè)基準(zhǔn)函數(shù)進(jìn)行測試,這些函數(shù)均來自文獻(xiàn)[2],其中:f1(x)到f4(x)是單峰函數(shù),在定義上下限范圍內(nèi)只有一個(gè)全局最優(yōu)解,通常用于檢測算法的收斂速度和尋優(yōu)能力;f5(x)到f10(x)是多峰函數(shù),在函數(shù)的定義域內(nèi)存有多個(gè)局部極值,通常用于檢測算法全局搜索和避免過早收斂的能力;f11(x)到f13(x)是固定維復(fù)合函數(shù),通常用于檢測算法平衡探索和開發(fā)之間的能力。
仿真實(shí)驗(yàn)環(huán)境為Intel Core i5-9300H CPU @ 2.40 GHz,16 GB 內(nèi)存,Windows 10 操作系統(tǒng)MATLAB R2019b 仿真實(shí)驗(yàn)平臺(tái)。為保證實(shí)驗(yàn)的公平性和客觀性,將所有算法的種群規(guī)模N設(shè)置為30,最大迭代次數(shù)itermax設(shè)置為500,各算法分別獨(dú)立運(yùn)行30次,統(tǒng)計(jì)30次實(shí)驗(yàn)的平均值和標(biāo)準(zhǔn)差。由于維度也是影響尋優(yōu)精度的一個(gè)重要因素,因此將f1(x)到f10(x)從10 維擴(kuò)展到100 維,驗(yàn)證算法在不同維度下的求解能力。在實(shí)驗(yàn)完成后,需要對(duì)各算法結(jié)果進(jìn)行評(píng)價(jià)。本文通過比較平均值(avg)、標(biāo)準(zhǔn)差(std),分析各算法效率性能。其中,平均值可以反映算法的求解精度和質(zhì)量,標(biāo)準(zhǔn)差反映算法的穩(wěn)定性。
為使實(shí)驗(yàn)更加公平,對(duì)選取的算法內(nèi)參數(shù)進(jìn)行了設(shè)置,如表1 所示。除表內(nèi)參數(shù)外,其他參數(shù)設(shè)置保持一致。
從表2 中可以看出,當(dāng)維度dim=10 時(shí),相比其他算法,SSASC 取得了除f11(x)外其他優(yōu)化函數(shù)平均值和標(biāo)準(zhǔn)差的最佳值,并在其中8 個(gè)函數(shù)上取得了全局最優(yōu)解。此外,CSSA在f11(x)上取得最佳平均值和標(biāo)準(zhǔn)差值。SSA 則找到了f6(x)、f8(x)最佳值。總體來看,SSASC 表現(xiàn)最佳,而SCA 表現(xiàn)較為不佳。
表2 不同算法比較結(jié)果(dim=10)Tab.2 Comparison results of different algorithms(dim=10)
對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行分析,與其他啟發(fā)式算法相比,SSASC更加具有競爭優(yōu)勢。在單峰問題f1(x)~f4(x)上,SSASC 的表現(xiàn)均優(yōu)于其他算法;并且,SSASC 多次運(yùn)行表現(xiàn)穩(wěn)定,說明算法具有較好的魯棒性。在多峰問題f5(x)~f10(x)上,SSASC也取得了很大的進(jìn)步,結(jié)果表明算法具有良好的跳出局部最優(yōu)和全局搜索的能力。在復(fù)合問題f11(x)~f13(x)上,SSASC也取得了逼近最優(yōu)解的結(jié)果,說明在嵌入非線性慣性權(quán)重和縱橫交叉策略后,算法平衡全局探索和局部開發(fā)的能力得到了加強(qiáng)。
表3 顯示了當(dāng)dim=30 時(shí),在前10 個(gè)基準(zhǔn)函數(shù)得到的平均值與標(biāo)準(zhǔn)差結(jié)果比較??梢钥闯?,SSASC 均取得了平均值和標(biāo)準(zhǔn)差的最好結(jié)果。同時(shí),SSA 也可以找到了2 個(gè)函數(shù)的全局最優(yōu)解。CSSA 在求解f4(x)問題上排名第二,在f5(x)上取得的平均值僅次于SSASC。WOA 在f1(x)求解能力較好,并且運(yùn)行結(jié)果較為穩(wěn)定。通過結(jié)果分析,當(dāng)dim=30 時(shí),SSASC 算法性能最優(yōu)。
表3 不同算法比較結(jié)果(dim=30)Tab.3 Comparison results of different algorithms(dim=30)
表4 顯示了當(dāng)dim=100 時(shí),在前10 個(gè)基準(zhǔn)函數(shù)得到的平均值與標(biāo)準(zhǔn)差結(jié)果比較??梢钥闯?,SSASC 的性能依舊保持穩(wěn)定。在f1(x)~f2(x)、f6(x)、f8(x)上取得了理論最優(yōu)值,并且表現(xiàn)穩(wěn)定。說明SSASC 具有解決高維問題的能力,并且具備出色的穩(wěn)定性和魯棒性。此外,隨著維度的增加,SCA、GWO 的求解精度明顯下降。而WOA、SSA、CSSA 則具備一定的魯棒性。WOA 和SSA 在f6(x)、f8(x)上取得了理論最佳值??傮w來說,SSASC 運(yùn)行取得的結(jié)果更具有優(yōu)勢。
表4 不同算法比較結(jié)果(dim=100)Tab.4 Comparison results of different algorithms(dim=100)
García 等[23]提出,在評(píng)估元啟發(fā)式算法的性能時(shí),僅基于均值和標(biāo)準(zhǔn)差值進(jìn)行比較是不夠的。因此,為了證明所提出算法取得的結(jié)果與其他算法是否在統(tǒng)計(jì)上具有顯著不同,需要進(jìn)行統(tǒng)計(jì)測試[24]。調(diào)用Wilcoxon秩和檢驗(yàn)[25]和Friedman 檢驗(yàn)[26]來比較算法之間的性能。在Wilcoxon 秩和檢驗(yàn)中,將p設(shè)置為0.05,提出兩個(gè)假設(shè),即null 和alternative。如果統(tǒng)計(jì)值大于p,則接受null;如果統(tǒng)計(jì)值小于p,則接受alternative。將SSASC 與SCA、GWO、WOA、SSA、CSSA 算法依次進(jìn)行比較,分別記為p1、p2、p3、p4、p5。由于無法將在某個(gè)基準(zhǔn)函數(shù)上的最佳算法與自身比較,因此將每個(gè)基準(zhǔn)函數(shù)上的最佳算法標(biāo)記為N/A,表示為“不適用”。從f1(x)到f10(x)之間的維度為10,種群規(guī)模N設(shè)置為30,最大迭代次數(shù)itermax設(shè)置為500,各算法分別獨(dú)立運(yùn)行30 次,得到結(jié)果如表5 所示。
由表5可知,僅對(duì)于SSASC 與CSSA 的f5(x)、f11(x)、f13(x),SSASC 與SSA 的f7(x)、f11(x)外,SSASC 得到的p值均小于0.05,可以判定該算法的優(yōu)越性具有統(tǒng)計(jì)學(xué)意義。因此,進(jìn)而可以判定SSASC 具有更高的收斂精度。維度為10,種群規(guī)模N設(shè)置為30,最大迭代次數(shù)itermax設(shè)置為500。圖3(a)~(d)為單峰函數(shù)的收斂曲線,圖3(e)~(h)為多峰函數(shù)的收斂曲線。根據(jù)結(jié)果分析,SSASC 在解決單峰問題和多峰問題上表現(xiàn)突出。由于改進(jìn)了初始化種群生成策略,種群多樣性和遍歷性得到了提高,使生成的初值更加接近全局最優(yōu)。同時(shí),由于引入了非線性慣性權(quán)重,使得算法在收斂速度上有了明顯改進(jìn)。此外,通過橫向交叉和縱向交叉操作,算法可以跳出局部最優(yōu)解,尋優(yōu)精度也得到了提升。
表5 十三個(gè)基準(zhǔn)函數(shù)上的Wilcoxon秩和測試的p值Tab.5 p values of Wilcoxon rank sum test on 13 benchmark functions
此外,為使實(shí)驗(yàn)結(jié)果更具有說明力,對(duì)6種算法在f1(x)到f10(x)上取得的平均值進(jìn)行Friedman 檢驗(yàn),實(shí)驗(yàn)結(jié)果如表6 所示。同樣,將p設(shè)置為0.05。當(dāng)p值小于0.05 時(shí),可以認(rèn)為算法之間存在顯著性差異。根據(jù)平均排名可以看出,當(dāng)前10 個(gè)基準(zhǔn)函數(shù)的維度設(shè)置為10時(shí),6個(gè)算法的平均排名為SSASC>SSA>CSSA>GWO>W(wǎng)OA>SCA。同時(shí),p=2.856× 10-7<0.05,表明算法之間存在明顯差異。當(dāng)前10 個(gè)基準(zhǔn)函數(shù)的維度設(shè)置為30 時(shí),6 個(gè)算法的平均排名為SSASC>SSA>CSSA>W(wǎng)OA>GWO>SCA。此時(shí),實(shí)驗(yàn)所得到的p=2.349 7× 10-7<0.05,說明算法之間也存在明顯差異。當(dāng)前10 個(gè)基準(zhǔn)函數(shù)的維度設(shè)置為100 時(shí),SSASC>SSA>CSSA>W(wǎng)OA>GWO>SCA。此時(shí),根據(jù)實(shí)驗(yàn)結(jié)果,計(jì)算所得到的p=3.175 9× 10-7<0.05,說明算法之間依舊存在明顯差異。
表6 十個(gè)基準(zhǔn)函數(shù)上的Friedman檢驗(yàn)結(jié)果Tab.6 Friedman test results on 10 benchmark functions
為了比較算法的收斂速度和尋優(yōu)精度,選取了8 個(gè)函數(shù)進(jìn)行收斂測試,收斂圖像如圖3所示。從f1(x)到f10(x)之間的
圖3 8個(gè)不同函數(shù)的收斂曲線Fig.3 Convergence curves of 8 different functions
本文提出了一種基于Sobol 序列和縱橫交叉的麻雀搜索算法。在保留原算法優(yōu)點(diǎn)的基礎(chǔ)上,利用Sobol低差異序列改進(jìn)麻雀個(gè)體初始化策略,提高種群遍歷性和多樣性。在算法運(yùn)行過程中,設(shè)置了一個(gè)非線性的慣性權(quán)重,改進(jìn)了發(fā)現(xiàn)者的位置更新方式,提升了算法的收斂效率。同時(shí),引入了縱橫交叉策略,平衡算法在迭代時(shí)的探索與開發(fā)能力。進(jìn)行了13 個(gè)基準(zhǔn)函數(shù)的仿真實(shí)驗(yàn),表明SSASC 的尋優(yōu)結(jié)果均優(yōu)于其他5種元啟發(fā)式算法,且在部分函數(shù)上能夠取得全局最優(yōu)解。收斂曲線反映出SSASC的收斂速度相較于其他算法得到了明顯提升。通過Wilcoxon 秩和檢驗(yàn)、Friedman 檢驗(yàn),證明了實(shí)驗(yàn)結(jié)果具有統(tǒng)計(jì)學(xué)意義。在未來研究中,計(jì)劃擴(kuò)展改進(jìn)算法的應(yīng)用范圍,用于解決更加復(fù)雜的實(shí)際問題。