黃俊革, 劉 宇, 王 瑞, 盧思同
(上海應(yīng)用技術(shù)大學(xué) 城市建設(shè)與安全工程學(xué)院, 上海 201418)
在互聯(lián)網(wǎng)的熱潮之下,工業(yè)企業(yè)的生產(chǎn)經(jīng)營正朝著信息化、網(wǎng)絡(luò)化、智能化的方向邁進,但由于頂層設(shè)計的缺少和一些歷史原因,導(dǎo)致“數(shù)據(jù)煙囪”、“信息孤島”[1]和碎片化的應(yīng)用接連出現(xiàn), 無法為生產(chǎn)經(jīng)營提供可靠的數(shù)據(jù)信息支撐[2]。煤礦企業(yè)也不例外,單就已有的與安全監(jiān)測相關(guān)的業(yè)務(wù)系統(tǒng)就有很多種,各式各樣、相互獨立。目前,企業(yè)紛紛進行信息系統(tǒng)的升級和整合,隨著新興系統(tǒng)的需求越來越個性化、產(chǎn)品的生命周期越來越短[3],選用一個易擴展、強伸縮性和高可用的系統(tǒng)架構(gòu)是不可避免的。當(dāng)前較流行的微服務(wù)架構(gòu)能夠?qū)F(xiàn)有的系統(tǒng)進行整合,構(gòu)建一個靈活、穩(wěn)健、高效的系統(tǒng)平臺,將信息管理與自動監(jiān)測等各業(yè)務(wù)系統(tǒng)統(tǒng)一集成,解決煤礦安全監(jiān)測系統(tǒng)分散獨立、數(shù)據(jù)信息利用率低等問題。從而,設(shè)計大數(shù)據(jù)平臺,利用海量監(jiān)測數(shù)據(jù)進行分析與挖掘,并將機器學(xué)習(xí)算法引入系統(tǒng),以神經(jīng)網(wǎng)絡(luò)算法為例,對數(shù)據(jù)進行預(yù)測、分類和識別,實現(xiàn)及時報警、安全隱患的識別與相應(yīng)處理措施的推薦。
微服務(wù)架構(gòu)的目標(biāo)是將一個復(fù)雜的應(yīng)用,拆分成多個微服務(wù)模塊,每個模塊的單一業(yè)務(wù)功能對外提供服務(wù),模塊間耦合度降低;每個模塊使用自己的框架、開發(fā)語言,彼此之間互不干擾,各自獨立編譯、部署和運行;同時各模塊間通過標(biāo)準(zhǔn)接口互相通信彼此協(xié)作,組合為一個整體,對外提供完整的服務(wù)[4]。由于每個模塊都獨立部署,各自擁有互不干擾的內(nèi)存空間,模塊之間無法直接調(diào)用,所以需要借助消息網(wǎng)關(guān)為所有微服務(wù)提供通信訪問服務(wù)。
結(jié)合微服務(wù)的特性,將煤礦中原有的監(jiān)測監(jiān)控、檢查填報等業(yè)務(wù)和一些通用的信息系統(tǒng)模塊劃分成一組組小服務(wù),各服務(wù)間通過基于HTTP的RESTful風(fēng)格的API或消息驅(qū)動作為調(diào)用方式進行通信協(xié)作。系統(tǒng)所包含的多個子模塊共同構(gòu)成了微服務(wù)的架構(gòu)體系。系統(tǒng)的基礎(chǔ)架構(gòu)如圖1所示。

