陸佳偉,佘世剛,魏新堯,王雪硯,朱 雅
(常州大學 機械工程學院,江蘇 常州 213164)
為了減少大氣污染,加強生態文明建設,國家大力扶持和推廣新能源汽車。目前新能源汽車的性能、價格、使用壽命、安全性制約著動力電池系統的進一步發展。鋰離子電池憑借工作電壓穩定,體積小但儲能大,無記憶效應,自放電低且安全環保等特點,已經成為新能源汽車動力源的新寵[1]。在實際使用中,要想把電池系統的動力性能充分發揮出來,有效延長電池的使用壽命,提高電動汽車的使用體驗,那就對電池的荷電狀態(SOC, state of charge)的估算精度提出了一定的要求。SOC的預測在電池管理系統(BMS, battery management system)中有著舉足輕重的地位,精確的預測鋰電池SOC可以有效避免電池的過充、過放,尤其是在寒冷的冬天,鋰電池的續航能力會明顯下降,這就需要精準預測鋰電池剩余電量,方便使用者提前做好行程規劃,合理使用剩余電量,同時保證整個電池系統的安全性,更好保護駕駛人員和乘車人員的生命安全。
SOC是用來描述電池在使用過程中,可以充入和放出容量的重要參數[2],可以通過計算電池的剩余容量與電池總容量的比值獲得,計算公式如式(1)所示:
(1)
式中,Qr為電池剩余電量;Qi為電池基準容量。影響電池SOC的因素不計其數,比如電池內阻、溫度、充放電倍率等,所以在日常實際操作預測中,具有一定的挑戰難度。目前研究者們慣用的一些SOC估算方法,比如安時積分法、開路電壓法、卡爾曼濾波法、人工神經網絡法[3]。徐尖峰等采用安時積分法對電池SOC進行估算,安時積分法相對簡單,但是對電流的積分會伴隨一定誤差,且不斷累積,而且需要知道SOC初始值[4]。李爭等采用的是開路電壓法,雖然簡單易行,精度較高,但是電池組需要靜置一段時間,無法用于實時估算[5]。文獻[6]利用卡爾曼濾波法,需要知道SOC信號模擬方程及測量方程,但也存在一些問題無法解決,比如單體的離散等。人工神經網絡法快速易行,能有效克服以上幾種方法的不足,有強大的自學能力,具有較強的非線性逼近能力,非常適合鋰電池SOC的估算。趙鋼等將放電電壓、放電電流、電池表面溫度及當前放電總量作為輸入量,SOC作為輸出量,建立網絡結構,在恒電流工況實驗下得到了良好的預測結果[7]。
誤差反向傳播(BP,back propagation)神經網絡憑借其通用性好的特點,而得到廣泛的應用,但也存在著一些缺點,比如網絡的初始權值和閾值,是隨機產生的,會大大影響網絡的輸出特性,這樣帶來的結果就是易入局部最優,從而也會影響收斂速度,還有一些難點急需研究解決,如隱含層的設計,目前所用的都是根據前人的經驗,加上設計者的反復試驗,來確定隱含層節點數目。
為了降低初始權值和閾值對整個BP神經網絡的影響,提高算法估算的精度,加快收斂的速度,本文提出一種基于布谷鳥搜索算法(CS,cuckoo search)優化BP神經網絡的鋰電池SOC預測方法。其中CS是通過模擬布谷鳥的寄生育雛的方式,尋找全局最佳的智能優化算法,它與神經網絡結合在一起,可以改善陷入局部最優點的情況,還伴有收斂速度明顯加快的效果。為驗證CS-BP算法的真實預測效果,將它與BP算法作比較,結果表明該算法具有更好的預測能力。
BP神經網絡是一種簡單的多層前饋神經網絡,其模型是按照誤差逆向傳播算法訓練的。算法由兩個部分組成,一個是輸入信號的前向傳遞,在這一過程中,輸入信號先傳遞給隱含層,再傳遞給輸出層,逐層處理,前面一層的輸出結果,作為后面一層的輸入,最后輸出層得到的數據再與計算得到的期望值比較,若不滿足誤差要求,則轉入第二個部分誤差的反向傳播,這一階段,再根據預測誤差的大小調整網絡的閾值和權值,從而可以得到想要擬合函數的模型[8]。

