李君妍,童亞拉
(1.湖北第二師范學(xué)院計算機(jī)學(xué)院,武漢 430205;2.基礎(chǔ)教育信息技術(shù)服務(wù)湖北省協(xié)同創(chuàng)新中心,武漢 430205;3.湖北工業(yè)大學(xué)理學(xué)院,武漢 430068)
近年來,隨著太陽能作為新能源帶動光伏發(fā)電被廣泛應(yīng)用,質(zhì)量高的光伏發(fā)電預(yù)測成為了一種需求[1-2],資料同化是數(shù)值預(yù)報模式提供高質(zhì)量初值的方法,其中變分同化問題是一個非線性最優(yōu)化問題,由于計算量太大、模式復(fù)雜及同化結(jié)果依賴于初猜值的選取,對于算法的收斂性、精確性均有很高的要求[3-4].國內(nèi)外學(xué)者們?yōu)榻鉀Q此問題做了大量研究工作,其中最有代表性的是Tao Sun等設(shè)計的多時標(biāo)的四維變分?jǐn)?shù)據(jù)同化方案[5],Tian等設(shè)計的非線性最小二乘四維變分?jǐn)?shù)據(jù)同化方法[6],Rossella Arcucci采用截斷奇異值分解方案和Tikhonov正則化方法[7-8],以及吳祝慧等設(shè)計的基于區(qū)域逐步分析的同化方法[9].然而,粒子群在特定同化過程中所達(dá)到的精度及速度還遠(yuǎn)遠(yuǎn)不夠,這也是大多數(shù)智能優(yōu)化算法在資料同化的應(yīng)用上研究解決的重點.
鑒于PSO存在過早收斂或陷入局部極優(yōu)的問題,劉曉彥等引入“早熟”判斷機(jī)制,對粒子更新后的位置進(jìn)行混沌擾動,避免陷入局部最優(yōu)[10],但算法速度有待提高;王晨思等提出了一種權(quán)重尋優(yōu)的粒子群算法,通過動態(tài)自適應(yīng)方式對慣性權(quán)重進(jìn)行更新,提高了算法的精度而算法時間沒有改善[11];徐星等將熱力學(xué)原理和熱運(yùn)動機(jī)制引入到粒子群優(yōu)化算法中,提出了一種基于分子動理論的粒子群優(yōu)化算法(MMT-PSO),大大提高了算法的精度[12],但在處理大數(shù)據(jù)問題時算法速度較慢.鄭琴通過改進(jìn)權(quán)重下降策略以及學(xué)習(xí)因子,提出了一種動態(tài)慣性權(quán)重PSO算法以求解含不連續(xù)開關(guān)過程的變分資料同化問題.與GA同化方案和伴隨方法相比,數(shù)值試驗結(jié)果顯示:PSO方案的同化結(jié)果質(zhì)量遠(yuǎn)高于前兩種方案,魯棒性也更強(qiáng),但由于粒子個數(shù)的有效設(shè)置較差,完成同化所耗費的時間遠(yuǎn)大于伴隨方法[13].張成興提出結(jié)合時變加速因子的粒子群算法,通過時變的加速因子,較好平衡了粒子群算法的全局和局部搜索模型,但算法速度提高不大[14].受上述啟發(fā),本文設(shè)計了一種新的分子運(yùn)動粒子群算法——并行分子運(yùn)動論粒子群優(yōu)化算法(PMPSO),其基本思想是將粒子群分成N個子集(N不大于CPU的核數(shù)),每個子集同時進(jìn)行粒子迭代運(yùn)算,以提高算法處理速度;每次迭代完后將每一子集中的頭號精英粒子數(shù)據(jù)傳遞給公共部分,再進(jìn)行下一次迭代,這樣,既提高了算法處理速度又不降低進(jìn)化精度.將PMPSO用于資料同化過程[15-16],與動態(tài)權(quán)重粒子群算法PSOCIWAC和時變雙重壓縮因子粒子群算法PSOTVCF相比,實驗結(jié)果表明PMPSO在上時間、精度上具有很大的優(yōu)勢.
本文里的資料同化控制方程來源于文獻(xiàn)[17]中的偏微分方程:
(1)
(2)
模擬參數(shù)化過程中的“on-off”開關(guān).相應(yīng)于(1)的數(shù)值模式為:
(3)
其中,Δl表示空間步長,li=iΔl,i為空間格點;Δt表示時間步長,tk=kΔt,k為空間層.N=T/Δt為積分過程中總的時間層;M+1=(T/Δt)+1為空間離散點總數(shù).
本算法中的粒子屬性包括速度和位置以及加速度.此外,借鑒統(tǒng)計物理學(xué)和熱力學(xué)中的質(zhì)心和加速度的概念,定義了群質(zhì)心和加速度.
群質(zhì)心計算公式如下:
(4)
其中,Xi為種群內(nèi)第i個粒子的坐標(biāo);mi表示中第i個粒子的質(zhì)量,可視mi為粒子i的權(quán)重,實際處理時將mi視為粒子i的適應(yīng)值,不妨假設(shè)粒子質(zhì)量均為1,式(4)可簡化為
(5)
當(dāng)F在斥力和引力之間轉(zhuǎn)換時,F(xiàn)的大小和方向隨分子間距離變化而變化,根據(jù)牛頓第二定律
(6)
加速度a的大小和方向也隨之變化.若不計加速度大小變化,當(dāng)分子力為引力時a=1,為斥力時a=-1.
綜上所述,粒子的速度更新公式變更為
(7)
式中,ai為粒子i的加速度.初始化時粒子的加速度設(shè)置1,迭代過程中,粒子i與群質(zhì)心間的距離d(Xcen,Xi)時刻調(diào)整[12].
融合了分子運(yùn)動論的PSO算法在精度上得到了提高,這是因為算法把種群中每個粒子類比成分子,由于粒子和質(zhì)心間的距離不同,粒子與質(zhì)心間的分子作用力控制粒子的飛行方向,決定了粒子是向著質(zhì)心還是背著質(zhì)心的方向飛行.當(dāng)d(Xcen,Xi)小于某個閾值d1時,分子作用力為斥力,此時粒子遠(yuǎn)離質(zhì)心,種群多樣性得以保持,全局搜索能力增強(qiáng);當(dāng)d(Xcen,Xi)小于某個閾值d2時,分子作用力為引力,此時粒子飛向質(zhì)心,算法收斂性得以保持,局部搜索能力增強(qiáng),這種機(jī)制有效增加了種群多樣性,從而平衡全局和局部搜索[12].
PSO中個體根據(jù)適應(yīng)度的高低進(jìn)行評價,當(dāng)個體適應(yīng)度越高,則離目標(biāo)函數(shù)最優(yōu)解越近;當(dāng)個體適應(yīng)度越低,則離目標(biāo)函數(shù)最優(yōu)解越遠(yuǎn),即適應(yīng)度高的狀態(tài)應(yīng)該對應(yīng)目標(biāo)函數(shù)的較優(yōu)狀態(tài).由于變分同化是最小化問題,于是將上述基于分子運(yùn)動論的粒子群算法運(yùn)用到變分同化問題之中求解變分同化代價函數(shù)的最小值.
資料同化代價函數(shù)定義如下:
(8)
相應(yīng)式(4)的離散代價函數(shù)為
(9)
定義PSO中的適應(yīng)度函數(shù)為:
(10)
其中,
將基于分子運(yùn)動論的粒子群算法應(yīng)用于變分資料同化的計算流程如下:
1)初始化種群粒子.初始化粒子的位置、速度和加速度,確定最大迭代次數(shù);
3)更新粒子的pbest和gbest.重新計算每一個粒子的適應(yīng)度值,并將其與粒子的最優(yōu)位置比較,從而更新粒子的pbest,再比較當(dāng)前所有的pbest和gbest,以更新gbest;
4)如果達(dá)到最大迭代次數(shù),執(zhí)行7),否則執(zhí)行5);
5)計算每個粒子距離種群重心的距離,若距離重心超過最遠(yuǎn)距離則加速度為正,反之加速度為負(fù);
6)通過公式(9)和(5)調(diào)整粒子的速度與位置,然后執(zhí)行2);
7)輸出全局最優(yōu)解,算法結(jié)束.
針對標(biāo)準(zhǔn)粒子群算法在精度上的不足,基于分子運(yùn)動論的粒子群算法在此基礎(chǔ)上進(jìn)行了改進(jìn),但在同化時間即算法速度上卻得不到提升.本文采用并行計算的原理對分子運(yùn)動論粒子群算法加以改進(jìn).并行計算的基本思想是將粒子群分成N個子集(N不大于CPU的核數(shù)),每個子集交給一個線程控制,同時進(jìn)行粒子迭代運(yùn)算,以提高算法處理速度;每一子集中的頭號精英粒子,將數(shù)據(jù)傳遞給公共部分在每次迭代完后,然后進(jìn)入下一次迭代,其目的是讓每個子集間進(jìn)行信息交流以增加多樣性.采用這種方式增加多樣性是因為以異步通信形式進(jìn)行并行運(yùn)算可有效避免精度下降的同時,實現(xiàn)信息交流;另外,由于并行算法的本質(zhì)是最大限度的提高硬件的利用率,算法結(jié)果依舊能保持良好的精度.
基于PMPSO算法的資料同化計算流程如下:
1)初始化種群粒子.初始化粒子的位置、速度和加速度,確定最大迭代次數(shù);
2)將粒子隨機(jī)分成N個種群,并分配給計算機(jī)的N個核;
4)更新粒子的pbest和gbest.重新計算每一個粒子的適應(yīng)度值,并將其與粒子的最優(yōu)位置比較,從而更新粒子的pbest,再比較當(dāng)前所有的pbest和gbest,以更新gbest;
5)如果達(dá)到最大迭代次數(shù),執(zhí)行8),否則執(zhí)行6);
6)計算每個粒子距離種群重心的距離,若距離重心超過最遠(yuǎn)距離則加速度為正,反之加速度為負(fù);
7)通過公式(9)和(5)調(diào)整粒子的速度與位置,將四個種群的全局最優(yōu)和個體最優(yōu)比較留下最好的,然后執(zhí)行3);
8)輸出全局最優(yōu)解,算法結(jié)束.
借用文獻(xiàn)[13]和文獻(xiàn)[14]的實驗數(shù)據(jù)和實驗分析方法,將時變雙重壓縮因子粒子群算法(PSOTVCF)、動態(tài)權(quán)重粒子群算法(PSOCIWAC)和本算法(PMPSO)分別應(yīng)用于變分資料同化,進(jìn)行研究精度和時間上的比較.其中,后兩種算法中的慣性權(quán)重從0.7線性遞減到0.1;PSOTVCF的加速度因子:第一個壓縮因子為常量,C1=2.6,C2=1.2;第二個壓縮因子呈時變狀態(tài),C1N=2.88,C1M=2.68,C2N=2.45,C2M=1.25,PSOCIWAC和PMPSO的加速度因子:C1=2.6,C2=1.2;d1,d2分別設(shè)置為0.01和0.4.初始化200個粒子進(jìn)行1 000次迭代;測試環(huán)境為硬件Intel Core i5,軟件MATLAB R2017a.
圖1是200次迭代同化后收斂精度的比較.圖中,所劃出的橫線分別表示3種實驗迭代次數(shù)為200時1 000次同化試驗的平均值,橫坐標(biāo)表示迭代次數(shù),縱坐標(biāo)表示收斂精度的對數(shù)log10J,越小代表同化后的初值越接近觀測值,從圖中可以看出PMPSO算法精度明顯高于PSOCIWAC算法和PSOTVCF算法.
圖1 200次同化(Iter=200)后收斂精度比較Fig.1 The convergence accuracy comparison after 200 times iteration
圖2 收斂精度變化趨勢圖Fig.2 The convergence accuracy change tendency
圖2展示了3種算法隨迭代次數(shù)增加所對應(yīng)的收斂精度變化趨勢圖.圖中橫坐標(biāo)表示以每隔50代取一次的方法記錄種群精度的次數(shù),縱坐標(biāo)表示收斂精度的對數(shù)log10J.觀察圖1可知,當(dāng)?shù)螖?shù)達(dá)到100代,3種方法收斂精度變化大致相同;當(dāng)?shù)螖?shù)達(dá)到150代,PSOTVCF顯示出較大優(yōu)勢,同化質(zhì)量遠(yuǎn)超PSOCIWAC和PMPSO,但仍有粒子尚未收斂;當(dāng)?shù)螖?shù)達(dá)到200代,PSOTVCF和PSOCIWAC圖像趨于平衡狀態(tài),表示兩種算法皆已基本收斂,而PMPSO還處于未完全收斂的狀態(tài),此時PMPSO收斂精度已經(jīng)遠(yuǎn)超其余兩種算法.當(dāng)?shù)螖?shù)達(dá)到400次時,PSOCIWAC收斂到-11.2,PSOTVCF收斂到-13,PMPSO收斂到-15.8.可知PMPSO同化結(jié)果的質(zhì)量遠(yuǎn)高于PSOTVCF和PSOCIWAC,這是因為算法把種群中每個粒子類比成分子,由于粒子和質(zhì)心間的距離不同,粒子與質(zhì)心間的分子作用力控制粒子的飛行方向,決定了粒子是向著質(zhì)心還是背著質(zhì)心的方向飛行.分子作用力為斥力,此時粒子遠(yuǎn)離質(zhì)心,種群多樣性得以保持,全局搜索能力增強(qiáng);分子作用力為引力,此時粒子飛向質(zhì)心,算法收斂性得以保持,局部搜索能力增強(qiáng).這使得種群的多樣性得以協(xié)調(diào),算法能夠平衡全局搜索和局部搜索.
表1展示了不同迭代次數(shù)所對應(yīng)耗費的同化時間,每種迭代次數(shù)進(jìn)行4次同化實驗,下表取其平均值進(jìn)行展示.
表1 同化耗費時間表Tab.1 Assimilation time table
由表可知,PMPSO在不同迭代次數(shù)所對應(yīng)耗費的同化時間最短,這是因為PMPSO運(yùn)用多核CPU的計算方式,將粒子群分為四個粒子群子集,再把每個子集代入一個核進(jìn)行計算,由此大大縮短了同化時間.綜上所述,PMPSO在同化時間上相對于其他三種算法得到了提升,具有一定的優(yōu)越性.
針對分子運(yùn)動論P(yáng)SO算法在處理大數(shù)據(jù)時速度較慢的問題,本文著重并行計算思想改進(jìn)了算法,最大限度的提高計算機(jī)硬件以提高算法運(yùn)行速度,在種群更新策略上,每一子集中的頭號精英粒子,將數(shù)據(jù)傳遞給公共部分在每次迭代完后,然后進(jìn)入下一次迭代,以保證多樣性.將所設(shè)計的算法應(yīng)用于變分資料同化中,與動態(tài)權(quán)重PSO算法和雙重時變壓縮因子PSO算法相比,在收斂精度和同化時間上有了較大的提升.同時,本文僅將算法應(yīng)用于含“開關(guān)”過程的變分資料同化中,后續(xù)可嘗試著將PMPSO應(yīng)用于其他場景下的資料同化,擴(kuò)大所設(shè)計算法的適用空間.