凌 曉,徐魯帥,梁 瑞,郭 凱,崔本廷,岳守體
(1.蘭州理工大學(xué) 石油化工學(xué)院,甘肅 蘭州 730050;2.太原衛(wèi)星發(fā)射中心 山西 太原 030027)
近年來,隨著輸油管道長時間且不間斷的運行,管道事故發(fā)生頻率不斷增加[1-2]。根據(jù)行業(yè)統(tǒng)計分析,由于管道運行環(huán)境復(fù)雜惡劣、管道本體潛在缺陷等問題的存在,管道腐蝕一直是引起管道失效的主要源頭[3-4]。管道腐蝕失效會引發(fā)重大安全事故,造成巨大的經(jīng)濟損失[5]。因此研究輸油管道腐蝕狀態(tài),對保障居民安全、社會及企業(yè)穩(wěn)定發(fā)展具有重大意義。
張河葦?shù)萚6]基于互信息理論方法,建立了管道腐蝕等級與各相關(guān)因素之間的關(guān)聯(lián)模型,確定了影響管道腐蝕速率的主要因素;王天瑜等[7]應(yīng)用改進灰色關(guān)聯(lián)分析和熵權(quán)法相結(jié)合的土壤腐蝕性評價方法分析了土壤對埋地管道的腐蝕情況;Senouci等[8]使用神經(jīng)網(wǎng)絡(luò)模型對管道的內(nèi)外監(jiān)測數(shù)據(jù)進行分析,預(yù)測管道腐蝕狀態(tài)以及管道衰退情況;章玉婷等[9]提出了基于BPNN模型對長輸管道的內(nèi)腐蝕速率進行預(yù)測,但由于標準的BPNN模型具有易陷入局部最優(yōu)的缺陷,因此預(yù)測誤差相對較大。
本文引入改進的PSO算法優(yōu)化BPNN模型[10],改進的PSO算法提升了自身搜索到全局最優(yōu)的能力,可為BPNN提供最優(yōu)初始權(quán)值和閾值,從而有效避免了BPNN易陷入局部最優(yōu)的問題發(fā)生。利用優(yōu)化后的BPNN模型進行訓(xùn)練及驗證,預(yù)測結(jié)果較為精確。
BPNN模型根據(jù)已知數(shù)據(jù)類型與預(yù)期輸出數(shù)據(jù)類型確定輸入層和輸出層節(jié)點個數(shù)[11]。輸入層將數(shù)據(jù)信號傳輸給神經(jīng)網(wǎng)絡(luò)中間的隱藏層,隱藏層學(xué)習并處理數(shù)據(jù),將處理后的信號結(jié)果傳輸給輸出層[12]。如果輸出的結(jié)果與期望輸出值不一致,便將誤差反向傳播給隱藏層,并對隱藏層的權(quán)值和閾值進行修正,迭代此過程,直到輸出結(jié)果與期望輸出值相符為止[13]。在使用BPNN模型分析預(yù)測時,一般采用三層網(wǎng)絡(luò)拓撲結(jié)構(gòu),如圖1所示,其中輸入層節(jié)點數(shù)為m;隱藏層節(jié)點數(shù)為l;輸出層節(jié)點數(shù)為n。
圖1 BPNN模型網(wǎng)絡(luò)拓撲Fig.1 Network topology of BPNN model
隱藏層和輸出層的輸入、輸出滿足以下公式[14]:
(1)
aj=f(sj)
(2)
(3)
tk=f(pk)
(4)
式中:xi(i=1,2,…,m)為BPNN模型的輸入值;sj為隱藏層第j個節(jié)點的輸入值;aj為隱藏層第j個節(jié)點的輸出值;wij為輸入層到隱藏層的權(quán)值;bj為隱藏層的閾值;pk為輸出層第k個節(jié)點的輸入值;tk為輸出層第k個節(jié)點的輸出值;wjk為隱藏層到輸出層的權(quán)值;bk為輸出層的閾值;f(x)為BPNN模型的激勵函數(shù)。
根據(jù)上式對輸入層的輸入數(shù)據(jù)進行相應(yīng)處理,最后由神經(jīng)網(wǎng)絡(luò)的輸出層輸出處理后的數(shù)據(jù)信號,這個過程為神經(jīng)網(wǎng)絡(luò)的正向輸入過程;將神經(jīng)網(wǎng)絡(luò)輸出的結(jié)果誤差大小反向修正各個節(jié)點權(quán)值和閾值的數(shù)值,這個過程為神經(jīng)網(wǎng)絡(luò)的反向傳播過程。誤差函數(shù)Ep及權(quán)閾值修正系數(shù)如下[14]:
(5)
(6)
(7)
(8)
(9)
式中:yk為期望輸出值;tk為實際輸出值;η為學(xué)習速率系數(shù);Δwjk為隱藏層到輸出層的權(quán)值修正系數(shù);Δwij為輸入層到隱藏層的權(quán)值修正系數(shù);Δbk為輸出層的閾值修正系數(shù);Δbj為隱藏層的閾值修正系數(shù)。
BPNN模型的正向信號輸入,誤差反向傳播的過程不斷地進行迭代,直到輸出值滿足期望輸出。將BPNN模型用于輸油管道腐蝕內(nèi)速率預(yù)測,將管道的內(nèi)檢測數(shù)據(jù)作為輸入層的輸入信號,并將管道腐蝕速率作為輸出層的輸出信號,不斷比較BPNN模型輸出的管道腐蝕速率預(yù)測值與期望輸出值之間的誤差,當滿足誤差精度要求時或達到預(yù)設(shè)最大迭代次數(shù)后終止訓(xùn)練,再用測試數(shù)據(jù)集對該BPNN模型進行驗證測試。
隱藏層節(jié)點數(shù)對管道腐蝕速率預(yù)測有重要影響。如果隱藏層節(jié)點數(shù)過少,則在神經(jīng)網(wǎng)絡(luò)預(yù)測過程中獲取的有效信息較少,致使其難以達到準確的預(yù)測。但如果隱藏層節(jié)點數(shù)過多,會使神經(jīng)網(wǎng)絡(luò)的訓(xùn)練時間加長、容錯性變差、泛化能力下降。所以隱藏層節(jié)點數(shù)的選擇是BPNN模型建立的重要一步。
設(shè)某一BPNN模型為三層網(wǎng)絡(luò)結(jié)構(gòu)中輸入節(jié)點數(shù)為m,即輸入向量可表示為X=(x1,x2,…,xm)T∈Rm,輸出層節(jié)點數(shù)為n個,神經(jīng)網(wǎng)絡(luò)的隱藏層節(jié)點數(shù)l個。其中隱藏層的節(jié)點數(shù)主要由經(jīng)驗公式(10)確定[15]。
(10)
式中:a為1~10的常數(shù)。
隱藏層節(jié)點數(shù)確立步驟為:1)依據(jù)式(10)確定隱藏層節(jié)點數(shù)的取值區(qū)間;2)將區(qū)間內(nèi)的整數(shù)作為BPNN模型中隱藏層節(jié)點的個數(shù),訓(xùn)練樣本;3)記錄每次訓(xùn)練結(jié)果的誤差,誤差最小時所對應(yīng)的隱藏層節(jié)點個數(shù)便為最終確定的BPNN模型中隱藏層節(jié)點數(shù)。
標準的PSO算法是隨機初始化一群無體積和質(zhì)量的粒子,每個粒子對應(yīng)1個可行解,且都具有1個適應(yīng)度值,并通過速度變量來確定其位置和方向[16]。PSO算法通過跟蹤個體極值(pbest)和群體極值(gbest)進行粒子群的速度和位置更新。粒子的速度和位置根據(jù)式(11)和式(12)更新:
(11)
xi,j(t+1)=xi,j(t)+vi,j(t+1)
(12)
式中:vi,j(t+1)為第i個粒子在t+1次迭代中第j維上的速度;xi,j(t+1)為第i個粒子在t+1次迭代中第j維上的位置;c1和c2為學(xué)習因子;r1和r2是在[0,1]的2個隨機數(shù);w是慣性權(quán)重;pi,j為第i個變量個體極值的第j維;pg,j為全局最優(yōu)解的第j維。
標準的粒子群算法,w按式(13)更新,學(xué)習因子為常數(shù),一般取值為2。
(13)
式中:t為當前迭代次數(shù);tmax為最大迭代次數(shù);wmax為慣性權(quán)重的初值;wmin為慣性權(quán)重的終值。
標準PSO算法的慣性權(quán)重計算公式如式(13),該算法收斂速度隨迭代次數(shù)的增加而減慢,降低了PSO算法跳出局部最優(yōu)的幾率。其次,標準的PSO算法在使用較大的常數(shù)學(xué)習因子時極易跳過最優(yōu)解使算法不能收斂[17]。因此文中引入改進的PSO算法[10]加快迭代后期的收斂速度,增大了PSO算法收斂到全局最優(yōu)解的幾率。
1)對粒子群中粒子進行混沌初始化,使粒子分布更均勻,保持粒子的多樣性,本文采用典型的混沌序列,其數(shù)學(xué)模型[18]可表示為:
zn+1=rzn(1-zn)
(14)
式中:zn為第n個節(jié)點的混沌變量;zn+1為第n+1個節(jié)點的混沌變量;r為混沌吸引子,當r=4時,系統(tǒng)處于完全混沌狀態(tài),此時zn+1∈(0,1)。
2)將粒子按適應(yīng)度值區(qū)分為2部分,通過比較單個粒子適應(yīng)度值和粒子群的平均適應(yīng)度值,劃分單個粒子質(zhì)量的優(yōu)劣,根據(jù)式(15)~(16)調(diào)整粒子的搜索能力w和學(xué)習能力c1和c2,保證粒子群快速收斂。
(15)
(16)
式中:w0為慣性權(quán)重初值,且0 改進的PSO-BPNN模型流程如圖2所示。 圖2 改進的PSO-BPNN流程Fig.2 Procedure of improved PSO-BPNN 利用改進的PSO算法優(yōu)化BPNN模型的初始權(quán)值和閾值,再利用優(yōu)化后的BPNN模型對輸油管道內(nèi)腐蝕速率進行預(yù)測,其主要步驟為: 1)初始化PSO算法,確定算法中各初始值和取值區(qū)間,如種群規(guī)模,最大迭代次數(shù),w0,c10,c20,k1,k2以及k3的初始值,學(xué)習因子、速度及位置的取值區(qū)間等。按照式(17)計算初始粒子的適應(yīng)度值。 (17) 2)確定BPNN模型網(wǎng)絡(luò)層數(shù)及各層節(jié)點數(shù)。將BPNN模型中的初始權(quán)值和閾值作為PSO算法中的粒子,并通過各層節(jié)點數(shù)確定粒子的維數(shù)N: N=N0×N1+N1×N2+N1+N2 (18) 式中:N0為BPNN模型中輸入層的節(jié)點個數(shù);N1為BPNN模型中隱藏層的節(jié)點個數(shù);N2為BPNN模型中輸出層的節(jié)點個數(shù)。 3)根據(jù)步驟1)中各粒子的適應(yīng)度值計算結(jié)果,把粒子自身的位置設(shè)為個體極值pbest,整個粒子群中粒子的最優(yōu)位置設(shè)為群體極值gbest。 4)根據(jù)式(1)~(2)計算更新w,c1,c2的值,粒子的速度和位置根據(jù)式(3)~(4)計算更新。按照式(17)計算新粒子的適應(yīng)度值,按照步驟3)的方式更新粒子群的pbest和gbest。 5)當PSO算法的迭代到最大次數(shù)或輸出值滿足預(yù)設(shè)誤差精度時,迭代終止,否則返回步驟4)。迭代終止后,將得到的最優(yōu)粒子解碼賦值給BPNN模型的初始權(quán)值和閾值,使用優(yōu)化后的BPNN模型對輸油管道內(nèi)腐蝕速率進行預(yù)測。 數(shù)據(jù)來源于某輸油管道[19],管道材質(zhì)為20#鋼,于1990年建成投產(chǎn),運行壓力為1.0~5.0 MPa。采集了含硫量、PH值、溫度、流速、壓力5種管道腐蝕速率主要影響參數(shù)。采集數(shù)據(jù)集共25組,選取其中15組作為BPNN模型及PSO-BPNN模型的訓(xùn)練集,具體管道參數(shù)見表1。剩余10組為2種機器學(xué)習算法的測試集,以對比其預(yù)測的準確性。 表1 輸油管道檢測數(shù)據(jù)Table 1 Inspection data of oil pipeline 為驗證模型預(yù)測效果,本文對比選用均方根誤差(RE)、相對誤差(S)和平均相對誤差(SA)指標來評價模型的準確性和優(yōu)劣性,計算公式如下: (19) (20) (21) BPNN模型的輸入變量為影響管道腐蝕速率的5個主要參數(shù),輸出值為輸油管道的內(nèi)腐蝕速率。選用三層網(wǎng)絡(luò)的BPNN模型,輸入層節(jié)點為5個,分別對應(yīng)5個主要影響參數(shù)(硫含量、KOH酸值、溫度、流速、壓力)。輸出層節(jié)點數(shù)為1個,對應(yīng)管道的內(nèi)腐蝕速率。用MATLAB編程確定隱藏層節(jié)點數(shù)的預(yù)測圖如圖3所示,由圖3可知BPNN模型預(yù)測結(jié)果的均方差隨隱藏層節(jié)點數(shù)的增加而減小。當隱藏層節(jié)點數(shù)為10時,BPNN模型預(yù)測結(jié)果的均方差最小,為0.033 3,所以本文中BPNN隱藏層節(jié)點數(shù)確定為10。 圖3 平均相對誤差與隱含層節(jié)點關(guān)系Fig 3 Relationship between average relative error and hidden layer nodes BPNN模型中隱藏層和輸出層的激勵函數(shù)分別選用Logsig函數(shù)和Purelin函數(shù),其表達式分別為: (22) f(x)=x (23) 式中:x為節(jié)點輸入值;f(x)為節(jié)點輸出值。 BPNN模型的最大迭代次數(shù)為300,訓(xùn)練誤差目標為10-6。在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)下,利用PSO算法對BPNN模型進行優(yōu)化。標準的PSO參數(shù)設(shè)置:種群規(guī)模為60,進化迭代次數(shù)為300,訓(xùn)練目標為10-6。粒子群維度根據(jù)式(18)確定為71;學(xué)習因子c1和c2為2,wmin為0.1,wmax為0.9;粒子位置的取值區(qū)間為[-4,4],速度的取值區(qū)間為[-1,1]。 優(yōu)化的PSO算法參數(shù)設(shè)置:種群規(guī)模為60,進化迭代次數(shù)為300,訓(xùn)練目標為10-6。粒子群維度為71;w0=0.6,c10=c20=1.6,k1=0.3,k2=k3=0.5;慣性權(quán)重的區(qū)間為[0.2,0.9],加速因子的區(qū)間為[1.2,2.5];粒子位置的取值區(qū)間分別為[-4,4],速度的取值區(qū)間為[-1,1]。 檢驗集10組數(shù)據(jù)的腐蝕預(yù)測結(jié)果對比如圖4所示。PSO-BPNN模型與BPNN模型預(yù)測的相對誤差見表2。 從表2可知,BPNN模型預(yù)測結(jié)果較差,遠高于PSO-BPNN模型和優(yōu)化的PSO-BPNN模型。BPNN模型預(yù)測的最高相對誤差達24.49%,平均相對誤差為11.13%,這是因為標準的BPNN模型陷入了局部最優(yōu)所導(dǎo)致的。相對于BPNN模型,PSO-BPNN模型的預(yù)測精度有了較大幅度的提高,最大相對誤差僅為11.29%,平均相對誤差為7.68%,預(yù)測精度比較符合實際需求。PSO-BPNN模型預(yù)測精度的提高是因為PSO算法優(yōu)化了BPNN模型的初始權(quán)值和閾值,提高了神經(jīng)網(wǎng)絡(luò)的訓(xùn)練能力和預(yù)測精度。優(yōu)化的PSO-BPNN模型預(yù)測精度最高,其最大相對誤差為10.34%,平均相對誤差為5.57%。改進PSO-BPNN模型預(yù)測精度提高是因為優(yōu)化后的PSO算法在后期更容易跳出局部最優(yōu),有利于其在全局范圍內(nèi)搜索最優(yōu)解。因此,改進PSO-BPNN模型的預(yù)測結(jié)果更為準確可靠。 圖4 腐蝕速率預(yù)測對比Fig.4 Comparison on prediction results of corrosion rate 表2 模型預(yù)測誤差Table 2 Errors of prediction by different models 1)本文使用改進的PSO算法優(yōu)化BPNN模型的初始權(quán)值和閾值,避免了標準的BPNN模型容易陷入局部最優(yōu)問題的發(fā)生,有效提升了模型的預(yù)測精度。 2)將該算法應(yīng)用于輸油管道腐蝕速率預(yù)測中,使用優(yōu)化的PSO-BPNN模型預(yù)測結(jié)果的最大相對誤差為10.34%,平均相對誤差為5.57%,明顯優(yōu)于標準的BPNN模型預(yù)測的最大相對誤差24.49%和平均相對誤差7.68%。 3)使用優(yōu)化的PSO-BPNN模型預(yù)測輸油管道的腐蝕速率可為管道的檢測維修提供可靠的理論和技術(shù)支撐。3 改進的PSO-BPNN模型構(gòu)建
4 預(yù)測實例及分析
4.1 數(shù)據(jù)來源
4.2 預(yù)測性能評價指標
4.3 預(yù)測模型構(gòu)建
4.4 預(yù)測結(jié)果分析
5 結(jié)論