圖1 系統(tǒng)的基礎(chǔ)架構(gòu)
此系統(tǒng)分為前端、業(yè)務(wù)層和數(shù)據(jù)平臺3層,前端主要是用戶通過指定的訪問地址經(jīng)過服務(wù)網(wǎng)關(guān)進行調(diào)用,與業(yè)務(wù)層進行交互;業(yè)務(wù)層提供和實現(xiàn)各個業(yè)務(wù)接口,其中包含了微服務(wù)的注冊中心和消息服務(wù)中間件;數(shù)據(jù)平臺則主要是對數(shù)據(jù)進行存儲、分析和挖掘,除數(shù)據(jù)庫集、大數(shù)據(jù)平臺外,還包括機器學(xué)習(xí)等智能模塊。前端調(diào)用和業(yè)務(wù)層主要基于Spring Cloud實現(xiàn),提供服務(wù)注冊、服務(wù)發(fā)現(xiàn)、負(fù)載均衡等功能。讓系統(tǒng)在進行橫向擴展時,能夠擁有更多的計算資源,其中某一臺服務(wù)器負(fù)載較大,會將新的需求轉(zhuǎn)發(fā)到其它空閑的機器上。當(dāng)某個服務(wù)發(fā)生故障時,則會觸發(fā)熔斷機制向服務(wù)調(diào)用方返回結(jié)果標(biāo)識錯誤,及時釋放線程,避免故障在分布式系統(tǒng)中蔓延。各模塊間通過消息中間件的高效、可靠的消息傳遞機制,進行數(shù)據(jù)交流,將業(yè)務(wù)層與數(shù)據(jù)平臺連接起來,實現(xiàn)不同平臺之間的通信。
集成煤礦生產(chǎn)環(huán)境的檢測與監(jiān)測數(shù)據(jù)和基于機器學(xué)習(xí)的深入挖掘應(yīng)用,需要在大數(shù)據(jù)平臺上實現(xiàn)。該平臺主要使用了Hadoop中強大的數(shù)據(jù)管理工具——HDFS和基于類SQL快速實現(xiàn)簡單的 MapReduce 統(tǒng)計工具——Hive[5]進行數(shù)據(jù)倉庫的建設(shè)和各類監(jiān)測信息的數(shù)據(jù)分析。同時,使用了基于Hadoop的數(shù)據(jù)采集系統(tǒng)Flume[6],對報警信息、系統(tǒng)日志等數(shù)據(jù)進行實時收集。最后通過消息服務(wù)中間件使其與數(shù)據(jù)庫集群、業(yè)務(wù)系統(tǒng)、機器學(xué)習(xí)模塊進行關(guān)聯(lián),實現(xiàn)分析數(shù)據(jù)的及時展示和訪問,讓機器學(xué)習(xí)不僅能夠離線分析建模,還可以在線預(yù)測推薦,形成了消息驅(qū)動的機器學(xué)習(xí)服務(wù)[7],如圖2所示。

圖2 消息驅(qū)動的機器學(xué)習(xí)服務(wù)
機器學(xué)習(xí)主要分為建模和預(yù)測2個模塊,建模需要對大量歷史數(shù)據(jù)進行學(xué)習(xí),消息服務(wù)中間件收到消息后,同時發(fā)送給該模塊,該模塊也通過大數(shù)據(jù)平臺抽取和實時監(jiān)控等形式進行數(shù)據(jù)的收集,然后進行學(xué)習(xí)、建立模型;預(yù)測模塊收到信息后,同建模模塊執(zhí)行相同的預(yù)處理,再執(zhí)行算法,得到結(jié)果;最后,將結(jié)果生成給消息中間件,供其他微服務(wù)使用。
煤礦安全監(jiān)測系統(tǒng)中的數(shù)據(jù)是由傳感器和人工檢查填報提供的,系統(tǒng)在機器學(xué)習(xí)模塊建模前需要進行數(shù)據(jù)的預(yù)處理。首先是數(shù)據(jù)集成,收集各業(yè)務(wù)系統(tǒng)實時的監(jiān)測數(shù)據(jù)、生產(chǎn)消息和Flume從指定數(shù)據(jù)庫中定時抽取的信息等。其次,借助Hive在大數(shù)據(jù)平臺進行數(shù)據(jù)的清洗與統(tǒng)計。數(shù)據(jù)清洗需要在庫中建立外部表,清洗完成后將結(jié)構(gòu)存入到的分區(qū)表中,加快之后的統(tǒng)計分析工作。數(shù)據(jù)統(tǒng)計主要是通過HiveQL進行,該部分的執(zhí)行過程是:通過JDBC接口將HiveQL提交到Hive-Server2服務(wù),通過解釋、編譯完成查詢計劃,再通過執(zhí)行器處理完成的計劃,最后由MapReduce調(diào)用、執(zhí)行。最后,進行數(shù)據(jù)的變換與規(guī)約,提取出預(yù)處理后的建模樣本數(shù)據(jù),等待訓(xùn)練。
主要以利用通風(fēng)監(jiān)測系統(tǒng)中的割煤工作面瓦斯?jié)舛阮A(yù)測、超限識別為例。由于瓦斯?jié)舛瘸薜囊延邢鄳?yīng)的國家規(guī)定和傳感器的設(shè)定,并且實時性要求高,因此選用RBF神經(jīng)網(wǎng)絡(luò)[8],使用前一班次的數(shù)據(jù)作為樣本進行訓(xùn)練,監(jiān)測時間點和瓦斯?jié)舛茸鳛榈谝粚?輸入層)屬性。設(shè)xi∈Rn(i=1,2,…,n)為RBF神經(jīng)網(wǎng)絡(luò)的輸入,y∈R為RBF神經(jīng)網(wǎng)絡(luò)的輸出,如圖 3所示。

