孟彩霞 吳 迪 雷 雨
1 西安郵電大學(xué)計(jì)算機(jī)學(xué)院,西安市西長(zhǎng)安街618號(hào),710121
傳統(tǒng)二次多項(xiàng)式模型(QP模型)和BP神經(jīng)網(wǎng)絡(luò)模型在進(jìn)行衛(wèi)星鐘差短期預(yù)報(bào)時(shí)存在精度不高的問題,而麻雀搜索算法(SSA)在單峰測(cè)試函數(shù)、多峰測(cè)試函數(shù)和固定維度測(cè)試函數(shù)中的收斂精度、速度及穩(wěn)定性均優(yōu)于其他群智能優(yōu)化算法[1],這是由于SSA中麻雀不同的行為策略對(duì)全局搜索作出了重要貢獻(xiàn)?;诖?,本文提出SSA-BP神經(jīng)網(wǎng)絡(luò)模型,該模型是在BP神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上采用麻雀搜索算法進(jìn)行參數(shù)優(yōu)化,通過迭代尋優(yōu)確定BP神經(jīng)網(wǎng)絡(luò)的全局最優(yōu)參數(shù),從而進(jìn)一步提高BP神經(jīng)網(wǎng)絡(luò)模型的短期鐘差預(yù)報(bào)精度。
SSA是一種新型群智能優(yōu)化算法,主要是受麻雀覓食行為和反捕食行為的啟發(fā)而提出的[2],具有較強(qiáng)的全局尋優(yōu)能力,不依賴梯度信息,有良好的并行性和較快的收斂速度。
為了獲得食物,麻雀通??梢圆捎冒l(fā)現(xiàn)者和加入者這2種行為策略進(jìn)行覓食。種群中的個(gè)體會(huì)監(jiān)視其他個(gè)體的行為,該種群中的加入者會(huì)與高攝取量的同伴爭(zhēng)奪食物資源,以提高自己的捕食率[2]。此外,當(dāng)麻雀種群意識(shí)到危險(xiǎn)時(shí)會(huì)作出反捕食行為。
1)在麻雀搜索算法中,發(fā)現(xiàn)者的位置更新如下:
(1)
式中,t為當(dāng)前迭代數(shù),j=1、2、3…、d代表維度, itermax為一個(gè)常數(shù),表示最大迭代次數(shù),Xi,j為第i個(gè)麻雀在第j維中的位置信息,α∈(0,1)為一個(gè)隨機(jī)數(shù),R2∈(0,1)和ST∈[0.5,1]分別為預(yù)警值和安全值,Q為服從正態(tài)分布的隨機(jī)數(shù),L為一個(gè)1×d維的矩陣。
2)對(duì)于加入者:
(2)
式中,XP為目前發(fā)現(xiàn)者所占據(jù)的最優(yōu)位置,Xworst為當(dāng)前全局最差位置,A為一個(gè)1×d維的矩陣,每個(gè)元素隨機(jī)賦值1或-1,并且A+=AT(AAT)-1。當(dāng)i>n/2時(shí),表明適應(yīng)度值較低的第i個(gè)加入者沒有獲得食物,處于十分饑餓的狀態(tài),需要去往其他地方覓食。
3)假設(shè)意識(shí)到危險(xiǎn)的麻雀占麻雀總量的10%~20%,這些麻雀的初始位置在種群中隨機(jī)產(chǎn)生,其數(shù)學(xué)表達(dá)式為:
(3)
式中,Xbest為當(dāng)前全局最優(yōu)位置,β為步長(zhǎng)控制參數(shù),服從均值為 0、方差為1的正態(tài)分布隨機(jī)數(shù),K∈[-1,1]為一個(gè)隨機(jī)數(shù),fi為當(dāng)前麻雀?jìng)€(gè)體的適應(yīng)度值,fg和fw分別為當(dāng)前全局最優(yōu)和最差的適應(yīng)度值,ε為常數(shù),以避免分母出現(xiàn)0。
BP神經(jīng)網(wǎng)絡(luò)模型精度的提高是通過誤差反向傳播對(duì)神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值進(jìn)行不斷調(diào)整實(shí)現(xiàn)的,因此可使用SSA解決由權(quán)值、閾值隨機(jī)初始化導(dǎo)致的陷入局部最優(yōu)解的問題。SSA-BP神經(jīng)網(wǎng)絡(luò)計(jì)算流程的具體步驟為:
1)數(shù)據(jù)預(yù)處理。將原始鐘差數(shù)據(jù)歸一化到[-1,1]之間,目的是將預(yù)處理數(shù)據(jù)限定在一定范圍內(nèi),解決因奇異樣本數(shù)據(jù)不良導(dǎo)致的無法收斂或收斂過慢等問題。
2)確定BP神經(jīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。本文實(shí)驗(yàn)根據(jù)滑動(dòng)窗思想[3]確定輸入層神經(jīng)元個(gè)數(shù)n=5,因?yàn)橹挥幸粋€(gè)輸出變量,所以定義輸出層神經(jīng)元個(gè)數(shù)q=1,隱含層神經(jīng)元個(gè)數(shù)p的確定根據(jù)經(jīng)驗(yàn)公式:
(4)
式中,α的取值為1~10之間的常數(shù)。實(shí)驗(yàn)結(jié)果表明,p=9時(shí)該模型預(yù)報(bào)結(jié)果最優(yōu),因此網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)設(shè)為5-9-1。
3)參數(shù)初始化。確定SSA的最大迭代次數(shù)maxgen及種群規(guī)模sizepop,定義發(fā)現(xiàn)者producers所占種群比例為0.2,設(shè)置預(yù)警值R2和預(yù)警者數(shù)量。
4)定義適應(yīng)度函數(shù)并計(jì)算個(gè)體適應(yīng)度值。用種群中的每個(gè)個(gè)體代表BP神經(jīng)網(wǎng)絡(luò)中的初始權(quán)值和閾值,根據(jù)輸入層、隱含層和輸出層的神經(jīng)元數(shù)量可以得到初始編碼長(zhǎng)度dim=64。利用初始權(quán)值閾值進(jìn)行神經(jīng)網(wǎng)絡(luò)訓(xùn)練,將預(yù)測(cè)輸出值和實(shí)際輸出值的誤差絕對(duì)值求和作為適應(yīng)度函數(shù),適應(yīng)度值越小表示誤差越小。找到當(dāng)前全局最優(yōu)解并確定對(duì)應(yīng)的位置。
5)進(jìn)行麻雀位置的更新。在迭代過程中,將適應(yīng)度值較好的個(gè)體作為發(fā)現(xiàn)者,發(fā)現(xiàn)者會(huì)在搜索過程中優(yōu)先獲取食物,并為整個(gè)種群提供覓食方向[4]。根據(jù)預(yù)警值R2和安全值ST,使用式(1)更新發(fā)現(xiàn)者位置。加入者進(jìn)行監(jiān)視并與發(fā)現(xiàn)者競(jìng)爭(zhēng),使用式(2)更新位置。預(yù)警者占總量的10%~20%,這些麻雀的初始位置在種群中隨機(jī)產(chǎn)生,fi為當(dāng)前麻雀?jìng)€(gè)體的適應(yīng)度值,fg為當(dāng)前全局最優(yōu)適應(yīng)度值。根據(jù)fi和fg的比較結(jié)果,使用式(3)更新預(yù)警者位置。
6)查看位置更新之后的個(gè)體適應(yīng)度值,并與當(dāng)前最優(yōu)適應(yīng)度值進(jìn)行比較,達(dá)到最大迭代次數(shù)之后選擇全局最優(yōu)解;否則,再次進(jìn)行迭代。
7)將輸出的最優(yōu)解作為神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值,通過之前確定的BP神經(jīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)進(jìn)行訓(xùn)練,利用誤差反向傳播微調(diào)參數(shù),迭代訓(xùn)練直到達(dá)到預(yù)設(shè)的誤差精度或迭代次數(shù)。
8)使用SSA優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)模型進(jìn)行衛(wèi)星鐘差預(yù)報(bào)。
為驗(yàn)證SSA-BP神經(jīng)網(wǎng)絡(luò)模型的有效性和穩(wěn)定性,采用IGS提供的2020-06-20~06-29共2 880個(gè)歷元的GPS衛(wèi)星鐘差數(shù)據(jù)進(jìn)行實(shí)驗(yàn),其中數(shù)據(jù)的采樣間隔為5 min。以PRN05、PRN11、PRN25、PRN24等4種不同類型(Block ⅡR-M Rb、Block ⅡR Rb、Block ⅡF Rb、Block ⅡF Cs)的衛(wèi)星作為實(shí)驗(yàn)對(duì)象,這樣選擇首先是因?yàn)檫@4顆衛(wèi)星在當(dāng)前時(shí)間段內(nèi)鐘差數(shù)據(jù)完整且不存在明顯粗差,另外實(shí)驗(yàn)衛(wèi)星包含了銣鐘和銫鐘,可檢驗(yàn)?zāi)P蛯?duì)于不同類型衛(wèi)星鐘的預(yù)測(cè)效果。本文實(shí)驗(yàn)分為3個(gè)部分,使用上述數(shù)據(jù)對(duì)QP模型[6]、BP神經(jīng)網(wǎng)絡(luò)模型[7-9]、PSO-BP神經(jīng)網(wǎng)絡(luò)模型[10]和SSA-BP神經(jīng)網(wǎng)絡(luò)模型進(jìn)行實(shí)驗(yàn)對(duì)比。
對(duì)衛(wèi)星鐘差數(shù)據(jù)進(jìn)行尺度變化,歸一化數(shù)據(jù)以提高模型收斂速度,減少運(yùn)算量[5]:
(5)
采用標(biāo)準(zhǔn)差(SD)和均方根誤差(RMSE)作為評(píng)價(jià)各種模型預(yù)報(bào)穩(wěn)定性與精確度的依據(jù),計(jì)算公式如下:
(6)
式中,n為預(yù)測(cè)鐘差數(shù)據(jù)的歷元個(gè)數(shù),Ei為預(yù)報(bào)誤差值,u為預(yù)報(bào)誤差的平均值,為鐘差數(shù)據(jù)實(shí)際值,X′i為鐘差數(shù)據(jù)的模型預(yù)測(cè)值。
采用2020-06-20前12 h共144個(gè)歷元數(shù)據(jù)預(yù)測(cè)未來24、72、144個(gè)歷元的鐘差數(shù)據(jù),對(duì)比實(shí)驗(yàn)采用2020-06-20全天24 h共288個(gè)歷元數(shù)據(jù)預(yù)測(cè)未來24、72、144個(gè)歷元的鐘差數(shù)據(jù)。為驗(yàn)證QP模型、BP神經(jīng)網(wǎng)絡(luò)模型、PSO-BP神經(jīng)網(wǎng)絡(luò)模型、SSA-BP神經(jīng)網(wǎng)絡(luò)模型在鐘差預(yù)報(bào)過程中的精度和穩(wěn)定性及不同歷史數(shù)據(jù)對(duì)于鐘差預(yù)報(bào)精度和穩(wěn)定性的影響,計(jì)算4顆衛(wèi)星在4種模型下的RMSE和SD,結(jié)果見表1和2。
表1 12 h歷史數(shù)據(jù)下4種模型預(yù)報(bào)結(jié)果統(tǒng)計(jì)
由表1在3個(gè)時(shí)間段的預(yù)報(bào)結(jié)果可知,隨著預(yù)報(bào)時(shí)長(zhǎng)的增加,4種模型的預(yù)報(bào)誤差均有所上升,但SSA-BP神經(jīng)網(wǎng)絡(luò)模型預(yù)報(bào)誤差的變化較小,具有更好的抗干擾能力,且精度高于其他3種模型。4顆衛(wèi)星在2 h預(yù)報(bào)過程中,PSO-BP和SSA-BP神經(jīng)網(wǎng)絡(luò)模型精度均能保持在亞ns級(jí),4顆衛(wèi)星的SSA-BP神經(jīng)網(wǎng)絡(luò)模型12 h預(yù)報(bào)誤差平均為4.91 ns左右。由表2可知,隨著歷史數(shù)據(jù)的增加,在相同預(yù)報(bào)時(shí)長(zhǎng)下,4種模型的預(yù)報(bào)精度均有所上升,在2 h預(yù)報(bào)過程中,4種模型均處于亞ns級(jí),其中PRN25號(hào)衛(wèi)星SSA-BP神經(jīng)網(wǎng)絡(luò)模型的預(yù)報(bào)誤差保持在0.1 ns以內(nèi)。隨著預(yù)報(bào)時(shí)長(zhǎng)的增加,各模型的預(yù)報(bào)誤差都有所上升,但4顆衛(wèi)星SSA-BP神經(jīng)網(wǎng)絡(luò)模型12 h預(yù)報(bào)誤差平均仍保持在1.90 ns左右,說明經(jīng)SSA優(yōu)化后的神經(jīng)網(wǎng)絡(luò)模型提升了最終預(yù)報(bào)結(jié)果的精度。
表2 24 h歷史數(shù)據(jù)下4種模型預(yù)報(bào)結(jié)果統(tǒng)計(jì)
限于篇幅,下面僅給出PRN05號(hào)衛(wèi)星在不同歷史數(shù)據(jù)下4種模型預(yù)報(bào)12 h共144個(gè)歷元的誤差,結(jié)果見圖1。通過對(duì)12 h和24 h歷史數(shù)據(jù)進(jìn)行對(duì)比可以看出,SSA-BP神經(jīng)網(wǎng)絡(luò)模型在不同歷史數(shù)據(jù)下的預(yù)報(bào)效果均優(yōu)于其他3種模型,說明使用SSA對(duì)BP神經(jīng)網(wǎng)絡(luò)的初始權(quán)值和閾值進(jìn)行優(yōu)化后,可得到更優(yōu)、更穩(wěn)定的結(jié)果。
為更直觀地對(duì)比模型的提升效果,當(dāng)歷史數(shù)據(jù)為24 h時(shí),給出4顆衛(wèi)星預(yù)報(bào)12 h 的RMSE和SD的柱狀統(tǒng)計(jì),結(jié)果見圖2。
圖2 24 h歷史數(shù)據(jù)預(yù)報(bào)未來12 h鐘差Fig.2 Using 24 h historical data to predict the next 12 h clock bias
整體來看,經(jīng)過優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)模型在預(yù)報(bào)精度和穩(wěn)定性方面更優(yōu),其中SSA-BP神經(jīng)網(wǎng)絡(luò)模型的性能更好。以PRN05號(hào)衛(wèi)星銣鐘為例,利用24 h歷史數(shù)據(jù)預(yù)報(bào)12 h鐘差,SSA-BP神經(jīng)網(wǎng)絡(luò)模型相比另外3種模型在精度方面分別提升58.2%、85.3%、50.6%,在穩(wěn)定性方面分別提升29.0%、84.5%、46.7%。以PRN24號(hào)衛(wèi)星銫鐘為例,SSA-BP神經(jīng)網(wǎng)絡(luò)模型相比另外3種模型在精度方面分別提升23.3%、50.3%、18.8%,在穩(wěn)定性方面分別提升37.2%、46.0%、17.8%。這可能是由銣鐘存在顯著頻漂,與銫鐘的鐘差序列有差異導(dǎo)致的。
為驗(yàn)證歷史數(shù)據(jù)時(shí)長(zhǎng)對(duì)預(yù)報(bào)精度的影響,利用2020-06-20~06-29共2 880個(gè)歷元的IGS精密衛(wèi)星鐘差數(shù)據(jù),使用SSA-BP神經(jīng)網(wǎng)絡(luò)模型,以PRN05、PRN11、PRN24、PRN25號(hào)衛(wèi)星為例,分別選取時(shí)長(zhǎng)為144、288、576、864、1 152、1 440、1 728、2 016、2 304、2 592和2 880個(gè)歷元的歷史數(shù)據(jù)進(jìn)行12 h(144個(gè)歷元)的短期鐘差預(yù)報(bào),以確定一個(gè)或多個(gè)合適的歷史數(shù)據(jù)時(shí)長(zhǎng)。
使用SSA-BP神經(jīng)網(wǎng)絡(luò)模型繪制4顆衛(wèi)星不同歷史數(shù)據(jù)時(shí)長(zhǎng)下的預(yù)報(bào)誤差變化趨勢(shì),結(jié)果見圖3。可以看出,隨著時(shí)長(zhǎng)的增加,預(yù)報(bào)誤差有逐漸減小的趨勢(shì),在時(shí)長(zhǎng)為864個(gè)歷元時(shí),4顆衛(wèi)星的預(yù)報(bào)誤差達(dá)到局部最小值,之后出現(xiàn)明顯的波動(dòng),并且在時(shí)長(zhǎng)為2 016個(gè)歷元時(shí)達(dá)到另一個(gè)最小值,之后4顆衛(wèi)星的誤差開始波動(dòng)上升。由此可以確定,在當(dāng)前實(shí)驗(yàn)條件下,864個(gè)歷元(3 d)和2 016個(gè)歷元(7 d)為較好的歷史數(shù)據(jù)時(shí)長(zhǎng),但要確定最佳時(shí)長(zhǎng)還需要對(duì)這2個(gè)歷元進(jìn)行進(jìn)一步的實(shí)驗(yàn)。
圖3 不同時(shí)長(zhǎng)預(yù)報(bào)未來12 h誤差Fig.3 Prediction errors in the next 12 h with different durations
采用2020-06-20~06-22共864個(gè)歷元的歷史數(shù)據(jù)預(yù)測(cè)72、144、288個(gè)歷元的鐘差數(shù)據(jù),對(duì)比實(shí)驗(yàn)采用2020-06-20~06-26共2 016個(gè)歷元數(shù)據(jù)預(yù)測(cè)未來72、144、288個(gè)歷元的鐘差數(shù)據(jù)。為驗(yàn)證實(shí)驗(yàn)2中2個(gè)歷元的最佳時(shí)長(zhǎng)及4種模型在最佳時(shí)長(zhǎng)下的預(yù)報(bào)精度和穩(wěn)定性,計(jì)算4顆衛(wèi)星在4種模型下的RMSE和SD,結(jié)果見表3和4。
由表3和4可知,歷史數(shù)據(jù)時(shí)長(zhǎng)為7 d時(shí)預(yù)報(bào)精度達(dá)到最優(yōu),4種模型對(duì)于4顆衛(wèi)星6 h的預(yù)報(bào)精度均保持在亞ns級(jí);在12 h預(yù)報(bào)中,2種優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)模型精度也保持在1 ns以內(nèi),其中SSA-BP神經(jīng)網(wǎng)絡(luò)模型的結(jié)果更優(yōu)。通過對(duì)比2次實(shí)驗(yàn)中SSA-BP神經(jīng)網(wǎng)絡(luò)模型24 h預(yù)報(bào)結(jié)果可知,PRN05號(hào)衛(wèi)星在精度和穩(wěn)定性方面分別提升7.2%、19.9%,PRN11號(hào)衛(wèi)星分別提升67.4%、65.9%,PRN25號(hào)衛(wèi)星提升76.4%、77.9%,PRN24號(hào)衛(wèi)星提升60.2%、54.8%。
表3 3 d歷史數(shù)據(jù)下4種模型預(yù)報(bào)結(jié)果統(tǒng)計(jì)
表4 7 d歷史數(shù)據(jù)下4種模型預(yù)報(bào)結(jié)果統(tǒng)計(jì)
圖4為PRN05號(hào)衛(wèi)星在不同歷史數(shù)據(jù)時(shí)長(zhǎng)下4種模型預(yù)報(bào)24 h共288個(gè)歷元的誤差結(jié)果。其中,SSA-BP神經(jīng)網(wǎng)絡(luò)模型在3 d和7 d的歷史數(shù)據(jù)下,預(yù)測(cè)24 h的結(jié)果誤差均在0附近波動(dòng),總體起伏不大,體現(xiàn)出良好的穩(wěn)定性,說明經(jīng)過SSA優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)模型并沒有陷入局部最優(yōu)解,也在一定程度上說明了本文神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的可行性。
圖4 不同歷史數(shù)據(jù)預(yù)報(bào)未來24 h誤差對(duì)比Fig.4 Comparison of future 24 h prediction errors with different historical data
實(shí)驗(yàn)結(jié)果表明,在7 d的歷史數(shù)據(jù)擬合下,模型擁有更好的預(yù)報(bào)精度和穩(wěn)定性,故給出歷史數(shù)據(jù)時(shí)長(zhǎng)為7 d時(shí),4顆衛(wèi)星預(yù)報(bào)未來24 h鐘差的RMSE和SD,結(jié)果見圖5。
圖5 7 d歷史數(shù)據(jù)預(yù)報(bào)未來24 h鐘差Fig.5 Using 7 d historical data to predict the next 24 h clock bias
整體來看,相對(duì)于其他3種模型,SSA-BP神經(jīng)網(wǎng)絡(luò)模型的預(yù)報(bào)精度更優(yōu),穩(wěn)定性也更高。4顆衛(wèi)星SSA-BP神經(jīng)網(wǎng)絡(luò)模型24 h預(yù)報(bào)的平均誤差為0.592 ns,以PRN11號(hào)衛(wèi)星銣鐘為例,SSA-BP神經(jīng)網(wǎng)絡(luò)模型精度比QP模型、BP神經(jīng)網(wǎng)絡(luò)模型、PSO-BP神經(jīng)網(wǎng)絡(luò)模型分別提升62.2%、80.2%、48.7%,穩(wěn)定性分別提升43.5%、76.9%、27.4%。以PRN24號(hào)衛(wèi)星銫鐘為例,SSA-BP神經(jīng)網(wǎng)絡(luò)模型精度比其他3種模型分別提升87.3%、33.5%、2.9%,穩(wěn)定性分別提升77.5%、14.6%、1.2%。進(jìn)一步證明了SSA-BP神經(jīng)網(wǎng)絡(luò)模型對(duì)于不同類型的衛(wèi)星在鐘差預(yù)報(bào)方面具有優(yōu)越性。
本文結(jié)合SSA和BP神經(jīng)網(wǎng)絡(luò)提出一種新的衛(wèi)星鐘差預(yù)報(bào)模型——SSA-BP神經(jīng)網(wǎng)絡(luò)模型。基于IGS提供的衛(wèi)星鐘差數(shù)據(jù),使用SSA-BP神經(jīng)網(wǎng)絡(luò)模型、PSO-BP神經(jīng)網(wǎng)絡(luò)模型、傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)模型和QP模型進(jìn)行鐘差預(yù)報(bào)實(shí)驗(yàn),結(jié)果表明,SSA-BP神經(jīng)網(wǎng)絡(luò)模型的預(yù)報(bào)效果最優(yōu),在相同歷史數(shù)據(jù)下,隨著預(yù)報(bào)時(shí)長(zhǎng)的增加,結(jié)果的精度變化不大,誤差曲線保持在一定范圍內(nèi)波動(dòng)。
本文實(shí)驗(yàn)僅針對(duì)衛(wèi)星鐘差的短期預(yù)報(bào),對(duì)于中長(zhǎng)期預(yù)報(bào)及其他影響衛(wèi)星鐘差預(yù)報(bào)精度的因素還需作進(jìn)一步研究。