圖1 BP神經網絡的SOC估計模型
鋰電池的電壓U、電流I、溫度T、放電時間t是影響電池SOC的重要參數,作為神經網絡輸入層的輸入矢量,輸入矢量為[X1,X2,X3,X4],輸入層的節點數為n=4,輸出矢量為[Y],節點數m=1,隱含層的節點數的設計,利用經驗公式:
(2)
其中:α為[1,10]范圍內的任一常數,經過多次仿真試驗,取l=12時,網絡的誤差精度更高,收斂速度也更快。xi(i=1,2,…,4)表示其輸入亦即該層的輸出;隱含層由12個神經元組成,zk(k=1,2,…,12)代表的是隱含層的輸出,θk(k=1,2,…,12)表示的是隱含層的閾值;這里輸出層只有1個神經元,用y表示輸出結果,即鋰電池SOC的預測值,用φ表示輸出層的閾值;用vik(i=1,2,…,4;k=1,2,…,12)表示連接輸入層與隱含層之間的權值;用wk(k=1,2,…,12)代表連接隱含層與輸出層之間的權值。隱含層采用logsig函數f(x)=1/(1+e-x)為激活函數,輸出層采用Purelin函數g(y)=y為激活函數,性能函數采用均方誤差性能函數(MSE,mean squared error)。算法步驟如下:
1)初始化。假設初始迭代次數t=0,BP神經網絡初始權值和閾值為[-1,1]內的隨機數,即vik(t)∈[-1,1],wk(t)∈[-1,1],θk(t)∈[-1,1],φ(t)∈[-1,1];
2)信號正向傳播。輸入一個樣本(Xm,Ym),其中m∈{1,2,…,M},M為樣本數,X=[I,V,T,t]T∈R4×m,Y表示SOC的真實值;
3)計算隱含層的輸入與輸出:
(3)
zk=f(Sk-θk)
(4)
4)計算輸出層的輸入與輸出:
(5)
y=f(S-φ)
(6)
5)誤差逆向傳播。計算輸出層各節點誤差:
Err=y(1-y)(Y-y)
(7)
6)計算隱層各節點誤差:
Errk=zk(1-zk)wkErr
(8)
7)權重更新:
wk(t+1)=wk(t)+αzkErr
(9)
vik(t+1)=vik(t)+αxiErrk
(10)
其中:α為學習速率;
8)閾值更新:
φ(t+1)=φ(t)+ηErr
(11)
θk(t+1)=θk(t)+ηErrk
(12)
式中,η為學習率;
9)隨機抽取樣本進行學習,直到取完所有學習樣本為止,進行下一步,否則重新返回步驟2)開始執行;
10)計算每一個樣本在輸出層的誤差函數Em:
Em=(Ym-ym)2
(13)
對所有的樣本的均方誤差進行累計求和,就可得到基于BP神經網絡模型的SOC估計的目標函數:
(14)
將既定的誤差與E比較,如果E小于誤差精度要求或者學習次數達到規定次數,則算法結束;否則更新學習次數t←t+1,并重新回到步驟2)繼續執行。
BP網絡易出現過度擬合,過度擬合是指將一組測試集的某些特性視為所有可能的測試集都具有的通用特性,從而降低了泛化的有效性。在機器學習中,這種現象被稱為“過度擬合”。一旦出現過度擬合情況,BP神經網絡的訓練誤差會繼續減少,但測試誤差反而增加。解決BP神經網絡的過度擬合主要有兩種思路,一種是“早停”:將數據分為訓練、驗證集。訓練集改變梯度,更新各層權重和閾值,而驗證集負責誤差估算。在訓練集誤差減少,驗證集誤差增加時停止訓練,并返回驗證集誤差最小時的權重和閾值。另一種思路是“正則化”。主要思路是通過增加一個描述復雜網絡部分的函數來優化誤差目標函數。
布谷鳥搜索(CS,cuckoo search)最早是在2009年,由劍橋大學的X.S.Yang等提出開發的一種新型自然啟發式算法[9],該算法思想是基于布谷鳥產卵繁殖方式和Levy飛行[10]。其中Levy飛行是一種隨機游走,每一步方向完全任意,經常性的歩長較小的短距離行走與偶爾性的步長較大的長距離行走相互交替,且步長是一個穩定的重尾分布。將Levy飛行注入到智能搜索算法中,在搜索開始后,長距離行走用于探索整個大范圍,也就是全局大范圍搜索占優勢,不會陷入局部最優;在搜索后期,短距離行走用于小范圍內仔細搜索,也就是局部搜索占優勢,收斂于全局最優解,步長距離越小,得到的精度就會越高,從而算法會收斂于全局最大值。Levy飛行中大量的短距離行走,有利于布谷鳥算法局部尋優,可以提高算法的精度,偶然性的長距離行走又可以將搜索的范圍擴大,有助于算法全局尋優。Levy飛行每步游走都由兩個因素控制:一是游走方向,一般選取一個服從均勻分布的數;二是步長,步長服從Levy分布。為了簡化和模擬布谷鳥的育雛行為,提出了CS算法遵循3條規則[9]:
1)一只布谷鳥一次只下一個蛋,并隨機地放在某個鳥巢中。
2)只有能孵化出蛋的最佳鳥巢才會被保留,供下一代孵化。
3)有數量固定的、可用的宿主鳥巢,鳥蛋以一定的概率被宿主鳥發現,如果被發現,鳥蛋就會被拋棄。
在這3條規則的基礎上,把布谷鳥寄住的鳥巢看成一個解,由此衍生出的布谷鳥算法的主要步驟為:
1)初始參數,隨機生成n個鳥巢位置,計算各個鳥巢的適應度函數值,記錄當前最優解;
2)利用Lévy飛行更新巢穴的位置,更新規則如下:
xi(t+1)=xi(t)+α?Levy(β)
(15)
式中,xi(t)和xi(t+1)分別為第t次和t+1次迭代第i個巢穴的位置;α=α0(xi(t)-xbest)是步長信息,用于控制搜索范圍,α0=0.01是常數,xbest表示當前最優解;?表示點對點乘法;Levy(β)是隨機搜索路徑,服從Lévy概率分布:
Levy~u=t-1-β,0<β≤2;
(16)
3)將更新后的鳥巢位置與之前的鳥巢位置一一對比,保留測試結果較優的解;
4)根據鳥巢主人發現外來物種的概率,對被發現鳥巢的位置進行更新,得到新的位置代替被發現的:
xi(t+1)=xi(t)+r?Heaviside
(Pa-ε)?(xk(t)-xj(t))
(17)
式中,r和ε為[0,1]區間內正態分布的隨機數,Heaviside(u)表示階躍函數,Pa為發現概率,xk(t)和xj(t)為第t次迭代時的兩個隨機解;
5)測試并比較新一代解的適應度值,對于較優的個體,保留傳遞到下一代;
6)如果到了最大迭代次數,則停止,否則反復迭代步驟2)至步驟5)。
針對BP神經網絡依賴初始權值閾值、易陷局部最小值等問題,提出利用CS優化BP神經網絡,主要是先利用CS算法進行全局尋優,優化初始權值和閾值,將最優解再賦給BP神經網絡,這樣可有效避免陷入局部最優問題,同時提高了神經網絡學習效率,優化可以分為三個部分:確定BP網絡結構、CS優化以及BP網絡預測。第一部分根據數據樣本初步確定BP網絡結構,從而確定權值和閾值總數;第二部分采用CS優化尋找具備最優適應度值的個體,找到后對其進行反編碼,從而可以得到最優的權值和閾值,可以構造CS-BP神經網絡;第三部分就是對樣本數據進行訓練并輸出預測結果。
總算法流程如圖2所示。

