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