張文龍,張 潔
(南京郵電大學 計算機學院,江蘇 南京 210023)
隨著電動汽車漸漸成為人們主流的出行選擇,其充電調度的重要性也漸漸凸顯,大量充電汽車接入電網勢必會造成電荷顯著改變,給電網帶來谷峰差距過大、變壓器過載等潛在威脅,因此,對充電負荷進行有序調控是十分必要的[1]。充電站因其聚合控制的優勢通常是實施充電調度的主體,對充電站汽車有序充電的研究一直是智能用電領域的重要議題[2-3]。傳統的有序充電調度算法是模型驅動的,例如,文獻[4-6]提出了基于粒子群優化、思維進化、拉格朗日松弛優化等算法的充電調度策略,但是模型驅動算法不能反映充電行為的不確定性,算法的好壞完全由先驗模型假設的好壞決定,在實際應用中如果要確定好的先驗模型假設需要經過大量的采樣統計,成本過高,應用范圍受限。使用數據驅動的算法是有序充電策略的另一思路,其最大的優勢是不需要先驗模型和假設,完全依賴于對過去和當前的數據觀察,隨著算力發展和原始充電數據的不斷積累已經廣泛應用于有序充電。其中無模型強化學習框架日益引起人們的重視,文獻[7-8]實現了基于Q-learning和DQN(Deep Q Network,深度Q-learning)算法的充電調度,通過調控充電站總功率實現了電動汽車的充電控制優化;文獻[9]提出一種基于MC(Monte Carlo,蒙特卡洛)算法的多電站充電調度策略并且對電站數量有很好的擴展性;文獻[10]以MFRL(Model Free Reinforcement Learning,無模型強化學習)框架適應充電負荷的不確定性,保證所有充電行為都能及時得到滿足,避免受到懲罰。除了充電調度之外,對設計充電響應需求機制的研究也在不斷完善,響應機制即電動汽車會根據充電站的收費調整充電需求,文獻[11-13]分別面向充電站和汽車集群設計了充電響應機制,研究表明合理的價格制定和充電調度有利于用戶充電和電網系統。但是上述基于無模型強化學習的有序充電調度都沒有考慮到汽車進站的隨機性造成的影響,都側重于提前一天計劃好未來車輛的進出站,也沒有考慮不同的充電費用對充電需求的影響,沒有考慮同時調控充電費用和充電功率。
在文獻[14]的基礎上,該文以減少充電負荷方差和提高充電站收益為訓練目標,提出基于深度強化學習A3C的充電站有序充電調度算法。文獻[14]提出的Sarsa算法需要一張額外表格存儲維護之前的數據紀錄來進行模型的更新,而A3C算法結合了深度神經網絡,通過對網絡梯度的更新就能求出最優策略;為了解決由汽車進站的隨機性引起的輸入維度變化,使用5個特征函數來近似價值函數和策略函數,有效減少輸入維度。借助充電需求響應機制關聯調控充電費用和功率,實現兩者的動態實時調度。之后使用某地區充電站一個月的歷史充電紀錄進行仿真分析,驗證該算法能有效抑制充電負荷方差,在滿足用戶需求的基礎上提高充電站收益和削峰填谷。
該文所假設的整個充電系統的運行情況如圖1所示。
在一個被劃分成T個時間段的時間區間,每個時間段都會有隨機車輛進站定義為It,t=1,2,…,T,ai、pi、di分別代表車輛i的進站時間、最大停留時間和充電需求。It內的車輛會根據當前的充電費用確定充電需求,將充電請求交給電站,然后加入充電隊列等待充電站的調度。Jt表示在時間段t之前已進入充電站且還沒有完成充電的車輛,在每個時間段開始會從Jt中選擇優先級高的車輛進行充電,充電的功率還受到以下限制。

