孫立珍,趙樂樂
(內蒙古建筑職業(yè)技術學院信息網(wǎng)絡中心,呼和浩特 010070)
曲線擬合是數(shù)據(jù)分析和處理時重要的方法之一,根據(jù)變量之間關系的不同可分為線性曲線擬合和非線性曲線擬合兩種[1]。線性曲線擬合通常是采用一組簡單的、線性無關的基函數(shù)來逼近測量數(shù)據(jù),進而求解參數(shù),許多非線性曲線擬合問題也是經過函數(shù)的非線性變換轉為線性擬合問題來處理[2]。非線性曲線擬合通常是基于MATLAB、Origin 和Maple 等數(shù)學軟件利用最小二乘法或其他優(yōu)化方法求解模型參數(shù),文獻[3-6]是基于MATLAB 進行曲線擬合,文獻[7-9]是基于Origin進行曲線擬合,文獻[10-11]是基于Maple 進行曲線擬合,這些軟件在使用過程中經常遇到初值設定困難、收斂性差和精度低等問題。特別是參數(shù)初值的設定往往憑借經驗進行試探,具有很大的盲目性,初值設定不當直接導致擬合無法收斂或局部最優(yōu)的結果[12]。目前也存在像文獻[13-14]用的 Lingo 和文獻[15-16]用的1stOpt 不需要設定初值的數(shù)學軟件,所有用于曲線擬合的軟件各具特點。
本文以某一鋰離子電池在放電結束后的端電壓變化曲線為擬合對象,分別基于MATLAB、1stOpt 進行非線性擬合,從擬合精度和軟件的易用性兩個方面,對MATLAB 和1stOpt 這兩種常用的數(shù)學軟件所提供的曲線擬合方法進行對比分析。
非線性曲線擬合多指通過一組實驗數(shù)據(jù)(xi,yi),(i=1,2,3,…,n),尋找一個y 與x 之間的函數(shù)f(x,y),使得xi 處的函數(shù)值在最小二乘準則下與觀測值的偏差最小,讓f(x,y)盡可能準確地表示出xi 和yi 兩個被描述量之間的關系[17]。因此,對于在最小二乘準則下的非線性曲線擬合方法,可以通過殘差平方和來比較分析其擬合效果。
目前,非線性曲線擬合問題比較普遍,可利用的軟件也比較多,有需要進行參數(shù)初值設定的,也有不需要進行參數(shù)初值設定的,各種應用場景不甚相同。MATLAB是MathWorks 公司開發(fā)的商業(yè)數(shù)學軟件,提供有l(wèi)sqcurvefit()和 lsqnonlin()兩個非線性曲線擬合函數(shù),這兩個函數(shù)采用同一種擬合算法,即最小二乘法。1stOpt是由七維高科有限公司開發(fā)的一套數(shù)學優(yōu)化分析綜合工具軟件包,其核心算法是“通用全局優(yōu)化算法(UGO)”,可用于非線性回歸、曲線擬合和非線性復雜工程模型參數(shù)辨識等領域。
本文通過鋰離子電池放電結束后的二階RC 等效電路的零輸入響應對電池端電壓測量值進行非線性擬合,辨識相關參數(shù),對比分析MATLAB 和1stOpt 兩種擬合方法易用性和精確性。鋰離子電池放電結束后的二階RC 等效電路的零輸入響應表達式如式(1)所示[18]。
式中,UL表示電池的端電壓,UOC表示電池結束放電后的開路電壓,U1和U2分別表示兩個RC 支路在放電結束時的電壓,τ1和τ2分別表示兩個RC 支路的時間常數(shù),t 表示電池結束放電時長。
文獻[19]對某一鋰離子電池組進行脈沖放電,在其中一個脈沖放電后采集的端電壓值如表1 所示,采樣時間間隔為1s,共計20 個采樣點。
表1 采樣時間和電池端電壓
在已經獲取了一組自變量和因變量數(shù)據(jù)的情況下進行非線性曲線擬合,可以直接使用lsqcurvefit()函數(shù),否則可以使用 lsqnonlin()函數(shù)[20]。對于式(1)而言,在給定的輸入數(shù)據(jù)t 和輸出數(shù)據(jù)UL的情況下,基于MATLAB 建立可以表達電池放電結束后的二階RC 等效電路的零輸入響應的function,設定參數(shù)初值,利用lsqcurvefit()函數(shù)實現(xiàn)最小二乘意義上的非線性曲線擬合,進而辨識參數(shù) U1、τ1、U2和τ2。
當參數(shù)(U1,τ1,U2,τ2)的初值分別設定為(1,1,1,1)、(2,2,2,2)、(10,10,10,10)時,擬合曲線如圖 1 所示,辨識的參數(shù)和擬合殘差平方和(SSE)如表2。
表2 辨識的參數(shù)和擬合殘差平方和
圖1 電池端電壓變化曲線
從以上擬合結果來看,當參數(shù)初值設定為(1,1,1,1)時,非線性曲線擬合無法收斂,且出現(xiàn)極化電壓U2小于0 的現(xiàn)象,這與理論相悖;當參數(shù)初值設定為(2,2,2,2)時,雖然非線性曲線擬合可以收斂,SSE=1.6701E-5 較小,但僅是局部最優(yōu)化,擬合度不高;當參數(shù)初值設定為(10,10,10,10)時,SSE=1.0928E-6 小于 1.6701E-5,非線性曲線擬合度提高,擬合結果接近全局最優(yōu)。進而表明,基于MATLAB 進行非線性擬合會遇到參數(shù)初值設定困難的問題,特別是強非線性擬合,參數(shù)初值設定不當可能出現(xiàn)不能收斂或局部最優(yōu)的現(xiàn)象。
1stOpt 的“UGO”可以解決目前在優(yōu)化計算領域中使用迭代法所面臨的初值設定難的問題,即參數(shù)初值不需要用戶設定,代碼執(zhí)行時會隨機給出,并通過其全局優(yōu)化算法找出全局最優(yōu)解,進而可以避免因初值選取不當而導致的局部最優(yōu)或不能收斂的問題出現(xiàn)[21]。
基于1stOpt 定義參數(shù)和變量,建立鋰離子電池放電結束后的二階RC 等效電路的零輸入響應的Function,優(yōu)化算法選擇“麥夸特法(LM)”,算法參數(shù)設定選擇“標準LM+UGO”模式,執(zhí)行代碼可實現(xiàn)最小二乘意義上的非線性曲線擬合,不需要設定初值就可以辨識參數(shù)(U1,τ1,U2,τ2)。擬合曲線如圖 2 所示,辨識的參數(shù)和擬合殘差平方和如表3。
表3 辨識的參數(shù)和擬合殘差平方和
圖2 電池端電壓變化曲線
基于1stOpt 的非線性擬合無需設定參數(shù)初值,代碼編寫簡單,有多種可選的優(yōu)化算法組合。從以上擬合結果來看,擬合精度較高,殘差平方和為1.0926E-6,相對 MATLAB 在初值設定為(10,10,10,10)時的擬合殘差平方和減小0.0183%,實現(xiàn)了全局最優(yōu)化。
對于非線性曲線擬合問題,數(shù)學軟件MATLAB 和1stOpt 還是有較大區(qū)別的。MATLAB 雖然擬合速度較快,但需要設定參數(shù)初值,且要達到1stOpt 的擬合精度需要設定合適的參數(shù)初值,否則可能出現(xiàn)無法收斂或局部最優(yōu)的問題。1stOpt 無需設定參數(shù)初值,利用“UGO”進行非線性擬合,擬合速度相比MATLAB 略低,但解決了目前在優(yōu)化計算領域中使用迭代法所面臨的初值設定難的問題,擬合殘差平方和較小,精度較高,可以實現(xiàn)全局最優(yōu)化。另外,利用1stOpt 進行非線性擬合時代碼編寫簡單,默認輸出迭代數(shù)、計算用時、殘差平方和、均方差和相關系數(shù)等結果。