圖3 RBF神經(jīng)網(wǎng)絡(luò)
設(shè)
(1)
式中,gi(x)為隱含層的函數(shù)——徑向基函數(shù)。設(shè)徑向基函數(shù)為
(2)
式中:μi為徑向基函數(shù)的中心;σi為徑向基函數(shù)的寬度。
在訓(xùn)練時,隱含層到輸出層之間的權(quán)值ωi可通過最小二乘法直接計算得出;σi、μi可以通過學(xué)習(xí)來確定,也可以選取系統(tǒng)預(yù)設(shè)的規(guī)定值。系統(tǒng)中設(shè)置了對參數(shù)進行尋優(yōu),發(fā)現(xiàn)含2個隱含層的神經(jīng)網(wǎng)絡(luò)訓(xùn)練效果較好。如果預(yù)測出瓦斯?jié)舛燃磳⒊蓿梢赃M入安全識別模型中,進行即將發(fā)生的安全事故進行識別,并推薦相應(yīng)的處理措施。
安全隱患的識別與處理措施的推薦選用BP神經(jīng)網(wǎng)絡(luò)模型進行。BP神經(jīng)網(wǎng)絡(luò)是神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)中的經(jīng)典算法,與RBF非常相似。但RBF是局部逼近網(wǎng)絡(luò),學(xué)習(xí)速度快,在非線性函數(shù)逼近、時間序列分析、數(shù)據(jù)分類等領(lǐng)域顯示出更強的優(yōu)勢,能夠滿足工作面瓦斯的實時預(yù)測,而預(yù)測報警后的安全隱患識別與處理措施推薦需要對庫中存在的安全案例進行大規(guī)模的學(xué)習(xí),才能得出最為貼切的結(jié)果和意見。BP與RBF神經(jīng)網(wǎng)絡(luò)模型都是前向傳輸,但是BP的最大特點是逆向反饋,因為輸出層的值與真實的值會存在誤差,所以用均方誤差來衡量預(yù)測值和真實值之間的誤差。均方誤差公式為
(3)
式中,aj為實際輸出。
BP神經(jīng)網(wǎng)絡(luò)模型識別安全隱患的示意圖,如圖4所示。在訓(xùn)練時,選取了候選安全隱患的超限時間點、監(jiān)測位置、濃度、總超限時間、總正常時間、平均超限時間、超限次數(shù)、濃度波動等8個特征作為網(wǎng)絡(luò)的輸入。對于給定的輸出,對不同隱患類型、具體事件分配了離散的代號。根據(jù)識別出的隱患和發(fā)生的時間、地點,可以通過簡單的分類算法進行處理措施的推薦。系統(tǒng)主要是使用K-maens算法進行聚類,歸納總結(jié)出同一類安全隱患的處理措施,前提是這些措施是分條去重的,然后對其標(biāo)注與識別模型相同的代號,方便直接調(diào)取。

