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