圖2 CS-BP神經網絡流程圖
CS算法優化BP神經網絡算法步驟:
1)初始化,種群規模n、發現概率Pa及最大迭代次數Nmax等參數;




本實驗用到的鋰電池數據集,取自于美國國家航空航天局官網,公開的鋰電池數據儲存庫,從數據庫中選擇6、7號電池數據集進行實驗。本文中將7號電池充放電循環數據作為訓練集,將6號電池充放電循環數據作為測試集。首先把兩種電池放在同一環境內靜置30 min,然后在恒流模式下進行充電,一直充,電壓達到4.2 V,轉入恒壓充電模式,直到電池完全充滿,充電結束;再靜置30 min后,在2 A恒流模式下放電開始,直到6號電池的電壓降至2.5 V,7號電池的電壓降至2.2 V,結束放電。對6號、7號電池都開展168次充放電循環,選取放電數據在Matlab環境下建立模型,得到如圖3所示,兩種鋰電池的容量變化曲線圖。觀察可知,隨著鋰電池充放電循環次數的增加,電池內部活性材料發生損耗,鋰電池的實際容量逐漸衰減。這里選取的是均方根誤差(RMSE,root mean square error)和絕對誤差作為衡量預測模型好壞的標準,計算公式如式(18):

圖3 兩種鋰電池的容量變化曲線圖
(18)
對原始數據進行無量綱化處理,通常使用歸一化的方法將每個向量映射到[0,1]的區間內,這里通過式(19)做歸一化處理:
(19)
式中,max和min分別對應樣本數據的最大值和最小值。
用Matlab建立BP、CS-BP鋰電池SOC預測模型。電池的電壓、電流、環境溫度、放電時間作為輸入參數,SOC值作為輸出,訓練目標為10-4,隱含層的激活函數是logsig,輸出層的激活函數是purelin,訓練函數為trainlm,學習率為η=0.01。其中CS算法中發現概率Pa=0.25,步長α=0.05。CS算法的本質是一種尋求最優解的算法,對BP算法進行優化,建立了CS-BP預測模型。為了驗證該算法的泛化能力,用建立好的兩種算法對6號和7號電池數據集進行訓練和仿真。對于這兩種預測模型,圖4給出兩種算法的均方根誤差曲線圖,隨機選取第168次的CS-BP算法的RMSE值比BP算法的RMSE值降低了0.015 2,CS-BP算法的RMSE值比BP算法的RMSE值平均降低了0.010 6。

圖4 均方根誤差曲線圖
仿真后得到如圖5所示的CS-BP算法的SOC預測值和真實值。從圖5可以看出,CS-BP算法的預測值比BP算法要更接近真實值,并且如圖6所示,單次放電下電池SOC隨時間變化預測誤差曲線,CS-BP算法的最大絕對誤差比BP算法的最大絕對誤差降低了0.024 1,表明了CS-BP算法和BP算法相比,對鋰電池SOC的估算更加精確。

圖5 SOC隨時間變化曲線圖

圖6 SOC隨時間變化預測誤差曲線圖
本文主要研究了基于CS-BP神經網絡的鋰電池SOC的估算方法。傳統的BP算法存在依賴初始權值閾值,容易陷入局部最優等缺點,因此在此基礎上,先運行CS算法對初始權值和閾值進行尋優,將得到的優解再傳給BP神經網絡,建立估算模型,仿真結果顯示,基于CS-BP算法的SOC估算比傳統的BP算法估算精度更高。
由于實驗條件的影響,人為排除了電池壽命等因素,接下來的工作要考慮多種影響因素,完成更高精度的預測。