圖1 充電站模型
xi,t≤xi,max,?i
(1)
(2)
(3)
其中,xi,max和emax分別代表車輛的最大充電功率和充電站最大充電功率,所有車輛的需求應該在離開充電站前得到滿足。在充電站的整個工作過程中,充電費用和充電功率都是實時變化調整的,但對具體的車輛而言,在t時段進站的車輛對應的充電費用為rt,直到出站前都不再變化。車輛i的充電需求與進站時的充電費用滿足di=Di(rt),Di是車輛i對應的需求響應機制函數,只與車的種類有關。由于電動汽車到達時間和充電費用的不確定性,充電站只知道已經到達的電動汽車的充電情況以及目前為止的電價變化。充電站收益在每個時段都受兩部分直接影響,一是充電站向各時段新進站電動汽車收取的費用,二是充電站各時段根據充電需求向電力公司購買電力的費用,兩者的差額就是充電站每個時段的收益。
在每個時段開始,充電站都會基于對歷史充電行為的觀察包括當前充電費用和充電請求,選擇最優充電功率和充電費用,這些決策的制定又會影響到未來決策的制定,因此用MDP(Markov Decision Process,馬爾可夫決策過程)來模擬整個充電過程求解最優決策[15]。目前MDP在有序充電領域正獲得廣泛應用,MDP由狀態S、動作A、轉移函數P和獎勵函數R共同組成。若上述四要素均已知,就可以通過動態規劃算法求解,但實際應用中轉移函數往往難以直接求出具體模型,因此一般的模型驅動算法在面臨復雜問題或者模型未知時,都是選擇基于對轉移函數或未知模型的先驗假設來進行求解的,最終結果的好壞直接取決于先驗假設建模,容易面臨性能瓶頸。該文所采用的是另一種無模型數據驅動的思路,不依賴先驗模型假設,只基于對歷史和當前數據的觀察。下面介紹由1.1節充電模型抽象成MDP后的四要素。
1.2.1 狀態S
t時段的狀態表示為St=(di,t,pi,t,i∈Jt),其中di,t表示汽車i在t時段的充電需求,pi,t表示車輛i的最大剩余充電時間,若pi,t≤0,di,t≥0就表明這輛車的充電需求沒有被滿足,pi,t>0,di,t≤0則表明車輛i的充電需求已被滿足可以從充電隊列中刪除。在每個時間段開始都會根據當前的充電情況更新狀態S,除了把新進站的汽車加入,對充電需求無法按時得到滿足或者提早得到滿足的汽車都應做相應的處理更新。
1.2.2 動作A
At=(rt,xi,t,?i∈It∪Jt),rt是t時段的充電費用,xi,t是車輛i在t時段的充電功率。車輛i在執行對應的動作后會發生如下變化:
di=di-xi,t,i∈Jt
(4)
pi=pi-1
(5)

1.2.3 轉移函數P
在每個時間段開始,充電站會從Jt中選擇優先級高的車輛進行充電,那么,Jt+1就是由經歷充電Jt后仍未完成充電且目前仍可能完成充電車輛和新到達車輛It共同組成。下一個狀態可以表示為St+1=P(St,At,It,ct)=(di,t+1,pi,t+1,i∈Jt+1),狀態的變化直接可以通過觀察得到,不必通過轉移函數求解。
1.2.4 獎勵函數R
使用直接觀測到的利潤函數作為獎勵函數。通過1.1節分析,每個時段的利潤具體表示為R(St,At)=∑rtDi(ri)-ctet。該文提出的模型的優化目標之一就是使充電站利潤最大化。
A3C算法本質是AC(Actor-Critic,演員-評論家)算法, Actor部分負責生成動作并和環境交互,而Critic部分負責評估Actor的表現,并指導Actor下一階段的動作。Actor部分利用的是一類基于策略(policy based)的強化學習算法;Critic部分使用的是一類基于價值(value based)的強化學習算法,Actor-Critic算法結合了兩種強化學習算法的優點。Actor和Critic兩部分的更新都與TD(temporal-difference,時序差分)誤差相關,Actor為避免正數陷阱,通過TD誤差更新策略;Critic部分的損失就是TD誤差,它的更新目標就是最小化TD誤差[16]。
A3C最大的不同就是放入多線程中同步訓練,具體工作流程如圖2所示。A3C主要架構是由Global Network(全局網絡)和worker(工人)組成的,全局網絡和worker擁有一樣的Actor-Critic網絡結構,目的是模擬多個智能體與環境互動,全局網絡并不直接參加和環境的互動,而是把自己當前學習到的最新參數共享給多個worker,讓worker與不同的環境進行交互,最后各worker將自己探索學習到的梯度匯報給全局網絡進行更新[16]。

圖2 A3C模型
A3C完整算法:
輸入:公共部分的A3C神經網絡結構,其對應參數為θ,ω分別屬于Actor和Critic部分;本地線程的A3C神經網絡結構,對應的參數為θ',ω'全局共享的迭代次數T,全局最大迭代次數為Tmax;線程內單次迭代時間序列最大長度Tlocal,狀態特征維度n,動作集Action,步長α,β;衰減因子γ。
a)更新時間序列t=1
b)重置Actor和Critic部分的梯度更新;將公共A3C的參數同步到本地A3C神經網絡θ'←θ,ω'←ω。
c)初始化St,tstart=t。
d)基于策略近似函數π(at|St,θ')選擇動作at并執行,得到回報Rt和下一個狀態St+1,t=t+1,T=T+1。
e)如果St是終止狀態或者t-tstart=Tlocal,執行步驟f,否則,返回步驟d。

