吳振宇 吳 凡 李云雷
(大連理工大學創(chuàng)新創(chuàng)業(yè)學院 遼寧 大連 116024)
現(xiàn)代社會的發(fā)展離不開電能,而無線傳能技術因其可以擺脫有線充電的特性受到廣泛的關注。無線傳能[1-3]可以用于軌道電車的實時供電、無線充電以及醫(yī)療器械、特種設備、無線傳感網(wǎng)、微波飛機和空間電力輸送等方面。
擴大無線傳能的供電范圍和供電功率一直是業(yè)內(nèi)研究的重點。相比遠距離廣播式的直接供電,采用多個中繼節(jié)點進行“多跳傳輸”更能夠有效提高供電范圍并保證供電功率。文獻[4]根據(jù)上述思路提出了一種無線電能傳輸網(wǎng)絡架構(Wireless Power Transfer Grid, WPTG)。WPTG是在空間上任意分布的無線節(jié)點通過無線傳能這一供電方式形成的虛擬的電能傳輸網(wǎng)絡,可以實時根據(jù)環(huán)境調(diào)整電能傳輸鏈路和節(jié)點自身功能角色以保證電能供給。網(wǎng)絡主要由網(wǎng)絡電能來源的電源節(jié)點、負責中繼傳輸電能的中繼節(jié)點以及使用電能的負載節(jié)點組成。
文獻[6]在WPTG的基礎上提出了一種新型的網(wǎng)內(nèi)無中心、節(jié)點平等的無線電能傳輸網(wǎng)結構。所有節(jié)點均具有雙向無線電能傳輸功能,既可接收電能也可以傳輸電能。文獻[7]在上述基礎上提出了一種新型自組網(wǎng)方法及系統(tǒng)。上述文獻的主要研究對象都是供電鏈路的動態(tài)優(yōu)化,對單個節(jié)點的供電策略并未有較深的研究。
本文針對無線電網(wǎng)各個節(jié)點的協(xié)同控制問題,設計了一種基于策略梯度的強化學習算法,該方法使用多層神經(jīng)網(wǎng)絡作為控制器,根據(jù)每個周期的供電控制狀態(tài)的反饋設計了一套獎勵機制用來評估控制策略的優(yōu)劣,最后以最大化累計獎勵為目標優(yōu)化網(wǎng)絡參數(shù),從而達到一個較優(yōu)的控制策略。
無線傳能網(wǎng)絡是基于無線供電方式的網(wǎng)絡模型。一般根據(jù)其功能劃分為電源節(jié)點、中繼節(jié)點、負載節(jié)點。
無線傳能系統(tǒng)整體采用網(wǎng)狀架構[6],供電中心為電源節(jié)點,通過一些中間節(jié)點將電能輸送到負載節(jié)點。由于無線傳能網(wǎng)絡的移動供電機制,供電受距離等因素影響較大。因此,所有節(jié)點都自帶一個電能儲存裝置,用于緩解突發(fā)的供電不足。
無線傳能網(wǎng)路系統(tǒng)算法主要分為兩個部分:
(1) 無線傳能網(wǎng)絡節(jié)點之間電能傳輸鏈路的動態(tài)優(yōu)化。
(2) 無線傳能單個節(jié)點的控制算法。
無線傳能網(wǎng)絡電能傳輸鏈路的動態(tài)優(yōu)化一般使用有向圖構建網(wǎng)絡拓撲結構,通過節(jié)點之間的電能傳輸效率、負荷均衡等指標構建優(yōu)化節(jié)點之間邊的目標函數(shù),最后使用最短路徑相關算法找到電源節(jié)點到所有負載節(jié)點的代價最小的最短路徑[6-7]。本文使用了一套改進的Dijkstra算法尋找最短路徑,由于這不是本文研究的主要目標,所以不做贅述。
無線傳能節(jié)點的控制算法大多基于供電節(jié)點建模,然后使用后端優(yōu)化算法進行控制求解[8-9],這樣能夠精準地控制節(jié)點達到目標狀態(tài)。但對控制目標的設置缺乏深層次的思考,也無法針對各種情況進行在線優(yōu)化。
單個無線傳能節(jié)點組成如圖1所示。其中,傳感單元包括:傳感器和數(shù)模轉換模塊負責收集外部地理位置信息以及自身各項電能指標;無線通信單元負責與其他節(jié)點進行通信,交換控制信息與傳感器信息;處理單元負責對節(jié)點進行合適的供電控制以及存儲節(jié)點運行時的數(shù)據(jù);能量的發(fā)射接收由無線電能發(fā)射/接收單元完成,其中內(nèi)置能量儲存單元可以存儲一定電量,保證外部供電受到限制時也可維持運行。
圖1 無線傳能節(jié)點組成
本文將文獻[6]中的3種節(jié)點用統(tǒng)一的模型描述電能的流通。如果將供電節(jié)點視為高能量輸入(來自發(fā)電站等設備)的中繼節(jié)點,則所有類型節(jié)點的電能流通都可以使用圖2所示節(jié)點模型表示。
圖2 單節(jié)點電能流動示意圖
每個節(jié)點有唯一的一個功率輸入Pin,m個功率輸出Pout=Pout,1+Pout,2+…+Pout,m,節(jié)點的自身能耗為Ps,自身能源儲量E,功率輸入與輸出存在上限,滿足下式的條件:
Pin (1) Pout 輸入功率Pin被分成3個部分:直接送到輸出的Ptin、輸送到電池的Pein和自身能耗Ps。其計算式表示為: Pin=Ptin+Pein+Ps (2) 輸出功率Pout由直接輸出的Ptout和電池輸出的Peout組成,Ptin=Ptout。對于節(jié)點自身的能源儲量E,考慮到充電效率ηin與放電效率ηout,E的一階導數(shù)為: (3) 單個節(jié)點控制目標就是滿足下一級節(jié)點的供電需求,即使得實際的功率輸出Pout等于下一級節(jié)點所需求的Pout need,一般情況下只需令Pout=Pout need即可達到所需目標。但考慮某時局部用電激增或節(jié)點距離供電節(jié)點較遠,上層節(jié)點無法提供所需求的Pin,所以需要使用額外的自身能源進行供電。當自身電量E用完的時候,功率輸出Pout就無法滿足供電需求,造成局部供電不足,所以需要在其他時刻給自身能源充電。 節(jié)點自身能源不允許同時充電和放電,當Pein>0時,節(jié)點處于充電狀態(tài),此時Peout=0,當Peout>0時,該節(jié)點處于放電狀態(tài),此時Pein。 傳統(tǒng)算法如PID在解決單點控制模型中有著非常穩(wěn)定良好的表現(xiàn),能夠控制單點的電量穩(wěn)定在目標值附近。但目標值的選取存在一定的問題,目標值選取過大會使得節(jié)點一直趨于較大電能的狀態(tài),從而造成一定的能源浪費;目標值選取過小則失去了該節(jié)點儲能功能的意義,應對風險的魯棒性較差。 在此問題背景下,本文提出了一種算法能夠針對不同節(jié)點的特性,動態(tài)地學習節(jié)點的控制參數(shù)。強化學習的方法是解決這種問題的一種思路。作為機器學習的一個重要理論分支,強化學習(Reinforcement learning , RL)[8-9]是一種學習不同狀態(tài)下的最優(yōu)決策動作技術,以最大化智能體的長期獎勵累計值。智能體是自發(fā)選擇可能產(chǎn)生較大獎勵值的動作,而不是被告知采取哪個動作最好,這也是強化學習的自我探索優(yōu)勢。 本文根據(jù)上述模型設計了一種基于策略梯度(policy gradient)[10-12]的節(jié)點控制算法,該方法用一個值函數(shù)表示該策略長期回報的期望,通過求出值函數(shù)關于策略參數(shù)的梯度,并使得參數(shù)沿著梯度上升的方向更新,最大化值函數(shù),從而使得策略回報得到提升。該方法相對其他強化學習算法,具有更好的收斂屬性,適用于高維度和連續(xù)的狀態(tài)空間。 強化學習系統(tǒng)基本交互如圖3所示。 圖3 強化學習的基本交互 (1) 控制器根據(jù)策略函數(shù)輸出動作(供電輸入input)到節(jié)點設備。 (2) 節(jié)點設備按照控制器給定的供電輸入與實時的供電輸出需求更新自身狀態(tài),并給出該狀態(tài)的獎勵。 (3) 策略函數(shù)根據(jù)上一時刻的獎勵提升策略參數(shù)。 本文用系統(tǒng)t時刻的自身能源儲量Et、自身能耗Ps,t、節(jié)點的輸出Pout,t和節(jié)點當前的輸入Pin,t等特征來表示t時刻的系統(tǒng)狀態(tài)st;為了減少網(wǎng)絡波動帶來的影響,并且使輸出連續(xù),將動作空間ai,t設置為{-1,0,1},分別表示將節(jié)點的輸入Pin增加一個步長Δh、保持不變、減小一個步長Δh。 st=[Et,Ps,t,Pout,t,Pin,t] (4) ai,t={-1,0,1} (5) 應用強化學習算法的目的就是確定一個在狀態(tài)st下選擇動作ai,t的概率的策略函數(shù)πθ(ai,t|st)。 本文使用一個MLP(多層感知器)來擬合策略函數(shù)πθ(ai,t|st)。為了加快收斂速度,該多層感知器只使用兩層全連接隱藏層。每層16個神經(jīng)元,激活函數(shù)使用ReLU。最后輸出到表示3種動作選擇概率的三個神經(jīng)元上。該網(wǎng)絡模型如圖4所示。 圖4 MLP結構 實際運行時,使用網(wǎng)絡輸出概率最高的動作作為實際輸出: at+1=argmaxaπθ(ai,t|st) (6) 環(huán)境更新e(st,at)用來計算節(jié)點在狀態(tài)st下選擇動作at的下一時刻狀態(tài)。這個更新計算基于1.2節(jié)所述簡化后的節(jié)點供電模型,表示為: st+1=e(st,at) (7) 獎勵(reward)設計是強化學習算法的核心,定義了算法的學習目標。通過設計一個獎勵機制r(st,ai,t)來提升策略的表現(xiàn)。r(st,ai,t)表示節(jié)點在狀態(tài)st下選擇動作ai,t的單步獎勵。 當該節(jié)點自身能源儲量為零,并且輸入功率Pin因為受限無法滿足輸出功率的需求時,就會產(chǎn)生電能的虧空Pt;當該節(jié)點能源儲量為滿,并且輸入功率Pin滿足輸出功率的需求還有額外剩余時,就會產(chǎn)生電能的飽和Pm。本文算法希望盡量減少電能虧空和電能飽和的出現(xiàn),所以將它們設置為負的獎勵。常規(guī)情況下,本算法希望盡量減少自身能源的儲量,將閑置電能用在其他該用的地方,所以使用遞減的log函數(shù)去擬合。其計算式表示為: (8) 式中:κ、λ、μ為可調(diào)系數(shù),并且1<λ<κ,0<μ<1。 策略提升的目的是為了最大化累計獎勵J(θ),將J(θ)作為目標函數(shù),如下式所示: (9) 將目標函數(shù)J(θ)使用蒙特卡洛近似的方法進行替換,再對MLP的各層參數(shù)求梯度,可得: (10) 式中:τ為可能存在的策略函數(shù)與環(huán)境的交互軌跡;θ為MLP神經(jīng)元之間的參數(shù);N為動作空間的維度;T為使用策略與環(huán)境進行交互的軌跡長度。 然后使用上述梯度更新網(wǎng)絡參數(shù)θ,使策略得到提升,其更新計算式為: θ=θ+▽θJ(θ) (11) 該算法中,控制器不斷地與環(huán)境(節(jié)點)交互,根據(jù)交互結果的獎勵更新神經(jīng)網(wǎng)絡(MLP)的參數(shù),MLP又作為控制器輸出控制結果。最終通過不斷學習,從而最大化交互獎勵,找到較優(yōu)的控制策略。該算法流程如算法1所示。 算法1策略梯度節(jié)點控制算法 初始化所有模塊 隨機初始化神經(jīng)網(wǎng)絡參數(shù)θ 更新各節(jié)點狀態(tài)s while True: #程序運行主循環(huán) #定期更新網(wǎng)絡參數(shù) for step in range(period) 策略函數(shù)πθ根據(jù)當前狀態(tài)s輸出動作a 節(jié)點執(zhí)行動作a更新自身狀態(tài)s 獎勵機制根據(jù)更新后狀態(tài)s計算獎勵r 存儲執(zhí)行的中間結果s、a、r到S、A、R end 根據(jù)S、A、R計算策略提升的梯度▽θJ 更新神經(jīng)網(wǎng)絡參數(shù)θ end 本實驗的所有程序都是在Python3.6上運行,算法的運行環(huán)境為Intel(R) Core(TM) i5-6500, CPU@3.2 GHz,16 GB內(nèi)存,Microsoft Windows 10操作系統(tǒng)。 本文用電數(shù)據(jù)使用2010年南京市居民夏季用電負荷作為單個節(jié)點的輸出需求(output_need)。該數(shù)據(jù)可以按天近似視為周期性變化,在每天的12時至20時出現(xiàn)用電高峰,峰值為0.4萬千瓦。仿真實驗將繪制各指標的變化曲線,并統(tǒng)計50個周期的相關數(shù)據(jù)進行對照。實驗將本文算法與一般PID算法效果做對比。PID算法計算方式如下: (12) err(k)=E(k)-α (13) Pin=u(k)+Pout (14) 式中:err為控制誤差;E(k)為當前能源儲量百分比;α為目標能源儲量百分比,設置為50%;u(k)為控制量,計算節(jié)點輸入Pin時需要加上節(jié)點輸出Pout;Kp與Ki、Kd為可調(diào)系數(shù),分別為10.0、3.0、0.01。 (1) 正常運行狀態(tài)對比測試。為了測試該算法在一般情況下的表現(xiàn),本文設置參數(shù)如下:節(jié)點最大能源儲量為5萬千瓦時,最大輸出1萬千瓦,初始能源儲量為65%,初始輸入輸出均為0.2萬千瓦。將節(jié)點最大輸入功率設置在0.5萬千瓦,大于節(jié)點的功率輸出需求(output_need)峰值0.4萬千瓦,節(jié)點在任何時候都能夠得到充足供電。測試結果如圖5、圖6和表1所示。 圖5 策略梯度算法測試(max input=0.5萬千瓦) 圖6 PID算法測試(max input=0.5萬千瓦) 表1 正常運行狀態(tài)結果統(tǒng)計表 如圖5所示,節(jié)點實際供電輸出(output)與節(jié)點輸出需求(output_need)一直處于重合狀態(tài),說明節(jié)點一直可以滿足下一級的用電需求,正常運行。如表1所示,上述正常供電時間占比為100%,沒有產(chǎn)生供電缺失。閑置電能占比指的是儲存在節(jié)點自身,沒有參與電能流通的電能占節(jié)點總能源儲量的百分比。本文算法經(jīng)過學習后得到的策略迅速降低節(jié)點的能源儲量(energy)到一個較低的百分比(4%),符合本文獎勵機制中的第三種情況:正常運行時,降低閑置的電能,使整體能源分布更為合理。 如圖6所示,節(jié)點實際供電輸出(output)與節(jié)點輸出需求(output_need)也一直處于重合狀態(tài),節(jié)點正常運行,節(jié)點也能夠將自身能源儲量維持在50%附近。但基于PID的傳統(tǒng)算法只是將節(jié)點電量維持在目標值附近,傳統(tǒng)算法不能夠預測該節(jié)點的輸出需求特征,仍然需要節(jié)點保持50%的能源儲量才能夠正常運行。本文算法在該情形下可以降低91.76%的閑置電能,并能夠正常運行。 當然,如果在這個實驗中,傳統(tǒng)算法PID將自身電量的目標值改為5%,也能夠在較小的最大能源儲量下正常工作。但傳統(tǒng)算法并不能夠實時地學習到輸出需求(output_need)的特征,從而改變自己的目標值。而這個基于輸出需求的目標值,正是本文算法所能夠學習到的特征。 (2) 輸入功率受限狀態(tài)對比測試。為了測試該算法在功率受限情況下的表現(xiàn),將節(jié)點最大輸入功率設置在0.3萬千瓦,小于節(jié)點的功率輸出需求(output_need)峰值0.4萬千瓦。其他參數(shù)同上保持不變,測試結果如圖7、圖8與表2所示。 圖7 策略梯度算法測試(max input=0.3萬千瓦) 圖8 PID算法測試(max input=0.3萬千瓦) 表2 功率受限狀態(tài)結果統(tǒng)計表 如圖7所示,策略梯度控制的節(jié)點實際供電輸出(output)與節(jié)點輸出需求(output_need)一直處于重合狀態(tài),說明節(jié)點一直可以滿足下一級的用電需求,正常運行。而在每天20時用電高峰來臨時,如圖8中黑框所示,節(jié)點輸入功率受限,PID算法控制的節(jié)點實際輸出(output)小于節(jié)點輸出需求(output_need) ,產(chǎn)生了供電不足,供電缺失時間占比6.77%,累計供電缺失達25.66萬千瓦。如表2所示,本文算法相比PID控制算法減少了99.4%的供電缺失時間以及99.9%的供電缺失量,能夠保證節(jié)點的正常運行,僅提高了4%的閑置電能。 上述仿真結果綜合表明,以PID為代表的傳統(tǒng)控制算法,由于缺乏歷史數(shù)據(jù)的積累,無法對節(jié)點的輸入需求進行預測。只能將節(jié)點的輸入需求這一不可控因素當成了隨機的外部擾動,從而缺乏一些相對應的控制策略,具體控制效果出現(xiàn)了一定的滯后性。其未能預測到20時用電高峰的來臨而提高節(jié)點供電輸入(input),增加自身能源儲量。當用電高峰出現(xiàn)時,節(jié)點輸入功率受限,當前節(jié)點的能源儲量不足,導致供電不足。 而本文算法能夠學習一些不規(guī)則的周期性供電需求的特征,能夠根據(jù)實際情況和控制目標自動尋找到較優(yōu)的策略。如圖7中黑框所示,本文算法預測到用電高峰的來臨,提高節(jié)點用電輸入(input),提前進行蓄電,從而避免了用電高峰的供電缺失,即使一次用電高峰需要用到節(jié)點最大能源儲量的80%電量,節(jié)點依然能夠正常運行。 為了解決無線傳能網(wǎng)絡中的節(jié)點控制問題,本文提出了一種基于策略梯度的節(jié)點控制算法。該算法主要基于強化學習與數(shù)據(jù)驅動,與傳統(tǒng)算法截然不同。該算法只要設計好節(jié)點狀態(tài)更新的獎勵就可以基于交互數(shù)據(jù)生成合適的控制策略。仿真實驗表明,該算法尤其適合周期性變化的供電需求下的節(jié)點控制,并且能夠針對不同狀態(tài),自主學習到較優(yōu)的控制策略。即使在一些極端情況下,也能有較好的表現(xiàn)。本文最終驗證了該算法相對于傳統(tǒng)算法的優(yōu)越性。2 無線網(wǎng)絡節(jié)點供電控制算法
2.1 策略梯度
2.2 基本交互流程
2.3 狀態(tài)空間與動作空間
2.4 策略函數(shù)
2.5 環(huán)境更新
2.6 獎勵設置
2.7 策略提升
2.8 算法流程
3 實驗與結果分析
3.1 實驗環(huán)境
3.2 仿真測試
4 結 語