劉 斌,周 迅,張 曾,陳鏡先
(中國水利水電第七工程局有限公司,成都 610213)
混凝制藥技術是自來水廠中常規使用的一種凈水工藝,也是一個非常復雜的過程,影響該過程的物理和化學因素非常多,特別是原水的水質,比如水體的溫度、pH 值、濁度、耗氧量、天然有機物、藻類、電導率等,這些因素之間還存在相互影響,這就加大了投藥量精準計算的難度。出水濁度優劣的關鍵因素之一就是混凝劑投加量是否準確,投加量較多或較少都會影響到膠體雜質脫穩效果。而投藥量的多少不僅關系到持續凈水過程和出水質量,還會影響到水廠運行成本。
文獻[1]提出最早的水質預測概念,在實際生產中,使用的預測方法有機理模型預測[2]、回歸分析法[3-6]、人工神經網絡等,但是機理模型計算過程復雜,且普適性不高,回歸分析法又難以真正分析出混凝復雜的非線性過程,很難得到高精度的模型。人工神經網絡是一種大數據時代興起的非線性回歸技術,文獻[7]利用水廠數據,以水質各項指標數據為輸入,建立了基于前饋神經網絡的混凝控制系統;文獻[8]第一次建立了神經網絡投藥量預測模型;文獻[9-10]采用多層前饋神經網絡與PID 控制系統、回歸模型相結合,得到水廠模擬模型;文獻[11-12]采用模糊控制(Fuzzy)與BP、PID 控制系統相結合的方法來提高預測的準確率;文獻[13]采用Elman 神經網絡對武漢市宗關水廠七期進行投藥混凝模型建立;文獻[14]基于改進煙花算法對BP 網絡進行優化得到混凝投藥量預測模型。
現有神經網絡算法基本都是利用歷史原水水質數據、歷史投藥數據和投藥后的出廠水水質數據建立模型預測投藥量,運行階段使用原水水質數據和要求達到的衛生標準對投藥量進行預測,再按預測的投藥量進行自動投加。這類方法主要有2 個問題,一個問題是使用的出廠水水質要求大多只使用濁度一個指標,但自來水廠出水水質有相應的國家法規進行規定(《生活飲用水衛生標準》GB5749-2006 和《城市供水衛生標準》CJ/T206-2005),檢測內容包括濁度、氯化物、pH 值等若干指標,若僅考慮濁度作為投藥的檢測標準顯然是不合適的;第二個問題即使在建模時考慮了多個出廠水水質指標,卻沒有在算法中驗證按預測的投藥量進行投加能夠保證多個水質指標均合格,只能在實際運行中進行實驗。針對這2 個問題,本文提出一種兩段式神經網絡模型,使用多個出廠水衛生標準來訓練模型,同時用出廠水水質要求對投藥量預測網絡模型參數進行二次調優,在保證出廠水質的基礎上實現投藥量自動預測。
原始的RNN 由于梯度消失、梯度爆炸導致后面節點相對于跨度很大的前面時間節點的信息感知能力太弱,文獻[15]中提出長短記憶網絡LSTM,通過門控單元很好地解決了RNN 的長期依賴問題,其主要原理是使用門機制對信息的流通和控制進行控制,若干個LSTM 單元按時間步方向展開,或者按深度展開可以得到不同類型的LSTM 網絡。
Seq2Seq 是RNN 的一個重要變種,是一種廣泛用于機器翻譯和不等長序列網絡的方法,最早是由Google 工程師在2014年提出。其輸入是一個長為n的序列,輸出是一個長為m 的序列,主要特點是n和m 可以不相等,并且m 可以是不定長的,本文只使用m 定長的情況。Seq2Seq 是Encoder-Decoder 結構的網絡,在Encoder 中,將序列轉換成一個固定長度的向量,然后通過Decoder 將該向量轉換成想要的序列輸出出來。Encoder 和Decoder 一般都是RNN,通常為LSTM 或者GRU。
如圖1 所示,完整的模型由Net1 和Net2 兩部分組成。其中Net1 為投藥量預測網絡,Net2 為出廠水水質預測網絡,訓練階段兩個網絡首先進行獨立訓練,然后進行聯合訓練。最終運行階段只使用Net1 進行投藥量預測。

圖1 兩階段投藥量預測模型Fig.1 Two-stage dosage prediction model
設第i 時刻原水水質特征為InWi,投藥量為Mi,出廠水水質特征為OutWi(由于原水在自來水廠中加工需要一定的時間,因此選用i 時刻1 h 后的出廠水水質來定義OutWi),其中InWi,OutWi均為向量,包含若干個需要考慮的水質指標,原水指標和出廠水指標不一定相同。
Net1 使用單層LSTM 網絡。輸入特征為[InWi,OutWi](i=t+1,…,t+n),標簽為Mt+n,即t+1 到t+n-1時刻總時間步長為n 的水質時序數據預測第t+n 時刻的投藥量。
在單獨訓練階段,使用歷史投藥量作為標簽,均方誤差為

作為損失函數對網絡進行訓練,訓練水質與投藥量之間的關系映射。
Net2 使用Seq2Seq 網絡,其中的RNN 單元使用LSTM 單元。輸入特征為[InWi,Mi](i=t+1,…,t+n),標簽為OutWt+n,即t+1 到t+n-1 時刻總時間步長為n 的原水水質數據和投藥量時序數據預測第t+n 時刻的出廠水水質特征。
在單獨訓練階段,使用歷史出廠水水質作為標簽,均方誤差為