g)fori∈(t-1,t-2,…,tstart):
V=Ri+γV
累計Actor的本地梯度更新:
dθ←dθ+?θ'logπ(ai|si,θ')(V-v(si,ω'))
累計Critic的本地梯度更新:
h)更新全局神經網絡的模型參數:θ=θ-αdθ,ω=ω-βdω。
i)如果T≥Tmax,退出算法,否則,返回步驟b。
2.1節提到Actor部分和Critic部分通常都是使用神經網絡建立模型,兩者的輸入都是MDP中的狀態S,但是汽車進站的隨機性導致狀態S維度過高且不固定,無法直接作為神經網絡的輸入。為了使輸入維度固定,使用狀態的特征函數作為神經網絡輸入,特征函數主要基于目標函數和約束條件來構造,具體使用下面5個特征函數[14]。
(6)
f2(st)=-ctet
(7)
(8)
(9)
(10)
其中,Pt表示t時段最長的停車時間;θ1、θ2分別代表算術序列權重和幾何序列權重;f1、f2是基于目標函數而建立的特征函數,分別為充電站每時段向新進站車輛收取的費用和向電力公司支付的購電費用;f3、f4、f5都是用來約束所選擇的策略,f3、f4是在文獻[13]的基礎上用來防止充電站做出影響未來收益的過激決策,f5是避免做出讓車輛充電需求無法得到滿足的決策。
引入特征函數后,Critic部分價值函數的計算可由特征函數的線性組合近似得出v(st)=v(st,ω)=∑ωifi(st),Actor部分策略函數同理可近似為π(at|st)=πθ(at|st)=∑θifi(st),有效減少了網絡的輸入維度。
以某地區充電站信息采集系統實測數據為基礎,取某年1月1日至1月31日的充電數據作為原始環境,測試集選取次年1月份的實測數據。假設充電站最高功率為300 kW,對車輛進站情況和充電需求滿足情況的觀察間隔為5分鐘,電價的變化情況為每小時變化一次。充電需求響應機制函數設置為Di(rt)=βi,1rt+βi,2,假設參與充電的汽車種類分為三種,對應的具體參數見表1。

表1 不同類型充電汽車的參數
為直觀證明所提模型能較大程度提高充電站收益,引入以下算法對比:
Sarsa算法:一種value based的強化學習算法,在模型未知的情況下,先利用當前策略π估算動作價值函數值Q(s,a),再通過Q(s,a)值來更新策略,交替迭代得到最優策略和最優動作價值函數。為了避免陷入局部最優使用探索-利用機制,不斷嘗試新的動作[14]。
Policy Gradient算法:一種policy based的強化學習算法,直接對策略進行近似表示,使用梯度上升法尋找最優策略。采用了類似MC算法的學習思路,需要遍歷整個狀態序列才能進行迭代[17]。
圖3所展示的是充電站采用上述三種算法所獲得平均收益的變化情況。在3 000輪迭代內,所提的A3C模型對提高充電站收益最明顯,基本能穩定正收益;其次是Sarsa算法,充電站收益很少有正的大多為在0和-1 000之間變化;最后是PG算法,雖然曲線收斂很快但沒有正收益。

圖3 三種算法的平均收益
為驗證所提模型能有效抑制充電負荷方差,將通過A3C算法與Sarsa算法訓練得到的模型分別用于實際充電行為的調度。結果如圖4所示,在連續50個小時的測試集上,不加任何調度完全無序充電得到的原始充電負荷波動較大,通過計算得出這50個小時內平均充電負荷為7.93 MW,進而得出負荷方差為24.41 MW;利用Sarsa算法進行有序充電后的充電負荷波動幅度有所減少,通過計算相應的平均充電負荷最終可得負荷方差為9.46 MW,與無序充電相比有了較大改善;結果最好的是提出的A3C算法,利用A3C的有序充電調度后充電負荷方差經計算可減少為1.16 MW。

圖4 充電負荷方差
比較典型日下電網24小時基礎負荷與充電站24小時的充電功率,驗證A3C算法能否實現削峰填谷。實驗結果如圖5所示,在電網基礎負荷較高時,充電站會選擇提高充電費用來鼓勵用戶不采取充電行為,相應的充電功率會降低防止電網峰值過高;同理,在電網基礎負荷過低時,降低充電費用鼓勵用戶充電提高充電功率,提高電網谷值。該實驗表明,所提模型除了能提高充電站收益外還有削峰填谷的作用。

圖5 對電網充電負荷影響
提出一種無模型數據驅動的有序充電優化方法,不依賴任何先驗模型和假設,把提高充電站收益和削峰填谷減少充電負荷方差作為目標,動態制定充電費用和充電功率。將充電問題抽象成MDP問題,利用深度強化學習算法A3C求解模型未知情況下的最優解。
為解決由于車輛進站的隨機性造成輸入維度的不確定性,Actor和Critic都使用特征函數的線性組合來近似價值函數和策略函數。利用某地區充電站的實測數據進行仿真分析。結果表明,A3C算法除了能提高充電站收益外,還能較大程度減少充電負荷方差,適應電網基礎負荷的變化實現削峰填谷。