王亞玲,張清泉
山西師范大學(xué)物理與信息工程學(xué)院,山西 臨汾 041000
近年來(lái),元啟發(fā)式算法因其靈活性高、無(wú)梯度機(jī)制和可跳出局部最優(yōu)等優(yōu)點(diǎn)被人們廣泛使用.基本的樽海鞘算法具有簡(jiǎn)單易行、計(jì)算力量小等優(yōu)點(diǎn),但仍然存在易陷入局部最優(yōu),收斂速度慢等問(wèn)題.在此研究基礎(chǔ)上,文獻(xiàn)[1]提出了自適應(yīng)評(píng)估移動(dòng)策略和基于馮諾依曼拓?fù)浣Y(jié)構(gòu)的鄰域最優(yōu)引領(lǐng)策略的改進(jìn)樽海鞘群算法,該算法較標(biāo)準(zhǔn)算法具有更好的性能.文獻(xiàn)[2]在基本樽海鞘群算法的基礎(chǔ)上引入文化基因算法,采用多個(gè)樽海鞘鏈同時(shí)進(jìn)行尋優(yōu),并在硬件在環(huán)實(shí)驗(yàn)中證明了改進(jìn)算法的可行性.以上算法從不同方面對(duì)樽海鞘群算法進(jìn)行了改進(jìn),并有一定的性能提升,但仍存在局部開(kāi)發(fā)能力差、收斂速度慢等缺點(diǎn).針對(duì)上述問(wèn)題,本文通過(guò)樽海鞘(追隨者)位置更新環(huán)節(jié)中采用高斯概率分布采樣的方法,使樽海鞘追隨最優(yōu)解方向,加快算法進(jìn)入食物源所在區(qū)域的能力,進(jìn)一步提高了SSA算法跳出局部最優(yōu)的能力.
樽海鞘群算法(Salp Swarm Algorithm,SSA)是模仿樽海鞘群在海洋中航行和覓食的群族行為,由Seyedali Mirjalili等人在2017年提出的一種元啟發(fā)式算法[3].樽海鞘是類(lèi)似于水母的一種海洋動(dòng)物,其在航行和覓食過(guò)程中通常會(huì)形成鏈型,即后一個(gè)樽海鞘的位置跟隨著前一個(gè)樽海鞘的位置變化;Seyedali Mirjalili提出了一種樽海鞘鏈的數(shù)學(xué)模型,將樽海鞘種群分為領(lǐng)導(dǎo)者和追隨者2種類(lèi)型.領(lǐng)導(dǎo)者位于樽海鞘鏈的前半部分,追隨者位于后半部分且追隨領(lǐng)導(dǎo)者,分工合作,以找到滿(mǎn)意的食物源.SSA主要包括更新樽海鞘(領(lǐng)導(dǎo)者和追隨者)的位置,見(jiàn)式(1)~式(3).其中,領(lǐng)導(dǎo)者按照式(1)更新位置.
(1)
(2)
(3)
高斯分布采樣具有良好的局部開(kāi)發(fā)特性.首先,正態(tài)曲線(xiàn)的中心峰描述了它的保守能力,即采集的樣本大部分位于中心峰(最優(yōu)值)的附近.其次,曲線(xiàn)的無(wú)限邊緣能夠提高其探索能力和跳出局部最優(yōu)的能力.由此可見(jiàn),高斯分布采樣有助于開(kāi)拓新的搜索空間.高斯分布有兩個(gè)參數(shù)定義:均值和標(biāo)準(zhǔn)差.本文的研究利用群體結(jié)構(gòu)和搜索歷史的信息,探索了一種方法來(lái)設(shè)置這兩個(gè)參數(shù)[4].
Kennedy J[4]等人提出了骨干粒子群算法(Bare Bones Particle Swarms Optimization,BBPSO),該算法就是利用高斯概率分布采樣的方法對(duì)粒子群算法(Particle Swarm Optimization,PSO)進(jìn)行了改進(jìn),結(jié)果表明BBPSO算法優(yōu)于基本的粒子群算法.
受BBPSO算法[4]的啟發(fā),本文也將基于高斯概率分布采樣學(xué)習(xí)的方法引入到基本的樽海鞘群算法中,以避免樽海鞘群陷入局部最優(yōu)及加快收斂速度.
(4)
(5)
該搜索過(guò)程中,基于全局最優(yōu)位置(gbestn)的高斯概率采樣可以增強(qiáng)對(duì)局部開(kāi)拓的能力,改善樽海鞘盲目跟從的問(wèn)題,促使追隨者向更優(yōu)的位置移動(dòng);執(zhí)行式(5)能使其繼續(xù)追隨著緊挨自己的前一個(gè)樽海鞘.其中,系數(shù)r1為區(qū)間[0,1]的隨機(jī)數(shù).ISSA算法的操作流程圖如圖1所示.
圖1 提出的樽海鞘群算法流程圖Fig.1 The proposed flow chart of salp swarm algorithm
文章所提ISSA算法具體流程如下:
步驟1:初始化參數(shù).設(shè)置樽海鞘種群的數(shù)量,問(wèn)題的維度dim,各維度位置變化范圍的上限ub和下限lb,最大迭代次數(shù)max_iteration.
步驟2:計(jì)算適應(yīng)度.計(jì)算每只樽海鞘適應(yīng)度值并找出最優(yōu)樽海鞘.
步驟3:選出食物源.將上一步驟中的最優(yōu)樽海鞘位置分配給食物源.
步驟4:劃分樽海鞘群.將樽海鞘群劃分為具有相同數(shù)量的領(lǐng)導(dǎo)者、追隨者.其中領(lǐng)導(dǎo)者根據(jù)式(1)更新位置,使其總在食物源附近進(jìn)行探索開(kāi)發(fā);追隨者根據(jù)式(4)、式(5)兩步更新位置.更新完成后,進(jìn)行越界處理,計(jì)算新樽海鞘適應(yīng)度值,選出最優(yōu)位置更新食物源.
步驟5:判斷算法是否大于最大迭代次數(shù).如果滿(mǎn)足,輸出最優(yōu)位置和最優(yōu)適應(yīng)度值,算法結(jié)束.如果不滿(mǎn)足,重復(fù)步驟4.
采用Sphere函數(shù)(F1),Quadric函數(shù)(F2),Ackley函數(shù)(F3),Rastrigin函數(shù)(F4),Schwefel函數(shù)(F5),Rotated Sum Square函數(shù)(F6),Rotated Zakharov函數(shù)(F7)和Rotated Rosenbrock函數(shù)(F8)等8個(gè)基準(zhǔn)測(cè)試函數(shù)進(jìn)行實(shí)驗(yàn),測(cè)試本文提出的算法(ISSA算法)的性能[5,6].其中,F1、F2為單峰函數(shù);F3、F4為多峰函數(shù);F5~F8為旋轉(zhuǎn)漂移函數(shù);理論最優(yōu)值均為0.基準(zhǔn)測(cè)試函數(shù)如表1所示.
表1 測(cè)試函數(shù)Tab.1 Test function
本文算法的實(shí)驗(yàn)環(huán)境為Windows 10操作系統(tǒng),主頻3.2 GHz,主存8 GB,開(kāi)發(fā)工具M(jìn)atlab R2015b.對(duì)樽海鞘群算法進(jìn)行改進(jìn)的目的是避免樽海鞘群陷入局部最優(yōu)、提高收斂精度和收斂速度.為了證明本文提出的樽海鞘群算法的收斂精度、局部開(kāi)拓能力及收斂能力,將該算法與近年來(lái)提出的jDE[7]、PSOFDR[8]、BBDE[9]、BBExp[10]、SSA算法進(jìn)行對(duì)比.
使用上述8個(gè)測(cè)試函數(shù)測(cè)試30維的運(yùn)行結(jié)果.為了避免不必要的實(shí)驗(yàn)誤差,所有算法均使用表1給定的對(duì)稱(chēng)初始化范圍,且各算法的主要參數(shù)設(shè)置為:種群個(gè)體數(shù)40,獨(dú)立運(yùn)行次數(shù)20,最大評(píng)價(jià)次數(shù)(FEs)50 000.6種算法在8個(gè)測(cè)試函數(shù)上運(yùn)行的最優(yōu)值、平均值、標(biāo)準(zhǔn)差及收斂性能等級(jí)的測(cè)試結(jié)果如表2所示,最優(yōu)結(jié)果以黑色粗體顯示.
表2 不同算法30維結(jié)果比較Tab.2 Comparition of 30-dimensional results of different algorithms
由表2結(jié)果可以看出:在8個(gè)測(cè)試函數(shù)中,就單峰函數(shù)(F1、F2)和多峰函數(shù)(F3、F4)而言,ISSA算法運(yùn)行結(jié)果的最優(yōu)值、平均值和標(biāo)準(zhǔn)差均明顯優(yōu)于其他5種對(duì)比算法,且在20次的獨(dú)立運(yùn)行結(jié)果中均能找到理論最優(yōu)值.由此說(shuō)明,ISSA算法在收斂精度和全局優(yōu)化能力方面優(yōu)于其他算法.對(duì)于旋轉(zhuǎn)漂移函數(shù),在F6、F7函數(shù)的測(cè)試結(jié)果中可知,ISSA算法獲得的最優(yōu)值、平均值、標(biāo)準(zhǔn)差均優(yōu)于其他算法;但在F5、F8函數(shù)的測(cè)試結(jié)果中可以發(fā)現(xiàn),BBDE、jDE、BBExp、PSOFDR和SSA的最優(yōu)結(jié)果優(yōu)于ISSA算法.由總體結(jié)果的比較可知,ISSA算法在8個(gè)函數(shù)測(cè)試中,有6個(gè)函數(shù)獲得的最優(yōu)值、平均值、標(biāo)準(zhǔn)差優(yōu)于其他對(duì)比算法,因此,ISSA算法的尋優(yōu)結(jié)果最好.
為了能直觀地觀察算法的尋優(yōu)過(guò)程,繪制了如圖2所示的不同基準(zhǔn)測(cè)試函數(shù)在20次獨(dú)立運(yùn)行中通過(guò)6種算法實(shí)現(xiàn)的平均適應(yīng)度值的收斂曲線(xiàn).其中,每個(gè)圖的橫坐標(biāo)為評(píng)價(jià)次數(shù)(FEs),縱坐標(biāo)為對(duì)平均適應(yīng)度值取10為底的對(duì)數(shù).
圖2 不同算法的性能曲線(xiàn)比較圖(30維)Fig.2 Comparison of performance curves of different algorithms(30 dimensions)
由圖2可知,由于很容易找到Sphere(F1)函數(shù)的最優(yōu)值方向,所以ISSA以最快的收斂速度到達(dá)理論最優(yōu)值0,其他對(duì)比算法雖然沒(méi)有收斂到理論最優(yōu)值,但BBDE、jDE、BBExp和PSOFDR均能達(dá)到了10-60以上解的精度(除SSA算法);對(duì)于Quadric(F2)函數(shù),ISSA以很小的評(píng)價(jià)次數(shù)獲得理論最優(yōu)值,但PSOFDR和BBExp并沒(méi)有收斂到全局最優(yōu)值,略劣于jDE、BBDE和SSA;對(duì)于Ackley(F3)函數(shù),ISSA迅速到達(dá)理論最優(yōu)值,jDE、BBExp和PSOFDR的收斂速度明顯優(yōu)于其他兩種算法,且最后均達(dá)到10-14的精度;對(duì)于Rastrigin(F4)函數(shù),ISSA收斂到了理論最優(yōu)值,jDE收斂速度及收斂精度優(yōu)于其他四種算法;對(duì)于Schwefel(F5)函數(shù),ISSA、PSOFDR、BBDE、BBExp、SSA在達(dá)到一定精度后陷入了局部最優(yōu),只有jDE跳出了局部最優(yōu),但在評(píng)價(jià)后期的尋優(yōu)效果不明顯;對(duì)于Rotated Sum Square(F6)函數(shù),ISSA迅速到達(dá)理論最優(yōu)值,BBDE達(dá)到了10-55的精度,具有相對(duì)較好的性能;對(duì)于Rotated Zakharov(F7)函數(shù),ISSA同樣以最快的速度收斂到理論最優(yōu)值,除BBExp之外,其余對(duì)比算法的收斂精度基本相同,均略?xún)?yōu)于BBExp;由于Rotated Rosenbrock(F8)函數(shù)的最優(yōu)解方向不易找到,各算法均沒(méi)有收斂到全局最優(yōu).綜上所述,ISSA找到了8個(gè)測(cè)試函數(shù)中6個(gè)函數(shù)的理論最優(yōu)值,故該算法相比于5個(gè)對(duì)比算法,在收斂速度、收斂精度和全局優(yōu)化能力方面有很好的性能.
由以上兩個(gè)方面的分析結(jié)果可知:從表2的最優(yōu)值、平均值、標(biāo)準(zhǔn)差可以看出,ISSA的尋優(yōu)結(jié)果最好;從圖2的收斂曲線(xiàn)可以看出,ISSA具有很好的收斂精度、收斂速度和全局優(yōu)化能力.
一種基于高斯概率分布采樣學(xué)習(xí)的樽海鞘群算法(ISSA)利用均值為gbestn/2,標(biāo)準(zhǔn)差為|gbestn|的高斯分布的隨機(jī)采樣替代追隨著的樽海鞘位置更新公式,進(jìn)而改善了基本的樽海鞘群算法存在的盲目跟從的問(wèn)題,增強(qiáng)了對(duì)局部區(qū)域的搜索能力[11].提出的樽海鞘群算法被用來(lái)優(yōu)化八個(gè)基準(zhǔn)測(cè)試函數(shù),經(jīng)過(guò)仿真實(shí)驗(yàn)及分析可知,ISSA算法在收斂精度和收斂速度方面明顯優(yōu)于SSA算法;ISSA算法雖然并不總具有最佳性能,但該算法在收斂速度、收斂精度與局部開(kāi)拓能力上具有更優(yōu)的優(yōu)勢(shì).