趙鵬軍, 陳克文, 黨 楠
(1.商洛學(xué)院數(shù)學(xué)與計(jì)算機(jī)應(yīng)用學(xué)院,陜西商洛 726000;2.商洛學(xué)院電子信息與電氣工程學(xué)院,陜西商洛 726000)
基于對(duì)正弦、余弦函數(shù)的研究,澳大利亞學(xué)者M(jìn)irjalili[1]于2016年提出了一種新的智能優(yōu)化算法——正弦余弦算法(Sine Cosine Algorithm,SCA),該算法通過初始化多個(gè)隨機(jī)解,利用正弦函數(shù)值和余弦函數(shù)值的變化來求解優(yōu)化問題,能夠有效避免局部最優(yōu),是智能計(jì)算領(lǐng)域中的一個(gè)新的研究方向. 該算法具有模型簡(jiǎn)單、可調(diào)參數(shù)少、收斂速度快、全局尋優(yōu)能力強(qiáng)等特點(diǎn),已初步成功應(yīng)用于電力系統(tǒng)[2]、工程設(shè)計(jì)[3]、模式識(shí)別[4]等方面[5-15]. 和其他智能優(yōu)化算法一樣,SCA同樣存在易陷入局部最優(yōu)、后期收斂速度較慢等現(xiàn)象. 為提高算法的性能,本文借鑒有關(guān)算法[16-17]中的部分思想,提出了改進(jìn)的SCA(記為GSCA),利用文獻(xiàn)[16]中算法分群的思想,將種群體分成兩個(gè)子群進(jìn)行迭代操作,其中一個(gè)子群借鑒文獻(xiàn)[17]中算法第二階段的迭代方法,另一個(gè)子群中進(jìn)一步結(jié)合最優(yōu)信息,對(duì)原迭代公式進(jìn)行修改,使得在迭代過程中各個(gè)部分采用不同的迭代機(jī)制,可以提高種群的多樣性,通過種群間個(gè)體之間的合作與競(jìng)爭(zhēng)產(chǎn)生群體智能指導(dǎo)優(yōu)化搜索,可有效增強(qiáng)算法的開采能力,避免算法陷入局部最優(yōu),數(shù)值結(jié)果驗(yàn)證了改進(jìn)算法的可行性和有效性.
在正弦余弦算法中,首先隨機(jī)初始化個(gè)體,然后以一定的概率分別利用正弦函數(shù)或余弦函數(shù)的值進(jìn)行迭代,更新個(gè)體位置,其迭代公式為
算法先將種群中的個(gè)體隨機(jī)散布在解空間,然后根據(jù)式(1)計(jì)算更新后的位置,這樣通過多次移動(dòng)后,所有個(gè)體都將聚集在最優(yōu)位置上,從而實(shí)現(xiàn)尋優(yōu).
為進(jìn)一步提高算法的搜索效率,有效避免過早陷入局部最優(yōu),加快收斂速度并提高求解精度,受文獻(xiàn)[16-17]的啟發(fā)并結(jié)合算法自身最優(yōu)信息,將種群分成相等的兩個(gè)子群,各個(gè)子群采用不同的迭代公式進(jìn)行迭代,以提高種群的多樣性,算法收斂速度和求解精度,其中一個(gè)子群用公式(2)進(jìn)行迭代.
另一子群用式(3)進(jìn)行迭代.
利用式(2)~(3)進(jìn)行迭代的算法記為GSCA. 兩個(gè)子群在不同迭代公式的作用下為迭代提供更有效的信息,可以在一定程度上引導(dǎo)個(gè)體快速朝最優(yōu)解方向移動(dòng),增強(qiáng)其尋優(yōu)能力,為跳出局部最優(yōu)提供了可能,更有可能求得優(yōu)化問題的全局最優(yōu)解.
綜上所述,GSCA流程如下:
步驟1 產(chǎn)生隨機(jī)初始種群及參數(shù)(個(gè)體數(shù)N,最大迭代次數(shù)T).
步驟2 計(jì)算個(gè)體的目標(biāo)函數(shù)值并確定全局最優(yōu).
步驟4 根據(jù)更新后個(gè)體位置,重新計(jì)算個(gè)體的目標(biāo)函數(shù)值,并更新全局最優(yōu).
步驟5 當(dāng)達(dá)到最大迭代次數(shù)時(shí)算法結(jié)束,輸出最優(yōu)個(gè)體值;否則,轉(zhuǎn)步驟3.
表1 測(cè)試函數(shù)Tab.1 Test functions
文中對(duì)SCA和GSCA分別進(jìn)行了測(cè)試,為了增強(qiáng)可比性,采用文獻(xiàn)[1]中建議的參數(shù)設(shè)置,兩種算法的種群規(guī)模N=30,維數(shù)n=30,最大迭代次數(shù)T=1000.
每個(gè)測(cè)試函數(shù)在上述參數(shù)設(shè)置下獨(dú)立運(yùn)行30次以消除隨機(jī)因素的影響,各算法對(duì)23個(gè)測(cè)試函數(shù)的計(jì)算結(jié)果統(tǒng)計(jì)如表2所示,包括平均結(jié)果和標(biāo)準(zhǔn)差.
表2 函數(shù)優(yōu)化結(jié)果比較Tab.2 Comparison of optimization results for functions
從表2中的平均結(jié)果和標(biāo)準(zhǔn)差的比較可知,對(duì)函數(shù)f1~f7,f10~f13,f15~f20,f22,f23來說,給出的算法的收斂精度和尋優(yōu)能力均優(yōu)于SCA,在f9,f14上,給出的算法的效果略差于SCA,在f8,f21上,給出的算法取得了較好的平均結(jié)果,但SCA的標(biāo)準(zhǔn)差較小. 對(duì)于絕大部分函數(shù)來說,GSCA在收斂能力和穩(wěn)定性方面,都優(yōu)于SCA.
算法對(duì)兩個(gè)實(shí)際問題的計(jì)算結(jié)果如表3所示,包括最好結(jié)果、最差結(jié)果、平均結(jié)果和標(biāo)準(zhǔn)差. 從表3的統(tǒng)計(jì)結(jié)果可知,GSCA很容易求解第一個(gè)實(shí)際問題,取得了較好的最好結(jié)果、最差結(jié)果、平均結(jié)果和標(biāo)準(zhǔn)差,對(duì)第二個(gè)實(shí)際問題,GSCA取得了較好的最好結(jié)果、最差結(jié)果、平均結(jié)果.
表3 實(shí)際問題優(yōu)化結(jié)果比較Tab.3 Comparison of optimization results for practical problems
這里僅列出部分測(cè)試函數(shù)的收斂曲線. 從圖1~4可以看出,相比于SCA,改進(jìn)算法能夠增強(qiáng)算法跳出局部最優(yōu)的能力,在收斂精度方面有很大程度的提高,充分說明新的群體更新方式的有效性.
圖1 函數(shù)f7 進(jìn)化曲線Fig.1 Evolution curves of function f7
圖2 函數(shù)f11 進(jìn)化曲線Fig.2 Evolution curves of function f11
圖3 函數(shù)f14 進(jìn)化曲線Fig.3 Evolution curves of function f14
圖4 函數(shù)f20 進(jìn)化曲線Fig.4 Evolution curves of function f20
GSCA由于采用了混合蛙跳算法中分群的思想,共生生物搜索算法的“共棲”思想及算法自身最優(yōu)信息,在一定程度上改善了對(duì)優(yōu)化問題的搜索能力,其收斂精度高,穩(wěn)定性較好,提高了算法的尋優(yōu)效率.
正弦余弦算法是一種新的隨機(jī)優(yōu)化算法,利用混合蛙跳算法、共生生物搜索算法及算法自身最優(yōu)信息對(duì)正弦余弦算法做了改進(jìn),使算法在具有良好收斂性的同時(shí),有效地改善了算法的搜索能力. 對(duì)函數(shù)優(yōu)化問題和實(shí)際問題的仿真結(jié)果表明GSCA提高了算法的搜索性能,能有效避免早熟收斂,而且算法的穩(wěn)定性好.下一步將研究如何進(jìn)一步提高算法在求解多模函數(shù)的尋優(yōu)能力以及用本算法處理實(shí)際問題.