吳 迪, 吳美蓮, 吳杭蕖, 蘇媛媛, 游方楷, 賈鶴鳴
(1.三明學(xué)院教育與音樂學(xué)院,福建 三明 365004;2.三明學(xué)院信息工程學(xué)院,福建 三明 365004)
隨著科學(xué)技術(shù)的持續(xù)發(fā)展,實際問題的復(fù)雜性不斷提高,對優(yōu)化技術(shù)的需求愈發(fā)明顯,元啟發(fā)式優(yōu)化算法由于其簡單性、靈活性和無推導(dǎo)機制受到眾多學(xué)者的關(guān)注[1].近年來,國內(nèi)外研究者在智能優(yōu)化領(lǐng)域取得一系列重要的研究成果.這些研究成果為后來者提供新的思路和實踐指導(dǎo),并在各個領(lǐng)域中得到廣泛應(yīng)用,是當(dāng)今智能優(yōu)化算法領(lǐng)域發(fā)展的主要動力,為智能優(yōu)化算法領(lǐng)域作出杰出的貢獻.現(xiàn)今常見的元啟發(fā)式算法如教與學(xué)優(yōu)化算法(teaching-learning-based optimization algotithm,TLBOA)[2]、基于知識共享的優(yōu)化算法[3]、粒子群優(yōu)化算法(particle swarm optimization algotithm,PSOA)[4]、鯨魚優(yōu)化算法(whale optimization algorithm,WOA)[5]、黑猩猩優(yōu)化算法(chimpanzee optimization algorithm,COA)[6]、海鷗優(yōu)化算法(seagull optimization algorithm,SOA)[7]、算術(shù)優(yōu)化算法(arithmetic optimization algorithm,AOA)[8]、螢火蟲優(yōu)化算法(fire-fly algorithm,F(xiàn)A)[9]等,在不同的優(yōu)化問題中具有各自的特點和應(yīng)用范圍.然而,無免費午餐(no-free-lunch, NFL)[10]理論的證明,世上還暫且不存在一種通用的優(yōu)化算法可以解決所有的工程問題.這是因為不同的問題具有獨特的特征、目標(biāo)和約束條件,因此需要根據(jù)具體情況選擇合適的優(yōu)化算法,在應(yīng)用優(yōu)化算法時,選擇合適的算法來解決具體的工程問題非常重要.并且可以通過混合模式和融合改進策略,對傳統(tǒng)的優(yōu)化算法進行改進,以提高算法的性能和效果[11].
2023年,張慶科等[12]提出一種創(chuàng)新的群智能優(yōu)化算法,將其命名為成長優(yōu)化(growth optimizer, GO)算法.該算法的設(shè)計靈感源自個體在成長過程中的學(xué)習(xí)與反思.在學(xué)習(xí)階段中,對于每個個體,GO算法利用來自5 個不同特定個體的四種類型的搜索方向信息,并結(jié)合適應(yīng)度值和歐氏距離的概念自適應(yīng)地平衡這四種方向信息.這種自適應(yīng)平衡的方法使得GO算法在選擇搜索方向時能夠更準(zhǔn)確地權(quán)衡不同的信息,并且顯著降低由于錯誤方向信息的干擾而導(dǎo)致算法陷入局部最優(yōu)解的機會.通過綜合考慮多個方向的信息,GO算法能夠在探索解空間時更好地平衡全局探索和局部收斂之間的權(quán)衡關(guān)系.在反思階段中,GO算法利用各種計算方式來記錄和更新個體的位置.這個過程可以幫助個體在優(yōu)化過程中進行自我調(diào)整和修正,以提高算法的性能和適應(yīng)能力.對于一般的優(yōu)化問題,GO算法展現(xiàn)出較優(yōu)的全局探索和收斂能力.然而,在處理一些復(fù)雜的函數(shù)測試時,GO算法可能會面臨局部最優(yōu)解的困境.這種情況下,算法可能會陷入某個具體的區(qū)域而難以跳出,導(dǎo)致無法找到全局最優(yōu)解.這是一個需要注意的局限性,對于復(fù)雜問題,可能需要結(jié)合其他算法或策略來進一步提高GO算法的性能和效果.
針對上述不足,提出融合知識共享和精英反向?qū)W習(xí)的成長優(yōu)化算法(KSOBLGO).首先,傳統(tǒng)GO 算法是通過隨機方式產(chǎn)生種群個體的位置,種群初始化方式可能導(dǎo)致多樣性差和不均勻分布在解空間的問題,因此需要改進算法的種群初始化方式.在基于縱橫交叉和精英反向?qū)W習(xí)的鯨魚優(yōu)化算法[13]中,采用精英反向?qū)W習(xí)構(gòu)造精英個體的反向解,增加種群的多樣性,擴展種群的搜索范圍,以更好地探索解空間.文獻[14]在研究鯨魚優(yōu)化算法時,使用精英反向?qū)W習(xí)策略和Lévy 飛行的方法來對初始化種群進行優(yōu)化,以增加種群的多樣性.在文獻[15]中,針對算法過早收斂,初始化種群多樣性低的問題,引入精英反向?qū)W習(xí)和HHO 算法相結(jié)合.文獻[16]將柯西變異、反向?qū)W習(xí)策略與麻雀優(yōu)化算法相融合,提高麻雀優(yōu)化算法的全局尋優(yōu)能力.借鑒上述文獻的改進思想,通過精英反向?qū)W習(xí)生成反向解,增加種群多樣性,待進入學(xué)習(xí)階段后,探索個體間差距并進行學(xué)習(xí),之后進入反思階段,當(dāng)前個體將會由優(yōu)秀個體進行引導(dǎo),彌補自身的不足,若自身某方面的知識無法彌補時,則會選擇放棄以往學(xué)習(xí)的知識,重新進行系統(tǒng)的學(xué)習(xí).最后進入知識共享階段,進行適應(yīng)度劃分,平衡KSOBLGO算法的局部搜索能力和全局搜索能力,通過13個基準(zhǔn)測試函數(shù)優(yōu)化實驗驗證KSOBLGO算法的優(yōu)化性能.
在GO算法中,個體的社會結(jié)構(gòu)與GR(適應(yīng)度值)相關(guān),通過P1將其分為三個層次.該結(jié)構(gòu)由上層(包括領(lǐng)導(dǎo)和精英)、中層和底層組成.上層中排名最高的領(lǐng)導(dǎo)者是全局最優(yōu)解,排名在2到P1范圍內(nèi)的個體稱為精英,為全局次優(yōu)解;排名在P1+1 和N-P1之間的個體代表中層成員;排名位于N-P1+1 和N之間代表底層成員,其中:N為社會成員人數(shù).當(dāng)P1=5 時可以保證算法的高效、穩(wěn)定的性能.GO 算法主要分為學(xué)習(xí)階段和反思階段.學(xué)習(xí)階段是指個體找到其他個體之間的差距并進行學(xué)習(xí),反思階段是指個體使用不同的策略來彌補自身的不足.
成長優(yōu)化算法和大多數(shù)算法一樣,通過解空間邊界范圍與維度初始化種群.使用式(1)對種群中第i個個體進行初始化.即
其中:Xi為第i個個體;ub和lb表示搜索域的上邊界和下邊界;rand表示一個介于0和1之間的偽隨機數(shù).
不同個體之間可能存在一定的差距,造成這種差距的原因有很多,如果能探索差距的原因,并且從中學(xué)習(xí)就可以極大地促進個體的成長.主要的差距分為四類:領(lǐng)袖和精英成員之間的差距(Gap1),領(lǐng)袖和底層成員之間的差距(Gap2),精英成員和底層成員之間的差距(Gap3)以及兩個隨機個體之間的差距(Gap4).其中將Gapk(k=1,2,3,4)設(shè)為第k類差距.對于第i個個體Xi,每一類的差距公式描述為
其中:Xbest代表社會的領(lǐng)袖;Xbetter是精英成員之一;Xworse是底層成員之一;XL1和XL2都是與第i個個體Xi不同的隨機個體.
為反映差距對第i個個體Xi的影響,算法引入學(xué)習(xí)因子(LF).對于第i個個體Xi,LFk將影響其對第k類差距的學(xué)習(xí).當(dāng)?shù)趉類差距較大時,LFk也會較大,第i個個體Xi會從第k類差距中學(xué)到更多.LFk的建模為
其中: LFk為第k類差距的歐氏距離歸一化比值,范圍為[0,1].
在成長過程中,不同層次的人對自己有不同的看法,可以通過引入SFi來評估個體自身可接受的知識范圍.SFi越大,說明第i個個體Xi需要更多的知識來提升自己,即
其中: GRi為第i個個體的適應(yīng)度值;GRworst為所有個體中最大的適應(yīng)度值.
知識的學(xué)習(xí)和轉(zhuǎn)化是損耗的.對于第k類差距(Gapk),個體Xi從它們中吸收一些知識,這些知識是第k個知識獲取組(KAk).對于第i個個體Xi,KAk是在LFk和SFi在第k類差距上的操作后得到的,上述過程可以描述為
其中: KAk是第i個個體Xi從第k類差距獲得的知識,SFi是對其自身情況的評估,而LFi是對外部情況的評估.
第i個個體Xi在兩種評估的影響下,從Gapk中識別出自己需要的知識KAk,從而完成學(xué)習(xí)過程.個體Xi通過從四類差距中學(xué)習(xí),完成豐富的知識積累過程,第i個個體Xi的具體學(xué)習(xí)過程為
其中:Xi為第i個個體;KAk是第i個個體從第k類差距中獲取的知識.
個體Xi的適應(yīng)度值更新過程為
其中:Xit+1為第t+1 次迭代中第i個個體;r1是一個均勻分布于0 和1 之間的隨機數(shù);P2為一個常數(shù),通常取值為0.001;P2決定第i個個體不更新時是否保留新獲得的知識,其中i≠1是為防止全局最優(yōu)解被替換導(dǎo)致算法不易收斂.
學(xué)習(xí)和反思相互互補,反思也是汲取知識過程中的一個重要階段.對于第i個個體Xi,Xi會通過向優(yōu)秀的個體學(xué)習(xí),來彌足自身的不足.但是當(dāng)某一方面的知識無法彌補時,Xi會放棄以往的知識,重新進行系統(tǒng)的學(xué)習(xí).第i個個體Xi的反思過程為
其中:r2、r3、r4和r5為在[0,1]范圍內(nèi)均勻分布的隨機數(shù);R表示適應(yīng)度排名前P1的個體之一;Rj為個體R的第j個維度;P3為一個常數(shù),能夠控制反思的概率,一般設(shè)置為0.3;AF為衰減因子.
在GO 算法中,位置的更新是通過將k類差距相加的方式進行的.但是在某些復(fù)雜的尋優(yōu)問題中,這種更新方式存在不確定性,很難正確指引個體的搜索路徑.為提高算法的精度,將精英反向?qū)W習(xí)引入到GO算法的初始化位置更新中.通過使用精英反向?qū)W習(xí),算法可以利用精英個體的優(yōu)秀特征來指導(dǎo)其他個體的初始化位置.通過學(xué)習(xí)精英個體的反向解,算法可以更好地初始化個體的位置,從而增加算法的收斂性和優(yōu)化能力.為進一步平衡算法的探索和開發(fā)能力,將基于知識共享的優(yōu)化算法融合到GO 算法中,這一階段稱為知識共享階段.在知識共享階段,個體之間通過共享知識和經(jīng)驗來相互影響和改進.這種知識共享機制能夠有效地傳遞優(yōu)秀的解決方案和搜索策略,提高算法的優(yōu)化能力.通過使用精英反向?qū)W習(xí)策略和知識共享,算法在初始化和演化的過程中獲得更多的信息和指導(dǎo),從而提高尋優(yōu)能力.這種綜合方法可以使GO算法更加準(zhǔn)確地探索解空間,更好地平衡全局探索和局部開發(fā)之間的關(guān)系,進而提高算法的性能和效果.
精英個體在種群中相比其他個體包含更多的有效信息.通過構(gòu)造精英個體的反向解,可以增加種群的多樣性,并擴展種群的搜索范圍,以更好地探索解空間.這種策略有助于避免陷入局部最優(yōu)解,提高搜索算法的全局優(yōu)化能力.通過精英反向?qū)W習(xí)策略來對種群位置進行初始化,通過精英反向?qū)W習(xí)對種群進行初始化的計算式為
其中:Xi為第i個個體;Xnew為第i個個體所對應(yīng)的精英反向?qū)W習(xí)個體.
通過對初始解和反向解進行合并,選取適應(yīng)度值較優(yōu)的解作為初始個體,用于組成初始種群,即
其中:Xi為第i個個體;Xnew為第i個個體所對應(yīng)的精英反向?qū)W習(xí)的個體.
在一個種群中,“揚長避短”“合理分工”是種群尋找更優(yōu)適應(yīng)度值的好辦法,即挖掘種群中各個個體的潛力,從而加強算法的性能.通過對適應(yīng)度排名前P1個的個體采取局部搜索策略,更新公式為
其中:Xi為第i個個體;rand為[0,1]之間的隨機數(shù);gBest為全局最優(yōu)個體.
針對位置較差或相對中等的個體,可以采取一種方法來提升它們的搜索能力。首先,將個體的維度D進行劃分,分為初級要素和高級要素.初級要素是維度D中的前Djun個維度,而高級要素則是剩余的DDjun個維度.這種劃分的目的是通過初級要素和高級要素之間的差異性來更新個體,以引導(dǎo)個體進行全局搜索.基于初級要素和高級要素的更新策略使得個體在搜索過程中能更全面地考慮不同維度的信息,并根據(jù)初級要素和高級要素之間的差異性進行調(diào)整.在更新初級要素和高級要素時,可以使用特定的更新公式,即
其中:t為當(dāng)前迭代次數(shù);T為最大迭代次數(shù);v為知識率,是一個大于0的實數(shù),一般取值為10.
在知識共享階段中對初級要素進行更新.需要生成一個介于0和1之間的隨機數(shù),如果這個隨機數(shù)小于知識比率rk,個體Xi的第j個維度將按照式(15)對初級要素進行更新;否則不做任何更新.更新完初級要素之后,將對高級要素進行同樣的更新處理.同理,需要生成一個介于0和1之間的隨機數(shù),如果這個隨機數(shù)小于知識比率rk,那么將按照公式(16)對高級要素進行更新;否則不做任何更新.式(15)~(16)如下所示
其中:Xi,j表示第i個個體在第j維度上的取值;Xi-1,j表示適應(yīng)度排名在Xi,j之前的個體中,在第j維度上的取值;Xi+1,j表示適應(yīng)度排名在Xi,j之前的個體中,在第j維度上的取值;Xm為隨機個體,fk為知識因子,一般取值為0.5,rk為知識比率,一般取值為0.9;Xpbest為當(dāng)前適應(yīng)度排名最前P1個人之一;Xworst是當(dāng)前適應(yīng)度排名最后P1個人之一;Xm為隨機個體.
個體Xi的適應(yīng)度值更新過程如式(7)所示.
綜合上述策略,通過精英反向?qū)W習(xí)策略和知識共享,算法在初始化和演化的過程中獲得更多的信息和指導(dǎo),提高算法的尋優(yōu)能力.這種綜合方法可以使GO 算法更加準(zhǔn)確地探索解空間,更好地平衡全局探索和局部開發(fā)之間的關(guān)系,進而提高算法的性能和效果.改進成長優(yōu)化算法實現(xiàn)流程圖如圖1所示
圖1 KSOBLGO算法實現(xiàn)流程圖Fig.1 KSOBLGO algorithm implementation flowchart
為驗證KSOBLGO算法的性能,通過13個基準(zhǔn)函數(shù)測試將該算法與成長優(yōu)化(GO)算法、鯨魚優(yōu)化算法(WOA)和算術(shù)優(yōu)化算法(AOA)的尋優(yōu)結(jié)果進行比較.所選的基準(zhǔn)測試函數(shù)包括兩個種類:單峰測試函數(shù)編號(F1)~(F7)和多峰測試函數(shù)編號(F8)~(F13).這些函數(shù)被廣泛應(yīng)用于優(yōu)化算法的基準(zhǔn)測試中,用于評估算法的性能和魯棒性.這些函數(shù)代表不同類型的問題,從而使能夠更全面地解KSOBLGO算法在處理不同類型問題時的適應(yīng)能力和表現(xiàn).通過對這些基準(zhǔn)函數(shù)進行測試,并將KSOBLGO算法的結(jié)果與GO算法、WOA和AOA進行比較,可以確定KSOBLGO算法在這些問題上的性能優(yōu)劣.這樣的比較有助于解KSOBLGO算法在不同類型問題上的優(yōu)勢和局限性,以及它是否是一個適合解決這些問題的有效算法.函數(shù)詳細(xì)內(nèi)容如表1所示.
表1 基準(zhǔn)測試函數(shù)Tab.1 Evaluation functions
確保仿真實驗的公平性是非常重要的,其中一個關(guān)鍵因素是統(tǒng)一算法中部分相關(guān)參數(shù)的設(shè)置.在本次實驗中,將種群數(shù)量設(shè)定為40,維度為30,最大迭代次數(shù)設(shè)定為1 000次.此外,為評估算法的性能穩(wěn)定性,每個算法都將獨立運行30次,以獲取更可靠的結(jié)果.各個算法的關(guān)鍵參數(shù)設(shè)置,如表2給出.以平均數(shù)、標(biāo)準(zhǔn)偏差值和Wilcoxon符號秩檢驗為判斷標(biāo)準(zhǔn),其中,平均數(shù)與標(biāo)準(zhǔn)差值越小,則證明算法的性能越佳.
表2 算法參數(shù)設(shè)置Tab.2 Algorithm parameter settings
3.2.1 數(shù)據(jù)分析
將KSOBLGO 算法與GO 算法、WOA 和AOA 進行對比實驗,每種算法對每個函數(shù)進行30 次測試,通過30次測試計算函數(shù)適應(yīng)度值的平均值和標(biāo)準(zhǔn)差,實驗結(jié)果如表3所示(最優(yōu)結(jié)果用粗體表示).
表3 函數(shù)尋優(yōu)測試結(jié)果Tab.3 Function optimization test results
由表3的測試函數(shù)結(jié)果可以看出,KSOBLGO算法對F1、F3、F6、F8、F9、F11尋優(yōu)過程中都收斂到最優(yōu)值,具有不錯的尋優(yōu)能力和穩(wěn)定性.從平均值上看,KSOBLGO算法在8個測試函數(shù)中平均值與GO算法和WOA 有顯著差別,在10 個測試函數(shù)中平均值與GO 算法、WOA 和AOA 有顯著差別,在11 個測試函數(shù)中平均值都優(yōu)于GO 算法和WOA,在9個測試函數(shù)中平均值都優(yōu)于AOA.從標(biāo)準(zhǔn)差上看,KSOBLGO 算法在13個基準(zhǔn)測試函數(shù)中的標(biāo)準(zhǔn)差均小于GO 算法和WOA,在F2和F7上相較于AOA 略有不足.通過基于統(tǒng)計學(xué)理論的分析,KSOBLGO 算法在這些基準(zhǔn)函數(shù)上表現(xiàn)出較高的尋優(yōu)性能和魯棒性.它能夠更快速、準(zhǔn)確地找到全局最優(yōu)解,并對多峰函數(shù)具有良好的搜索能力.這些優(yōu)勢使得KSOBLGO 算法成為解決優(yōu)化問題的有力工具.
3.2.2 收斂曲線分析
收斂曲線能直觀反映優(yōu)化算法的收斂速度和整體性能.為能夠更直觀的展現(xiàn)算法在各種函數(shù)中所表現(xiàn)出來的性能,選取測試所求得的最優(yōu)值與平均值較為接近的一次,同時繪制KSOBLGO算法、GO算法、WOA 和AOA 的迭代曲線.從13 個基準(zhǔn)測試函數(shù)中選取9 個基準(zhǔn)測試函數(shù)的收斂曲線進行繪制,其中包括6個單峰函數(shù)和3個多峰函數(shù),如圖2所示.
圖2 函數(shù)優(yōu)化迭代曲線圖Fig.2 Function optimization iteration curve chart
對比四條迭代曲線可明顯觀察到KSOBLGO 算法在收斂速度和準(zhǔn)確度方面表現(xiàn)更優(yōu).改進后的GO算法在探索和開發(fā)能力方面取得平衡,提升算法的優(yōu)化性能.驗證所采用的改進策略的有效性和可行性.
3.2.3 Wilcoxon符號秩檢驗
在上述分析中,僅通過平均值和標(biāo)準(zhǔn)差判斷算法之間有顯著性差異是不充分的.使用Wilcoxon 符號秩檢驗,顯著性水平為0.05,來進一步驗證KSOBLGO 算法與其他三種算法在性能優(yōu)勢上的顯著性.這種統(tǒng)計檢驗方法可以用來比較兩個相關(guān)樣本之間的差異,并確定它們之間是否存在顯著性差異.對比實驗結(jié)果如表3 所示,其中符號“+”“=”“-”分別代表KSOBLGO 算法和對比算法的性能間有無顯著差異的關(guān)系,并對P>0.05的數(shù)據(jù)進行加粗處理.
從表4 可以看出,KSOBLGO 算法在與GO 算法和WOA 進行比較時,在所有函數(shù)的優(yōu)化結(jié)果上都有所改善KSOBLGO 算法和AOA 算法在函數(shù)F9 和F10 上都收斂到最優(yōu)值,兩種算法的性能相當(dāng).然而,其他函數(shù)的數(shù)據(jù)表明KSOBLGO 算法的性能優(yōu)于AOA 算法.通過進行Wilcoxon 秩和檢驗,可以得出結(jié)論:KSOBLGO 算法在大多數(shù)測試函數(shù)中具有更好的優(yōu)化效果.綜合分析表3~4及圖2的結(jié)果,可以得出以下結(jié)論:融合知識共享和精英反向?qū)W習(xí)的KSOBLGO 算法在勘探和開發(fā)方面展現(xiàn)出更強的能力.與GO 算法、WOA算法和AOA算法相比,在優(yōu)化方面取得更好的結(jié)果.
表4 Wilcoxon符號秩檢驗p值表Tab.4 Wilcoxon signed rank test p-value table
提出一種融合知識共享和精英反向?qū)W習(xí)的成長算法,旨在通過將基于知識共享的優(yōu)化算法與精英反向?qū)W習(xí)相結(jié)合,提升最優(yōu)個體的局部搜索能力和其他個體的全局搜索能力,在探索和開發(fā)能力方面取得平衡.實驗結(jié)果表明,改進后的GO 算法顯著提高算法的隨機性和全局搜索尋優(yōu)性能,同時有效防止局部最優(yōu)停滯現(xiàn)象.然而,目前該研究僅在13個基準(zhǔn)測試函數(shù)上進行改進測試.未來的研究將嘗試整合不同的改進策略,并根據(jù)實際工程需求努力發(fā)展更具適應(yīng)性的智能優(yōu)化算法,為實際工程問題提供更出色的解決方案.