圖4 BP神經(jīng)網(wǎng)絡(luò)模型識別安全隱患
系統(tǒng)的及時報警實際上是基于預(yù)測模塊實現(xiàn)的,預(yù)測出的濃度超限時,會分級進行報警,必要時會在報警的信息中說明安全隱患和推薦的處理意見。例如,割煤工作面上隅角即將超限,模塊推薦處理方法為“設(shè)置引風(fēng)布障,向上隅角導(dǎo)風(fēng)排除瓦斯聚集”,如果該地連續(xù)或超最高閾值,推薦處理方法將上升為“停止割煤”。通過收集山西某煤礦工作面2個班次的瓦斯傳感器和人工檢查數(shù)據(jù)來訓(xùn)練和驗證,將對應(yīng)時間的次日班次的人工判斷結(jié)果與多層神經(jīng)網(wǎng)絡(luò)模型識別的結(jié)果進行對比檢驗,誤差在6%以內(nèi),能較為準(zhǔn)確地預(yù)測出之后時段的瓦斯?jié)舛取T摴δ艿膶崿F(xiàn)不僅會涉及到機器學(xué)習(xí)模塊,還會涉及到消息服務(wù)中間件和基于API的前端業(yè)務(wù)通信,但如果訓(xùn)練樣本過少,可能會造成模型訓(xùn)練不準(zhǔn)確。這里連續(xù)使用了2個班次的監(jiān)測數(shù)據(jù),驗證了該系統(tǒng)機器學(xué)習(xí)模塊中,學(xué)習(xí)與預(yù)測方式的正確性,不過通過大量的歷史數(shù)據(jù)進行模型的優(yōu)化和新算法的引入會產(chǎn)生更加積極的作用。系統(tǒng)進行報警時的截圖,如圖5所示。

圖5 及時報警
通過對系統(tǒng)的測試表明,微服務(wù)架構(gòu)可用于煤礦環(huán)境安全監(jiān)測系統(tǒng)各業(yè)務(wù)系統(tǒng)的統(tǒng)一集成,解決信息不共享、功能無互助的問題。①該體系結(jié)構(gòu)將消息中間件的可靠性和API的網(wǎng)關(guān)的易用性有效結(jié)合在一起,通過微服務(wù)中基于API的架構(gòu)形式解決業(yè)務(wù)層與前端的交互問題,通過基于消息驅(qū)動的架構(gòu)形式解決業(yè)務(wù)層與不同平臺間的數(shù)據(jù)交互問題;②不僅對業(yè)務(wù)系統(tǒng)的整合進行了設(shè)計,還為日后大數(shù)據(jù)的利用提供了方案,基于Hadoop構(gòu)建的安全監(jiān)測大數(shù)據(jù)平臺將機器學(xué)習(xí)算法引入其中,利用消息中間件實現(xiàn)機器離線學(xué)習(xí)和在線預(yù)測,實現(xiàn)了系統(tǒng)的邊用邊學(xué);③利用軟件系統(tǒng)對安全生產(chǎn)進行科學(xué)有效的管理是一項重要的系統(tǒng)工程,本研究僅提出了基礎(chǔ)的系統(tǒng)架構(gòu)、理想的系統(tǒng)模型和其中一個智能化實例的實現(xiàn),為煤礦安全監(jiān)測系統(tǒng)的智能化提供了新思路,但真正的智能化需要和大量實踐相結(jié)合,在系統(tǒng)性能保證的前提下,針對不同業(yè)務(wù)進行模型的構(gòu)建和算法的優(yōu)化。