孫振川, 張合沛, 凌美杰, 萬建軍
(1.盾構與掘進國家重點實驗室, 河南鄭州 450001; 2.鄭州大學數(shù)學與統(tǒng)計學院, 河南鄭州 450001)
隨著城市中可開發(fā)空間的減少和交通壓力的增大,地鐵成為一個城市用來緩解交通壓力的首選[1]。實際生活中,地鐵的在建數(shù)量和需求量都很大,盾構法進行地鐵建設主要是在地面以下工作,盾構機由推進系統(tǒng)支持,沿著設計路線前進,但是盾構系統(tǒng)復雜,如果姿態(tài)控制不當會導致盾構機偏離路線,出現(xiàn)蛇形軌跡等問題。這不僅僅影響盾構的掘進速度和隧道建成的精準度, 還可能引發(fā)工程事故[2-3]。 盾構的姿態(tài)控制對于快速準確的建成隧道和施工的安全性都很重要。 目前國內盾構姿態(tài)控制主要依賴司機的經驗, 但我國隧道建設需求和實際在建隧道都在不斷增長,具有豐富經驗的司機卻需要培養(yǎng)。盾構行業(yè)通過盾構姿態(tài)測量系統(tǒng)積累了大量的施工數(shù)據, 這為數(shù)據挖掘和機器學習提供了數(shù)據資源[4]。 為使地鐵工程迅猛前進,不僅需要科學技術水平的提升,更需要緊隨時代的進步進行研究[5]。盾構自動化已經成為盾構未來發(fā)展方向。本文旨在通過盾構實驗室的設備采集器提取的線路數(shù)據,對數(shù)據進行篩選清理后,用機器學習中的提升樹算法搭建XGBoost 模型, 從而得到較為合理和穩(wěn)定的姿態(tài)控制策略,為實現(xiàn)姿態(tài)控制的自動化做準備。
XGBoost(Extreme GradientBoosting) 即極致梯度提升,是陳天奇等人開發(fā)的一個開源機器學習項目[6],高效地實現(xiàn)了梯度提升決策算法,簡稱為GBDT,并進行了算法和工程上的許多改進, 被廣泛應用在Kaggle 競賽及其他許多機器學習競賽處理分類預測問題。
XGBoost 又稱極端梯度上升,它是大規(guī)模并行Boosted Tree,也是一種改進的提升樹算法[7]。 算法的核心思想是不斷地添加樹, 新添加的樹的原理是擬合上一次預測的殘差值,構造下一棵樹,添加樹的過程就是學習新函數(shù)的過程[8-9]。 簡單說,就是一個樹的預測結果表現(xiàn)不好,我們在原來樹的基礎上對誤差進行修正, 繼續(xù)生成第二棵樹模型,依次類推,下一棵樹都是建立在上一棵樹的基礎,并對之給與改進。 XGBoost 方法的目標函數(shù),可以分為兩個部分,一部分是損失函數(shù),一部分是增加的懲罰項[10],正則項用于控制模型的復雜度, 防止模型過擬合。 進一步,我們可以得到目標函數(shù),如下:
正則項一般需要我們根據經驗來定義, 認為其與樹的結構復雜度、葉節(jié)點個數(shù)和葉權值有關。
由上式我們可知,提升第t 步(即建立第t 棵樹)時的損失函數(shù)為:
根據這種求損失函數(shù)的方法,逐步迭代,使損失函數(shù)達到最小。
控制盾構掘進姿態(tài), 使得掘進線路保持正常的過程叫做盾構姿態(tài)控制[11]。姿態(tài)控制主要靠盾構的千斤頂來實現(xiàn)圖1 所示,在這個過程中,盾構通過改變千斤頂桿行程差來改變盾構的當前姿態(tài), 千斤頂呈環(huán)形布置并通過液壓油缸來控制,液壓油缸一般為了方便控制,會為上下左右四組(圖A 區(qū)、B 區(qū)、C 區(qū)和D 區(qū)),然后對每組油缸進行單獨控制。
圖1 盾構千斤頂布置及分區(qū)
實驗室設備采集器提取福州地鐵5 號線1 標1 工區(qū)荊溪站~中間風井區(qū)間右線、福州地鐵5 號線1 標1 工區(qū)荊溪站~中間風井區(qū)間左線、洛陽市軌道交通2 號線2 標3 工區(qū)九~博區(qū)間右等8 條泥水線路, 之后線路分別用線路1、線路2……線路8 來表示。 提取到的線路數(shù)據含有四十多個參數(shù),這些參數(shù)來自盾構的各個組件,描述了泥水盾構的掘進狀態(tài),表1 展示了泥水盾構的部分屬性。
表1 部分數(shù)據屬性
泥水盾構機主要是通過調整油缸壓力進而來調整姿態(tài)[12]。 通過查閱資料和咨詢相關專家,為了更好地建立模型我們需要篩去與目標值無關的屬性, 構造與目標值相關的新屬性。 考慮當前司機的歷史操作數(shù)據,選取了當前時刻的前一個和前兩個時刻的油缸壓力值作為參數(shù),同時考慮油缸壓力隨時間的變化率。盾構通過AC 組油缸控制水平方向壓力、BD 組油缸控制垂直方向壓力, 通過讓兩組油缸產生壓力差控制盾構姿態(tài),基于此構造了AC 組位移差和BD 組位移差[13]。由于土倉和注漿壓力經常會出現(xiàn)部分屬性缺失, 所以將部分壓力屬性值求平均構造了新的屬性。 為了更準確的描述盾構狀態(tài),通過地鐵線路規(guī)劃圖得到線路的上下坡、左右轉信息,將其也作為構建模型的參數(shù)。 至此用來建立XGBoost 模型的參數(shù)分別為100301變化率、100302 變化率、100303 變化率、100304 變化率、100002、100003、100004、100005、101403、101404、100301、100302、100303、100304、100030、100031、100032、100033、注漿壓力均值、 泥水倉壓力均值、100030-1、100031-1、100032 -1、100033 -1、100030 -2、100031 -2、100032 -2、100033-2、AC 位移差、DB 位移差、AC 壓力差、DB 壓力差、水平偏差和、垂直偏差和、轉向、轉向半徑、上下坡、標貫值。 部分參數(shù)線路數(shù)據見表2。
表2 部分參數(shù)線路數(shù)據
對數(shù)據進行建模要使用優(yōu)質的數(shù)據, 所以要對數(shù)據進行預處理。我們首先剔除缺少參數(shù)(含有空值)的數(shù)據。再具體地觀察數(shù)據后,發(fā)現(xiàn)數(shù)據中總存在一些異常點,這可能是在設備測量和數(shù)據傳輸過程產生的。 采取剔除小于各屬性值0.025 分位點或大于各屬性值0.975 分位點的操作對數(shù)據進行篩選,發(fā)現(xiàn)數(shù)據中的噪聲減小,異常值數(shù)量較少,且數(shù)據分布更集中,見圖2。
圖2 數(shù)據篩選后四組油缸壓力
將數(shù)據預處理后,每條線路的數(shù)據量會大幅減少,這會導致訓練得到的模型學習能力不足,模型泛化能力差。所以為增加數(shù)據量,提高模型預測正確率,我們將不同線路多個區(qū)間的數(shù)據進行融合, 提高數(shù)據量使模型訓練數(shù)據足夠多。為減少不同線路融合帶來的數(shù)據差異,將多條線路合并后再按地質情況分為軟土、巖石和卵石三類。因為在不同的地質情況下,盾構機的各參數(shù)值會差別很大,導致油缸壓力也會有明顯差異, 按照不同的地質情況建??梢苑乐箶?shù)據之間差異太大,使預測相對更加合理。
選取了兩條線路比較四組油缸壓力的最大值、 最小值、平均數(shù)、標準差、中位數(shù),見表3、表4。
表3 線路2 油缸壓力描述統(tǒng)計
表4 線路5 油缸壓力描述統(tǒng)計
由上表數(shù)據的描述性分析結果可以看出,兩條線路數(shù)據的各個統(tǒng)計指標值均存在明顯差異,將數(shù)據進行融合會使數(shù)據混亂, 這就要求我們選取的推薦區(qū)間不應該太大。所以在融合數(shù)據后, 選取四組油缸壓力中的最小0.025 分位點和最大0.975 分位點, 然后比較盾構設備設計的油缸壓力最大值和融合數(shù)據中油缸壓力實際最大值來設置上限值,至此得到了油缸壓力上下界限值。 對上下界長度進行均勻分割得到十一個推薦區(qū)間, 軟土地質的線路劃分水平見表5,我們可以將軟土地質線路的目標預測值轉化為類別預測,卵石和巖石地質水平劃分類似。
表5 軟土劃分水平
至此,數(shù)據準備工作已經完成,可以搭建XGBoost 模型進行建模。
用篩選好8 條泥水線路, 超過100 萬條優(yōu)質數(shù)據來建立模型, 數(shù)據量已經足夠大可以保證模型進行充分的學習。
盾構地鐵線路的區(qū)間規(guī)劃以環(huán)為單位, 每環(huán)長度在1.5 米左右,整個隧道長度可能會有幾萬環(huán)。 將每條線路數(shù)據進行合并后, 再根據線路每環(huán)對應的地質信息將其分為軟土,巖石,卵石三類。 在每一類地質下再根據標貫值這一屬性將每一類地質再分為三個水平。 如將軟土地質根據標貫值分為三個水平, 標貫值小于6.61 為第一水平,記為under_6.61;標貫值大于等于6.61 小于10.64 為第二水平, 記為under_10.64; 大于等于10.64 為第三水平,記為under_max。 將每一類地質再細分三個水平便于很好地建模,使模型預測結果更好。
將所處同一地質, 同一劃分水平的線路數(shù)據進行匯總后, 從每一條線路抽取70%的數(shù)據作為訓練集, 剩下30%數(shù)據作為測試集, 然后將所有的線路匯總成測試集和訓練集。 運用python 中的XGBoost 模塊來構建XGBoost 模型,為了提高模型的準確率,需要對模型的主要參數(shù)進行調試,選擇出較好的參數(shù)值。損失函數(shù)選擇多分類的交叉熵損失函數(shù),學習率的取值范圍在0~1,經過不斷調試選擇學習率為0.3,選取0.08 為步長值,太大會導致模型無法收斂, 太小又會使模型收斂太慢訓練時間過長。樹的個數(shù)為80 棵,防止模型過擬合,樹的層數(shù)為6 層。
模型建立完成以后,我們就可以利用訓練好的模型對測試集數(shù)據預測。如果測試線路的數(shù)據量少于10 萬條,由于數(shù)據量太少,不對該條線路進行預測,進而來觀察測試數(shù)據的油缸壓力值預測的推薦區(qū)間,并且用輸出的每條線路的混淆矩陣和正確率來判斷線路模型預測效果。
表6~表8 給出部分地質水平下訓練完成后得到的線路油缸壓力預測正確率。
表7 軟土under_6.61
表8 巖石under_max
由此可知, 預測線路的四組油缸壓力正確率都比較高,幾乎都在0.9 以上,說明模型效果符合預期。
以軟土under_10.64 水平中的一條線路為例, 查看其A 組油缸壓力的混淆矩陣,更加清晰地查看線路預測結果的情況。其它線路預測結果類似,得到的準確率都比較高。
表9 線路1 A 組油缸壓力混淆矩陣
本文以正在施工的地鐵線路實時數(shù)據為輸入, 利用所構建的XGBoost 模型來預測盾構機的各組油缸壓力值,輸出目標參數(shù)的建議區(qū)間,并推送至盾構司機操控界面,讓司機根據此推薦值來調整盾構的姿態(tài)。 上線線路南京地鐵7 號線D7-TA02 標七工區(qū)莫愁湖站~清涼山站區(qū)間右線的四組油缸壓力測試結果正確率分別為0.91,0.87,0.94,0.90。 模型投入上線,將預測結果和司機的司機操作值進行對比,發(fā)現(xiàn)模型的準確率較高,則就可以認為模型已經充分的學習了數(shù)據并給出了合理的推薦值。
地鐵盾構掘進施工地質情況和施工環(huán)境復雜, 是影響盾構隧道施工質量的重要因素[14]。 盾構掘進過程中出現(xiàn)的姿態(tài)問題會影響整條隧道的質量[15]。在XGBoost 方法強大的數(shù)學理論支持下,我們將其方法運用到對地鐵線路盾構機油缸壓力的預測上,并對所建立的模型進行實驗測試及結果分析,得出不同地質水平下的優(yōu)質數(shù)學模型和結果。但該模型建模時使用的泥水數(shù)據較少,而且只來自四個城市, 希望以后能夠使用來自多個城市的多條線路數(shù)據來優(yōu)化此模型,增大模型的泛化能力,讓泥水線路用此模型預測都能得到較好的預測結果。