孫立珍,趙樂樂
(內蒙古建筑職業技術學院信息網絡中心,呼和浩特 010070)
曲線擬合是數據分析和處理時重要的方法之一,根據變量之間關系的不同可分為線性曲線擬合和非線性曲線擬合兩種[1]。線性曲線擬合通常是采用一組簡單的、線性無關的基函數來逼近測量數據,進而求解參數,許多非線性曲線擬合問題也是經過函數的非線性變換轉為線性擬合問題來處理[2]。非線性曲線擬合通常是基于MATLAB、Origin 和Maple 等數學軟件利用最小二乘法或其他優化方法求解模型參數,文獻[3-6]是基于MATLAB 進行曲線擬合,文獻[7-9]是基于Origin進行曲線擬合,文獻[10-11]是基于Maple 進行曲線擬合,這些軟件在使用過程中經常遇到初值設定困難、收斂性差和精度低等問題。特別是參數初值的設定往往憑借經驗進行試探,具有很大的盲目性,初值設定不當直接導致擬合無法收斂或局部最優的結果[12]。目前也存在像文獻[13-14]用的 Lingo 和文獻[15-16]用的1stOpt 不需要設定初值的數學軟件,所有用于曲線擬合的軟件各具特點。
本文以某一鋰離子電池在放電結束后的端電壓變化曲線為擬合對象,分別基于MATLAB、1stOpt 進行非線性擬合,從擬合精度和軟件的易用性兩個方面,對MATLAB 和1stOpt 這兩種常用的數學軟件所提供的曲線擬合方法進行對比分析。
非線性曲線擬合多指通過一組實驗數據(xi,yi),(i=1,2,3,…,n),尋找一個y 與x 之間的函數f(x,y),使得xi 處的函數值在最小二乘準則下與觀測值的偏差最小,讓f(x,y)盡可能準確地表示出xi 和yi 兩個被描述量之間的關系[17]。因此,對于在最小二乘準則下的非線性曲線擬合方法,可以通過殘差平方和來比較分析其擬合效果。
目前,非線性曲線擬合問題比較普遍,可利用的軟件也比較多,有需要進行參數初值設定的,也有不需要進行參數初值設定的,各種應用場景不甚相同。MATLAB是MathWorks 公司開發的商業數學軟件,提供有lsqcurvefit()和 lsqnonlin()兩個非線性曲線擬合函數,這兩個函數采用同一種擬合算法,即最小二乘法。1stOpt是由七維高科有限公司開發的一套數學優化分析綜合工具軟件包,其核心算法是“通用全局優化算法(UGO)”,可用于非線性回歸、曲線擬合和非線性復雜工程模型參數辨識等領域。
本文通過鋰離子電池放電結束后的二階RC 等效電路的零輸入響應對電池端電壓測量值進行非線性擬合,辨識相關參數,對比分析MATLAB 和1stOpt 兩種擬合方法易用性和精確性。鋰離子電池放電結束后的二階RC 等效電路的零輸入響應表達式如式(1)所示[18]。

式中,UL表示電池的端電壓,UOC表示電池結束放電后的開路電壓,U1和U2分別表示兩個RC 支路在放電結束時的電壓,τ1和τ2分別表示兩個RC 支路的時間常數,t 表示電池結束放電時長。
文獻[19]對某一鋰離子電池組進行脈沖放電,在其中一個脈沖放電后采集的端電壓值如表1 所示,采樣時間間隔為1s,共計20 個采樣點。

表1 采樣時間和電池端電壓
在已經獲取了一組自變量和因變量數據的情況下進行非線性曲線擬合,可以直接使用lsqcurvefit()函數,否則可以使用 lsqnonlin()函數[20]。對于式(1)而言,在給定的輸入數據t 和輸出數據UL的情況下,基于MATLAB 建立可以表達電池放電結束后的二階RC 等效電路的零輸入響應的function,設定參數初值,利用lsqcurvefit()函數實現最小二乘意義上的非線性曲線擬合,進而辨識參數 U1、τ1、U2和τ2。
當參數(U1,τ1,U2,τ2)的初值分別設定為(1,1,1,1)、(2,2,2,2)、(10,10,10,10)時,擬合曲線如圖 1 所示,辨識的參數和擬合殘差平方和(SSE)如表2。

表2 辨識的參數和擬合殘差平方和

圖1 電池端電壓變化曲線
從以上擬合結果來看,當參數初值設定為(1,1,1,1)時,非線性曲線擬合無法收斂,且出現極化電壓U2小于0 的現象,這與理論相悖;當參數初值設定為(2,2,2,2)時,雖然非線性曲線擬合可以收斂,SSE=1.6701E-5 較小,但僅是局部最優化,擬合度不高;當參數初值設定為(10,10,10,10)時,SSE=1.0928E-6 小于 1.6701E-5,非線性曲線擬合度提高,擬合結果接近全局最優。進而表明,基于MATLAB 進行非線性擬合會遇到參數初值設定困難的問題,特別是強非線性擬合,參數初值設定不當可能出現不能收斂或局部最優的現象。
1stOpt 的“UGO”可以解決目前在優化計算領域中使用迭代法所面臨的初值設定難的問題,即參數初值不需要用戶設定,代碼執行時會隨機給出,并通過其全局優化算法找出全局最優解,進而可以避免因初值選取不當而導致的局部最優或不能收斂的問題出現[21]。
基于1stOpt 定義參數和變量,建立鋰離子電池放電結束后的二階RC 等效電路的零輸入響應的Function,優化算法選擇“麥夸特法(LM)”,算法參數設定選擇“標準LM+UGO”模式,執行代碼可實現最小二乘意義上的非線性曲線擬合,不需要設定初值就可以辨識參數(U1,τ1,U2,τ2)。擬合曲線如圖 2 所示,辨識的參數和擬合殘差平方和如表3。

表3 辨識的參數和擬合殘差平方和

圖2 電池端電壓變化曲線
基于1stOpt 的非線性擬合無需設定參數初值,代碼編寫簡單,有多種可選的優化算法組合。從以上擬合結果來看,擬合精度較高,殘差平方和為1.0926E-6,相對 MATLAB 在初值設定為(10,10,10,10)時的擬合殘差平方和減小0.0183%,實現了全局最優化。
對于非線性曲線擬合問題,數學軟件MATLAB 和1stOpt 還是有較大區別的。MATLAB 雖然擬合速度較快,但需要設定參數初值,且要達到1stOpt 的擬合精度需要設定合適的參數初值,否則可能出現無法收斂或局部最優的問題。1stOpt 無需設定參數初值,利用“UGO”進行非線性擬合,擬合速度相比MATLAB 略低,但解決了目前在優化計算領域中使用迭代法所面臨的初值設定難的問題,擬合殘差平方和較小,精度較高,可以實現全局最優化。另外,利用1stOpt 進行非線性擬合時代碼編寫簡單,默認輸出迭代數、計算用時、殘差平方和、均方差和相關系數等結果。