吳振宇 吳 凡 李云雷
(大連理工大學創新創業學院 遼寧 大連 116024)
現代社會的發展離不開電能,而無線傳能技術因其可以擺脫有線充電的特性受到廣泛的關注。無線傳能[1-3]可以用于軌道電車的實時供電、無線充電以及醫療器械、特種設備、無線傳感網、微波飛機和空間電力輸送等方面。
擴大無線傳能的供電范圍和供電功率一直是業內研究的重點。相比遠距離廣播式的直接供電,采用多個中繼節點進行“多跳傳輸”更能夠有效提高供電范圍并保證供電功率。文獻[4]根據上述思路提出了一種無線電能傳輸網絡架構(Wireless Power Transfer Grid, WPTG)。WPTG是在空間上任意分布的無線節點通過無線傳能這一供電方式形成的虛擬的電能傳輸網絡,可以實時根據環境調整電能傳輸鏈路和節點自身功能角色以保證電能供給。網絡主要由網絡電能來源的電源節點、負責中繼傳輸電能的中繼節點以及使用電能的負載節點組成。
文獻[6]在WPTG的基礎上提出了一種新型的網內無中心、節點平等的無線電能傳輸網結構。所有節點均具有雙向無線電能傳輸功能,既可接收電能也可以傳輸電能。文獻[7]在上述基礎上提出了一種新型自組網方法及系統。上述文獻的主要研究對象都是供電鏈路的動態優化,對單個節點的供電策略并未有較深的研究。
本文針對無線電網各個節點的協同控制問題,設計了一種基于策略梯度的強化學習算法,該方法使用多層神經網絡作為控制器,根據每個周期的供電控制狀態的反饋設計了一套獎勵機制用來評估控制策略的優劣,最后以最大化累計獎勵為目標優化網絡參數,從而達到一個較優的控制策略。
無線傳能網絡是基于無線供電方式的網絡模型。一般根據其功能劃分為電源節點、中繼節點、負載節點。
無線傳能系統整體采用網狀架構[6],供電中心為電源節點,通過一些中間節點將電能輸送到負載節點。由于無線傳能網絡的移動供電機制,供電受距離等因素影響較大。因此,所有節點都自帶一個電能儲存裝置,用于緩解突發的供電不足。
無線傳能網路系統算法主要分為兩個部分:
(1) 無線傳能網絡節點之間電能傳輸鏈路的動態優化。
(2) 無線傳能單個節點的控制算法。
無線傳能網絡電能傳輸鏈路的動態優化一般使用有向圖構建網絡拓撲結構,通過節點之間的電能傳輸效率、負荷均衡等指標構建優化節點之間邊的目標函數,最后使用最短路徑相關算法找到電源節點到所有負載節點的代價最小的最短路徑[6-7]。本文使用了一套改進的Dijkstra算法尋找最短路徑,由于這不是本文研究的主要目標,所以不做贅述。
無線傳能節點的控制算法大多基于供電節點建模,然后使用后端優化算法進行控制求解[8-9],這樣能夠精準地控制節點達到目標狀態。但對控制目標的設置缺乏深層次的思考,也無法針對各種情況進行在線優化。
單個無線傳能節點組成如圖1所示。其中,傳感單元包括:傳感器和數模轉換模塊負責收集外部地理位置信息以及自身各項電能指標;無線通信單元負責與其他節點進行通信,交換控制信息與傳感器信息;處理單元負責對節點進行合適的供電控制以及存儲節點運行時的數據;能量的發射接收由無線電能發射/接收單元完成,其中內置能量儲存單元可以存儲一定電量,保證外部供電受到限制時也可維持運行。

圖1 無線傳能節點組成
本文將文獻[6]中的3種節點用統一的模型描述電能的流通。如果將供電節點視為高能量輸入(來自發電站等設備)的中繼節點,則所有類型節點的電能流通都可以使用圖2所示節點模型表示。

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

2.3 狀態空間與動作空間
2.4 策略函數

2.5 環境更新
2.6 獎勵設置
2.7 策略提升

2.8 算法流程
3 實驗與結果分析
3.1 實驗環境
3.2 仿真測試






4 結 語