毛湘云,徐冰峰,孟繁藝
(昆明理工大學 建筑工程學院,昆明 650500)
氯是供水處理中使用最廣泛的一種消毒劑,余氯作為衡量管網(wǎng)水質(zhì)的一項重要指標,對控制水中的細菌滋生,保證管網(wǎng)水質(zhì)安全十分重要。《生活飲用水衛(wèi)生標準》(GB 5749—2006)[1]中規(guī)定,出廠水余氯應(yīng)大于0.3 mg/L,管網(wǎng)末梢余氯量不應(yīng)小于0.05 mg/L。但由于氯是一種非穩(wěn)定性物質(zhì),受到管網(wǎng)中各種因素的影響,其濃度隨時間的推移而發(fā)生削減,消毒能力下降,使得水質(zhì)發(fā)生惡化,水質(zhì)保障的中心已逐漸由水廠向管網(wǎng)轉(zhuǎn)移[2-4]。所以探究余氯預測方法,為供水企業(yè)對氯的投加提供參考十分重要[5]。
由于余氯濃度在管網(wǎng)中的削減是非線性變化,且管網(wǎng)內(nèi)影響余氯的因素眾多,若采用機理性模型進行預測,其準確性差,建立難度大,求解困難[6-7]。目前已有研究多采用單一網(wǎng)絡(luò)或復合網(wǎng)絡(luò)對余氯進行預測,加之分析樣本有限,預測后沒有對結(jié)果進行誤差修正,且隨著樣本量的增加,預測精度也隨之下降,網(wǎng)絡(luò)的精確性、收斂性及穩(wěn)定性不好,難以獲得理想的預測結(jié)果[5,8-9]。本文通過PSO-SVM+BP神經(jīng)網(wǎng)絡(luò)余氯預測模型,建立多個影響因素與管網(wǎng)末端余氯映射關(guān)系,以了解余氯的衰減規(guī)律,實現(xiàn)對余氯濃度的動態(tài)預測。
支持向量機(Support Vector Machine)是基于統(tǒng)計學理論發(fā)展起來的機器學習算法[5]。它以結(jié)構(gòu)風險最小化原則為理論基礎(chǔ),引入核函數(shù)方法,將原始問題映射到高維空間,把待求解問題轉(zhuǎn)換為二次優(yōu)化問題,使SVM收斂于問題的全局最優(yōu)解。它能較好地解決小樣本、非線性、高維數(shù)和局部極小點等實際問題,具有良好的泛化能力[10-12]。但SVM中關(guān)鍵參數(shù)(核函數(shù)參數(shù)、懲罰因子C)的選取多依靠經(jīng)驗或?qū)嶒灒@些參數(shù)對預測的結(jié)果有至關(guān)重要的影響[13]。所以,針對SVM參數(shù)選取的盲目性,采用粒子群算法(PSO)對SVM進行參數(shù)優(yōu)化,以SVM輸出的均方誤差為適應(yīng)度函數(shù),粒子通過跟蹤個體極值和全局極值在空間內(nèi)不斷更新自己的位置信息、遷移方向和速度值,以尋找出空間內(nèi)的最優(yōu)解,即輸出SVM最小均方誤差時帶入的參數(shù)粒子[14],消除SVM參數(shù)選取的盲目性,但PSO算法后期收斂到一定程度時就無法繼續(xù)優(yōu)化,所以精度不高。為提高精度,利用BP神經(jīng)網(wǎng)絡(luò)較高的可靠性和良好的容錯性,獲得輸入變量與優(yōu)化模型預測誤差之間的映射關(guān)系,建立BP神經(jīng)網(wǎng)絡(luò)殘差修正模型[15-17]。最終通過兩個模型的組合進行優(yōu)勢互補,深度挖掘數(shù)據(jù)信息,以獲得更理想的預測結(jié)果,提高預測精度。
由于管網(wǎng)內(nèi)余氯濃度成非線性變化,管網(wǎng)末端的余氯濃度,受到多種因素的影響。供水管網(wǎng)中余氯濃度主要受到上游監(jiān)測點出廠水的余氯濃度、濁度、管網(wǎng)輸配時間、管道內(nèi)的腐蝕程度、PH值、管網(wǎng)材料和細菌總數(shù)的影響[18-22]。所以,從模型的普適性和對水廠的實地調(diào)研考慮[23],取滇南某水廠2017年1月—12月份的水質(zhì)檢測數(shù)據(jù),構(gòu)建余氯預測模型,確定出廠水余氯濃度、PH值及濁度為影響因子,研究影響因子與管網(wǎng)末端余氯濃度之間的映射關(guān)系。
對某水廠的187個數(shù)據(jù)樣本進行隨機排列,取不同的組合方式對模型進行訓練,最終確定將數(shù)據(jù)分為2部分,85%的數(shù)據(jù)作為訓練數(shù)據(jù),均分為各含有80個數(shù)據(jù),分別建立PSO-SVM模型和BP殘差模型;剩下的27個數(shù)據(jù)作為驗證數(shù)據(jù),進行交叉驗證,以驗證組合模型精度。末端取樣點距離水廠的直線距離為2.4 km,末端余氯濃度范圍為0.02~0.06 mg/L,每個樣本內(nèi)都含有出廠余氯濃度、pH值、濁度及管網(wǎng)末端取樣點余氯濃度。由于數(shù)據(jù)指標不相同,數(shù)量級有一定的差別,為方便計算,需要對樣本數(shù)據(jù)進行歸一化處理,使數(shù)據(jù)值都歸一至[0,1] 之間,歸一化公式為
(1)
2.2.1 SVM模型的建立 將第1組歸一化后的出廠水的余氯濃度、pH值及濁度設(shè)為輸入值,管網(wǎng)末端出水余氯濃度作為輸出值,輸入到SVM模型內(nèi)進行訓練。首先,通過高斯徑向核函數(shù)φ(x),將訓練集xi映射到高維線性空間,構(gòu)造回歸估計函數(shù)
f(x)=ωφ(x)+b
(2)
式中:ω為高維空間權(quán)向量;b為偏置常數(shù)。則最優(yōu)問題為
yi=ωTφ(x)+b+ξi
(i=1,2,…,m)
(3)
式中:ξi為松弛因子。
因此,可以定義如式(4)所示的Lagrange函數(shù)求解上述優(yōu)化問題,即
(4)
式中:αi∈R(i=1,2,...,m)為拉格朗日乘子。根據(jù)Karush-Kuhn-Tucher(KKT)優(yōu)化條件得到等式(5)。
(5)
將式(5)帶入式(4),將ω和ξ消去,得到線性方程式(6)。
(6)
式中:K(xi,xj)為核函數(shù)。用最小二乘法求出α和b,即得到非線性預測輸出模型。
(7)
2.2.2 SVM模型的優(yōu)化 對于SVM參數(shù)選取的盲目性,采用PSO算法進行優(yōu)化。數(shù)據(jù)進行初始化參數(shù)設(shè)定,生成隨機粒子,創(chuàng)建一個二維空間,粒子群規(guī)模為10。其中,第i個粒子的位置表示為向量xi=(xi1,xi2),i=1,2,...,10。其中,xi值中包含為SVM模型的核函數(shù)參數(shù)σ、懲罰因子C,將xi帶入到訓練好的SVM模型中并計算出其均方誤差,將均方誤差作為適應(yīng)度值,根據(jù)適應(yīng)度值的大小評判出粒子的優(yōu)劣。用向量Vi=(vi1,vi2)來代表粒子i的飛行速度,其搜索到的最優(yōu)位置為pi=(pi1,pi2),而整個粒子群搜索到的最優(yōu)位置為pg=(pg1,pg2),得到這兩個最優(yōu)值后,粒子就根據(jù)式(8)、式(9)進行速度和位置的更新。
vi+1=ωVi+c1r1(pi-xi)+c2r2(pg-xi)
(8)
xi+1=xi+vi+1
(9)
其中:i=1,2,...,10;ω是慣性權(quán)重函數(shù),隨著迭代的增加而減小,用來控制前面速度對當前速度的影響;設(shè)置加速因子c1=1.8和c2=1.7;r1和r2是[0,1]之間的隨機數(shù),進行50次迭代,粒子群迭代曲線如圖1所示。
圖1 粒子群迭代曲線Fig.1 Particle swarm optimization algorithm iteration
得到其最優(yōu)參數(shù)為:均方誤差mse=1.217,核函數(shù)參數(shù)σ=10,懲罰系數(shù)為C=6.690 4。帶入SVM模型,建立PSO-SVM模型。
為進一步提高模型的精度,采用BP神經(jīng)網(wǎng)絡(luò)進行殘差修正。用PSO-SVM模型對第2組數(shù)據(jù)進行預測,將預測值記錄下來。以第2組數(shù)據(jù)中出廠水余氯量、出廠濁度和出廠pH值作為輸入值Xi,以實測值與PSO-SVM預測值之間的偏差作為輸出值Ti,組建訓練樣本(Xi,Ti),建立3層前饋型BP神經(jīng)網(wǎng)絡(luò),網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 BP神經(jīng)網(wǎng)絡(luò)系統(tǒng)殘差修正結(jié)構(gòu)Fig.2 Residual correction structure of BP neural
對網(wǎng)絡(luò)輸入層、隱含層和輸出層神經(jīng)元之間的連接權(quán)值ωij、ωjk以及隱含層及輸出層的閾值a、b進行初始化設(shè)置,然后,對模型進行訓練,模型網(wǎng)絡(luò)設(shè)置輸入層到隱層傳遞函數(shù)為tansig函數(shù),即
(10)
根據(jù)輸入的變量Xi,輸入層和隱含層間連接權(quán)值ωij以及隱含層閾值a,計算隱含層出輸值為Uj。
(11)
再采用logsig函數(shù)作為隱含層到輸出層的傳遞函數(shù),計算BP神經(jīng)網(wǎng)絡(luò)的預測輸出Gk。
(12)
用期望輸出T減去預測輸出G得到誤差集合ek,然后用式(13)~式(16)對連接權(quán)值和閥值進行修正。
(13)
ωjk=ωjk+ηUjek
(14)
(15)
bk=bk+ek
(16)
設(shè)置輸出層傳遞函數(shù)為logsig函數(shù),訓練函數(shù)為trainlm函數(shù),精度取0.000 000 001,學習率為0.1%,訓練次數(shù)1 000次,經(jīng)過試驗確定,隱含層數(shù)為16時,模型的均方誤差最小,實驗結(jié)果見圖3。
圖3 組合算法不同隱含層的均方誤差Fig.3 The MSE of different hidden layers in
由此建立了3-16-1結(jié)構(gòu)的BP神經(jīng)網(wǎng)絡(luò)殘差模型,其中,i=(1,2,3),j=(1,2,...,16),k=1,得出廠水的余氯濃度、pH值及濁度和PSO-SVM模型預測誤差的映射關(guān)系模型,即BP神經(jīng)網(wǎng)絡(luò)殘差模型。
2.4.1 組合模型的建立 將第3組數(shù)據(jù)帶入上述PSO-SVM模型和BP神經(jīng)網(wǎng)絡(luò)殘差模型內(nèi),驗證組合模型的預測效果,由PSO-SVM模型得到管網(wǎng)末端余氯預測值y,由BP殘差模型得到殘差預測值e,則最終組合模型的最終預測結(jié)果ye=y+e。如圖4所示。
圖4 組合模型結(jié)構(gòu)圖Fig.4 Combined model flow
2.4.2 組合模型的結(jié)果驗證 將第3組數(shù)據(jù)作為預測輸入組合模型,并以相同的輸入輸出,分別輸入BP神經(jīng)網(wǎng)絡(luò)和PSO-SVM模型中對余氯進行預測,以驗證組合模型的預測效果,預測結(jié)果如圖5所示。
圖5 各算法預測結(jié)果比較Fig.5 Prediction results comparison for different
由圖5可知,單一的BP神經(jīng)網(wǎng)絡(luò)和SVM算法進行預測時,總體的預測誤差較大,預測誤差存在較大的波動,且對實際值擬合能力差。而組合模型的預測精度較單一模型而言有了顯著的提高,具有更好的數(shù)據(jù)動態(tài)擬合能力和模型穩(wěn)健性。為更直接分析模型的準確性,從圖5中提取3種模型的模擬誤差,見表1。
表1 模型模擬精度對比Table 1 Comparison of model simulation precision
從表1可知,單一的SVM算法與BP神經(jīng)網(wǎng)絡(luò)算法預測誤差指標項相差不大,預測結(jié)果都不太理想,其均方誤差分別為1.7×10-4、1.3×10-4,平均相對誤差為29.13%、29.62%,相關(guān)指數(shù)R2的值分別為0.67、0.72。而組合模型經(jīng)過PSO優(yōu)化和BP神經(jīng)網(wǎng)絡(luò)的修正后,能夠大大地提升模型性能,降低預測誤差,各項指標均優(yōu)于單一模型,其均方誤差為4.2×10-5,平均相對誤差為13.32%,相關(guān)指數(shù)R2值達到0.84。綜上,組合模型對信息的捕捉較全面,總體預測穩(wěn)健性較好,可以大大地降低平均誤差,提升模型的預測精度。
通過PSO算法優(yōu)化SVM模型參數(shù),并使用BP神經(jīng)網(wǎng)絡(luò)對模型結(jié)果進行殘差修正,建立了PSO-SVM+BP神經(jīng)網(wǎng)絡(luò)余氯預測模型,找到多個因素與管網(wǎng)末端余氯的關(guān)系,通過不同模型產(chǎn)生的誤差進行模型性能的對比分析。發(fā)現(xiàn)該模型可以實現(xiàn)對管網(wǎng)末端余氯量的預測,有效地簡化了余氯在管網(wǎng)中衰減變化的復雜非線性關(guān)系,克服了SVM模型參數(shù)選擇的盲目性,利用BP網(wǎng)絡(luò)對結(jié)果進行優(yōu)化,進一步提升了預測的精度和模型運行的穩(wěn)健性。結(jié)果表明,該模型具有良好的預測性能,能夠使供水企業(yè)更早地發(fā)現(xiàn)水質(zhì)惡化的趨勢,及時采取相關(guān)措施,在控制末端水水質(zhì)的前提下,降低消毒副產(chǎn)物的產(chǎn)生,并為二次消毒點的選取提供參考。