作為損失函數對網絡進行訓練,構建投藥量與水質之間的關系映射(其中‖·‖2表示向量的歐氏模長,d 為出廠水水質特征OutWi的維數)。
將Net1 與Net2 進行拼接,其中Net1 的輸入接入Net2 輸入的最后一個時刻,輸入Net1 的出廠水水質數據設為常數向量,每個分量按照《生活飲用水衛生標準》和《城市供水衛生標準》要求設置數值。衛生標準分為兩類,一類是范圍標準,例如:標準要求出廠水pH 值為6.5~8.5,則將輸入數據設置為7;一類是上限標準,例如:出廠水濁度不超過1,則將輸入數據設置為比1 略小的數,比如0.9。Net2輸出的標簽也統一設置為該常數值。
由于訓練時兩個網絡均使用均方誤差進行訓練,預測結果將圍繞標簽上下波動,但是在實際運行時,投藥量只需要使出廠水水質滿足衛生標準即可,對于范圍類型的衛生標準,這不會有問題,但是對于上限類型的衛生標準,這種方式就不太合適,例如出廠水濁度要求不超過1,但是在原水水質本來就很好,濁度遠小于1 的時候,就不能以0.9 為目標進行訓練,因此需要專門設計目標函數。本文算法在聯合訓練階段的目標函數按以下標準設計:①范圍類指標:使用均方誤差;②上限類指標:預測值大于標簽時計算平方并乘上一個罰系數,小于標簽時誤差取0。按此標準得到目標函數:

式中:bound 代表范圍類型指標;top 代表上限類型指數;大于0 時λj取一個大于0 的整數作為罰系數,小于0 時λj取0。
訓練分為三步: 首先凍結Net1 的參數,僅對Net2 的參數進行優化;然后凍結Net2 的參數,調小學習率,僅對Net1 的參數進行優化;最后凍結Net1和Net2 的Encoder 部分參數,再次調不學習率,僅對Net2 的Decoder 部分參數進行優化。
經過聯合訓練,共同調參,使用實際出廠水質需求對投藥量預測網絡進行調優,可以使投藥量預測網絡在運行階段預測結果更可靠。
中電建夾江青衣水廠位于天府之國成都平原樂山市夾江縣青衣江畔,是近年新建的一家小型自來水廠,主要為夾江縣城提供生活自來水,絮凝工藝投加產品為PAC。試供水階段,水廠PAC 加投方式為根據原水水質指標按照PAC 耗藥量對照表計算得到,費時費力費藥。水廠致力于實現全平臺智慧水務,建設自來水自動化加工體系,絮凝自動加藥系統也是水廠建設的重要部分。
數據采集于青衣水廠2020年07月24日~2021年08月22日,原始數據粒度為分鐘,總共包含13172838 條數據,其中包括進廠水水質特征數據:pH 值,溶解氧,高錳酸鹽指數,氨氮,總磷,生物毒性,進廠水水流量;出廠水水質特征數據:出廠水pH 值,出廠水濁度,出廠水余氯以及其他數據。另有水廠運行期間按照PAC 耗藥量對照表計算出的投藥數據。
原始水質數據粒度為分鐘,數據量非常大,但是投藥數據沒有這么小的粒度,因此將原始水質數據按小時進行平均,并將相同時間的不同特征數據整理成一條(其中所有出廠水水質數據與前一小時其他數據進行匹配),最終獲得9441 條小時粒度的數據。基于3 倍標準差原則對數據進行識別,并用滑動均值法對異常數據進行修正,對缺失數據進行填充。
將歷史數據2020年7月24日到2021年6月30日作為訓練集,2021年7月1日到2021年8月22日作為測試集。
對于訓練模型使用的三類特征。InW 中選取pH值,溶解氧,高錳酸鹽指數,氨氮,總磷,生物毒性,進廠水水流量:OutW 中選取出廠水pH 值,出廠水濁度,出廠水余氯;M 為PAC 投加量。
圖2~圖5 分別為測試集上4 個指標的預測結果。

圖2 出廠水pH 值預測結果Fig.2 Prediction of pH value of factory water

圖3 出廠水濁度預測結果Fig.3 Prediction of Turbidity of factory water

圖4 出廠水含氯量預測結果Fig.4 Prediction of chlorinity of factory water

圖5 PAC 投加量預測結果Fig.5 Prediction of adding amounts of PAC
根據預測投加量與測試集實際投加量對比,可以估算出如表1 所示節藥效果。可見,該加藥量預測模型有明顯的節藥效果。

表1 智能加藥效果估算Tab.1 Evaluation of intelligent dosing effect
以實現青衣水廠PAC 智能加藥為目標,本文以LSTM 和Seq2Seq 為基礎,構建了兩段式投藥量預測模型。通過以出廠水衛生標準為標簽,分階段訓練模型,用出廠水質量指標對投藥預測網絡參數進行二次調優,使模型預測的投藥量既符合投藥量與水質特征的映射關系,又能保證按預測得到的投藥量進行加投后出廠水的水質能夠達到出廠標準。