劉楚喬,吳賢國(guó),秦文威,王丙苗,陳世杰,翁 順
(1.武漢地鐵集團(tuán)有限公司,武漢 430030; 2.華中科技大學(xué)土木工程與力學(xué)學(xué)院,武漢 430074)
近年來(lái),為了緩解大城市地上交通擁堵、運(yùn)載能力不足等問(wèn)題,城市軌道交通得到了高速的發(fā)展。但是,由于受周邊環(huán)境、自身負(fù)荷、列車(chē)運(yùn)營(yíng)等方面的影響,其在運(yùn)營(yíng)周期內(nèi)將會(huì)發(fā)生各種病害,這些病害如果不能被及時(shí)發(fā)現(xiàn)并進(jìn)行評(píng)估與維修,將有可能威脅公眾的生命財(cái)產(chǎn)安全。為了確保城市軌道交通地下結(jié)構(gòu)在運(yùn)營(yíng)期的安全與穩(wěn)定,除了需要對(duì)其進(jìn)行長(zhǎng)期的監(jiān)測(cè),實(shí)時(shí)掌握其結(jié)構(gòu)性能變化,并進(jìn)行結(jié)構(gòu)整體健康評(píng)估外,日常的管理養(yǎng)護(hù)工作也必不可少。因此,研發(fā)一套城市軌道交通運(yùn)營(yíng)階段結(jié)構(gòu)安全監(jiān)測(cè)與管養(yǎng)系統(tǒng),具有重要的實(shí)用價(jià)值與意義。
關(guān)寶樹(shù),姜松湖等[1]結(jié)合隧道維修養(yǎng)護(hù)的基本經(jīng)驗(yàn),匯集了我國(guó)隧道管養(yǎng)專(zhuān)家的知識(shí)和經(jīng)驗(yàn),通過(guò)建立知識(shí)庫(kù)的方法,開(kāi)發(fā)并研制了鐵路隧道病害診斷專(zhuān)家系統(tǒng)(TDD)。日本國(guó)鐵開(kāi)發(fā)的隧道監(jiān)測(cè)養(yǎng)護(hù)專(zhuān)家系統(tǒng)是由日本鐵道綜合技術(shù)研究所內(nèi)的主機(jī)和分散在各現(xiàn)場(chǎng)微機(jī)終端構(gòu)成的,終端的功能包括輸入病害前置條件、評(píng)價(jià)健康狀態(tài)及提示人工巡檢項(xiàng)目[2,3]。王波等[4]以廈門(mén)翔安海底隧道作為研究背景,對(duì)處于多因素作用下的海底運(yùn)營(yíng)階段隧道的結(jié)構(gòu)安全性評(píng)價(jià)進(jìn)行研究,開(kāi)發(fā)設(shè)計(jì)了海底隧道維修養(yǎng)護(hù)數(shù)據(jù)庫(kù)管理系統(tǒng)、結(jié)構(gòu)安全評(píng)價(jià)系統(tǒng)以及計(jì)算機(jī)軟件系統(tǒng),為海底運(yùn)營(yíng)隧道安全提供技術(shù)支持。而基于Jess(Java expert system shell)的專(zhuān)家系統(tǒng)開(kāi)發(fā)語(yǔ)言則是眾多人工智能技術(shù)的一種[5],丁鼎等[6]將基于Jess的智能系統(tǒng)成功運(yùn)用于礦井的通風(fēng)設(shè)計(jì)中,該系統(tǒng)能對(duì)故障進(jìn)行快速高效的識(shí)別分析,對(duì)減少礦井的事故發(fā)生、保障礦井安全具有較大的意義。陸耀華等[7]提出了一種使用Jess的開(kāi)發(fā)方法,對(duì)提高專(zhuān)家系統(tǒng)效率具有較大作用,并對(duì)其中的各項(xiàng)技術(shù)進(jìn)行了詳細(xì)的解釋,經(jīng)過(guò)驗(yàn)證證明此方法的有效性。王溪波等[8]分析了Jess的主要特點(diǎn)和Web的主流開(kāi)發(fā)技術(shù),給出了將Jess嵌入Java程序這一開(kāi)發(fā)基于Web的專(zhuān)家系統(tǒng)的方法,并使用該方法設(shè)計(jì)一個(gè)大學(xué)生心理測(cè)試專(zhuān)家系統(tǒng),用系統(tǒng)的正常運(yùn)行證明了提出方法的可行性和有效性。李存岑等[9]開(kāi)發(fā)基于JESS和J2EE的自動(dòng)扶梯安全檢驗(yàn)專(zhuān)家系統(tǒng),解決自動(dòng)扶梯安全檢驗(yàn)項(xiàng)目的安全風(fēng)險(xiǎn)無(wú)法量化,導(dǎo)致檢驗(yàn)結(jié)論出現(xiàn)偏差的問(wèn)題,經(jīng)過(guò)實(shí)際應(yīng)用證明了該系統(tǒng)的準(zhǔn)確性和可行性。目前,Jess專(zhuān)家系統(tǒng)開(kāi)發(fā)語(yǔ)言已較多的運(yùn)用于機(jī)械工程、環(huán)境工程等領(lǐng)域的維修決策專(zhuān)家系統(tǒng)開(kāi)發(fā)中[10-11],而對(duì)于土木工程領(lǐng)域還較少使用[12]。
為了提高管養(yǎng)工作的科學(xué)性與高效性,本研究通過(guò)調(diào)研并參考隧道管養(yǎng)規(guī)范以及專(zhuān)家經(jīng)驗(yàn)總結(jié),形成軌道交通隧道結(jié)構(gòu)病害管養(yǎng)維修措施知識(shí)庫(kù),通過(guò)使用Jess人工智能專(zhuān)家系統(tǒng)開(kāi)發(fā)語(yǔ)言,開(kāi)發(fā)具有管養(yǎng)智能決策以及管養(yǎng)經(jīng)驗(yàn)知識(shí)擴(kuò)充兩項(xiàng)子功能的軌道交通隧道管養(yǎng)決策專(zhuān)家系統(tǒng)功能模塊。
Jess(Java Expert System Shell)專(zhuān)家系統(tǒng)外殼是一種基于Rete算法的專(zhuān)家系統(tǒng)開(kāi)發(fā)語(yǔ)言[13-14]。它是由美國(guó)Sandia國(guó)家實(shí)驗(yàn)室于1995年以Java為核心技術(shù)開(kāi)發(fā)出來(lái)的一種專(zhuān)家系統(tǒng)開(kāi)發(fā)語(yǔ)言,其核心主要由事實(shí)庫(kù)、規(guī)則庫(kù)、推理機(jī)[15]三部分組成。
其中事實(shí)庫(kù)即工作存儲(chǔ)器,它將存儲(chǔ)外部傳入的事實(shí)條件,同時(shí)保存推理機(jī)中Rete算法保存的上一次模式匹配的臨時(shí)結(jié)果。
規(guī)則庫(kù)則存儲(chǔ)利用Jess開(kāi)發(fā)語(yǔ)言編寫(xiě)的各類(lèi)產(chǎn)生式規(guī)則,其中一個(gè)產(chǎn)生式規(guī)則由前件(Left-hand-side)和后件(Right-hand-side)兩個(gè)部分組成,前件為規(guī)則觸發(fā)的條件,而后件則是規(guī)則觸發(fā)后將要執(zhí)行的動(dòng)作。
推理機(jī)中內(nèi)嵌基于Rete算法的模式匹配引擎、議程以及執(zhí)行引擎三部分。模式匹配引擎將工作存儲(chǔ)器中的事實(shí)庫(kù)與規(guī)則的前件進(jìn)行模式匹配,從而確定執(zhí)行哪些規(guī)則。被激活的規(guī)則可能不止一個(gè),當(dāng)出現(xiàn)多規(guī)則同時(shí)被激活時(shí),所有被激活的規(guī)則就會(huì)以沖突組的方式進(jìn)入議程中,議程將這些觸發(fā)的規(guī)則進(jìn)行優(yōu)先級(jí)排序,將優(yōu)先級(jí)最高的規(guī)則進(jìn)行觸發(fā)。被觸發(fā)的規(guī)則進(jìn)入到執(zhí)行引擎中,執(zhí)行引擎將按照規(guī)則的后件執(zhí)行動(dòng)作,完成推理匹配。
建立基于Jess管養(yǎng)專(zhuān)家系統(tǒng)的規(guī)則庫(kù),即是將現(xiàn)行的管養(yǎng)規(guī)范和標(biāo)準(zhǔn)、專(zhuān)家經(jīng)驗(yàn)以及地方軌道交通集團(tuán)的企業(yè)標(biāo)準(zhǔn)等管養(yǎng)知識(shí)歸納整理后,使用Jess專(zhuān)家系統(tǒng)開(kāi)發(fā)語(yǔ)言,編寫(xiě)為一條條病害情況(前件)對(duì)應(yīng)病害維修措施(后件)的產(chǎn)生式規(guī)則形式。本文規(guī)則庫(kù)的建立依據(jù)現(xiàn)行管養(yǎng)規(guī)范、標(biāo)準(zhǔn)、文獻(xiàn)資料[16-18],同時(shí)調(diào)研了武漢地鐵集團(tuán)的企業(yè)管養(yǎng)手冊(cè)、管養(yǎng)工程師經(jīng)驗(yàn),將軌道交通盾構(gòu)隧道常見(jiàn)的裂縫病害、滲漏水病害、劣化剝落病害、沉降及不均勻沉降、隧道斷面變形等病害建立了相應(yīng)的管養(yǎng)規(guī)則庫(kù)。
如果需要推理出某一病害的管養(yǎng)維修措施,則首先需要描述這個(gè)病害的情況,程序才能根據(jù)病害的情況找出與其適應(yīng)的管養(yǎng)方法。隧道滲漏水的治理應(yīng)根據(jù)圍巖的水文地質(zhì)條件進(jìn)行綜合分析判斷。通常采取“以排水為主,以堵為輔,綜合運(yùn)用截、堵、排”的治水原則進(jìn)行滲漏水處置。針對(duì)不同的滲漏水形態(tài),應(yīng)采取不同的治水方法,如注漿處理、開(kāi)槽處理以及修復(fù)泄水洞或集水廊道等措施。
而在Jess管養(yǎng)專(zhuān)家系統(tǒng)的規(guī)則庫(kù)中,每條規(guī)則的前件即是各種病害措施所對(duì)應(yīng)的病害描述。因此,在依據(jù)相關(guān)軌道交通管養(yǎng)規(guī)范并同時(shí)考慮管養(yǎng)專(zhuān)家經(jīng)驗(yàn)后,形成了如圖1所示的病害描述參數(shù),并依此編寫(xiě)規(guī)則庫(kù)與相關(guān)程序。
圖2 裂縫病害管養(yǎng)規(guī)則決策樹(shù)
圖1 病害描述參數(shù)
限于篇幅,只給出裂縫病害管養(yǎng)規(guī)則庫(kù)決策樹(shù),圖2為依據(jù)上文所述的相關(guān)規(guī)范與專(zhuān)家經(jīng)驗(yàn)建立的裂縫病害管養(yǎng)規(guī)則庫(kù)決策樹(shù)。對(duì)于寬度<0.3 mm的微小裂縫病害,規(guī)則庫(kù)將根據(jù)裂縫密度與滲水情況給出針對(duì)微小裂縫的管養(yǎng)措施。由于裂縫病害[19]屬于一種次生病害,過(guò)大寬度的裂縫產(chǎn)生可能是隧道管片的沉降、管片斷面的過(guò)大變形、圍巖空洞等因素的影響而造成的,因此當(dāng)裂縫寬度達(dá)到0.3 mm時(shí),規(guī)則庫(kù)將依據(jù)《城市軌道交通隧道結(jié)構(gòu)養(yǎng)護(hù)技術(shù)規(guī)范》對(duì)寬度>0.3 mm的裂縫需要查明裂縫產(chǎn)生原因的管養(yǎng)要求,結(jié)合監(jiān)測(cè)數(shù)據(jù)與裂縫表觀(guān)病害情況,對(duì)寬度過(guò)寬裂縫推理其病因,從而給出更為準(zhǔn)確的管養(yǎng)措施。
建立的滲漏水病害管養(yǎng)規(guī)則庫(kù)決策樹(shù),首先根據(jù)滲漏水發(fā)生的位置(管片環(huán)縱縫、管片螺栓孔、管片上裂縫、管片墻面)進(jìn)行一級(jí)判別,判別后的病害將根據(jù)滲漏水的滲漏速度、滲漏范圍、滲漏水質(zhì)、螺栓孔密封圈情況等進(jìn)行二級(jí)、三級(jí)判別,最終推理出相應(yīng)滲漏水管養(yǎng)措施。
建立的劣化剝落管養(yǎng)規(guī)則庫(kù)決策樹(shù),將根據(jù)劣化剝落的半徑范圍進(jìn)行一級(jí)判別,不同的半徑范圍具有各自的子決策樹(shù),進(jìn)行一級(jí)判別后的病害將進(jìn)入子決策樹(shù)中根據(jù)劣化剝落的程度、劣化剝落的深度進(jìn)行后續(xù)判別,最終觸發(fā)與病害最為匹配的管養(yǎng)措施。
沉降病害與斷面變形病害的管養(yǎng)措施都比較統(tǒng)一,對(duì)于沉降病害,一般均采用微擾動(dòng)雙液注漿的方法進(jìn)行注漿加固,而對(duì)于斷面變形病害,主要采用鋼環(huán)加固的方法以防止斷面收斂過(guò)大。所以相對(duì)于其他病害,沉降病害以及斷面變形的病害規(guī)則庫(kù)決策樹(shù)較為簡(jiǎn)單,其主要任務(wù)從管養(yǎng)措施的推理匹配改變?yōu)楸O(jiān)測(cè)數(shù)據(jù)的調(diào)取,并與GB 50911—2013《城市軌道交通工程監(jiān)測(cè)技術(shù)規(guī)范》中的監(jiān)測(cè)控制值進(jìn)行比較。當(dāng)監(jiān)測(cè)數(shù)據(jù)超過(guò)規(guī)范要求的控制值時(shí),觸發(fā)管養(yǎng)措施。
按照以上管養(yǎng)規(guī)則決策樹(shù)編寫(xiě)的Jess規(guī)則庫(kù)最終將形成*. clp類(lèi)型的文件。為了保證程序在進(jìn)行推理匹配時(shí)的高效性以及避免規(guī)則庫(kù)中漢字的編碼問(wèn)題,本文將管養(yǎng)措施與規(guī)則庫(kù)分離開(kāi)來(lái),即將具體的管養(yǎng)措施存放在數(shù)據(jù)庫(kù)中,規(guī)則庫(kù)中的管養(yǎng)措施則采用id編碼代替,當(dāng)規(guī)則庫(kù)推理出措施編碼后,程序?qū)凑赵摼幋a進(jìn)行數(shù)據(jù)庫(kù)索引,最終找到相應(yīng)的管養(yǎng)措施。
管養(yǎng)專(zhuān)家系統(tǒng)的Jess事實(shí)庫(kù)即為一個(gè)存儲(chǔ)外部傳入的病害情況的工作存儲(chǔ)器。因此,在建立事實(shí)庫(kù)的時(shí)候應(yīng)該根據(jù)描述病害情況的參數(shù)類(lèi)型和參數(shù)個(gè)數(shù)設(shè)置相對(duì)應(yīng)的槽,但是由于每一種病害的描述都有其不同的參數(shù)個(gè)數(shù)與參數(shù)類(lèi)型,例如裂縫的病害描述有寬度、長(zhǎng)度、深度等8個(gè)從用戶(hù)輸入獲得的參數(shù),以及拱頂沉降、兩拱腰沉降、不均勻沉降等4個(gè)從監(jiān)測(cè)數(shù)據(jù)庫(kù)中獲得的參數(shù),而滲漏水的病害描述僅有滲漏現(xiàn)象、滲漏位置、滲漏范圍等3個(gè)參數(shù),所以如果按照每種病害的描述參數(shù)建立工作存儲(chǔ)器,那么不同的病害類(lèi)型將不能同時(shí)適配一個(gè)工作存儲(chǔ)器。而如果對(duì)每一類(lèi)病害類(lèi)型都根據(jù)其病害參數(shù)建立一個(gè)固定的工作存儲(chǔ)器,那么當(dāng)需要在管養(yǎng)經(jīng)驗(yàn)知識(shí)擴(kuò)充模塊中添加新的病害維修措施時(shí),這個(gè)新的病害維修措施將會(huì)由于沒(méi)有與其適配的工作存儲(chǔ)器而不能進(jìn)行推理匹配。
所以為了滿(mǎn)足所建立的工作存儲(chǔ)器適配于每一種病害類(lèi)型,本文在建立的工作存儲(chǔ)器中設(shè)置了如圖3所示的4個(gè)槽,分別為兩個(gè)單字符串型屬性槽,一個(gè)多浮點(diǎn)數(shù)值型屬性槽,一個(gè)多字符串型屬性槽。其中兩個(gè)單字符串型屬性槽分別用來(lái)存儲(chǔ)傳入的病害類(lèi)型和病害發(fā)生位置,而所有關(guān)于病害的數(shù)值描述類(lèi)參數(shù),例如沉降值、裂縫寬度等將拼接為數(shù)組全部存入多浮點(diǎn)數(shù)值型的屬性槽,對(duì)于像滲漏現(xiàn)象、裂縫發(fā)展方向等這種病害的文字描述類(lèi)參數(shù),由于在設(shè)計(jì)時(shí)每一個(gè)文字描述參數(shù)都在數(shù)據(jù)庫(kù)中存儲(chǔ)了一個(gè)對(duì)應(yīng)的id,所以程序?qū)⑹紫葘?duì)傳入的文字描述參數(shù)進(jìn)行數(shù)據(jù)庫(kù)索引,將其對(duì)應(yīng)的id取出再拼接為數(shù)組后全部存入多字符串型的屬性槽。
圖3 Jess事實(shí)庫(kù)的建立
因?yàn)槊恳环N病害在進(jìn)行推理匹配時(shí)都需要向工作存儲(chǔ)器中傳入病害類(lèi)型和病害發(fā)生位置兩個(gè)參數(shù),而且這兩個(gè)參數(shù)的類(lèi)型都是單字符串型,所以依照?qǐng)D3所建立的工作存儲(chǔ)器中前兩個(gè)屬性槽均能夠適配所有病害。而對(duì)于不同病害間具有差異化的參數(shù),由于這些參數(shù)一般分為數(shù)值型和字符串型,所以對(duì)于數(shù)值型的病害描述參數(shù),將全部拼接為浮點(diǎn)型數(shù)值數(shù)組的形式傳入圖3所示的第三個(gè)槽中,字符串型的病害描述參數(shù)也將全部拼接為字符串型數(shù)值數(shù)組的形式傳入圖3所示的第四個(gè)槽中,當(dāng)進(jìn)行推理匹配時(shí),程序?qū)凑諗?shù)組的索引序號(hào)將這些參數(shù)與規(guī)則庫(kù)中的前件對(duì)應(yīng)起來(lái)。這樣,事實(shí)庫(kù)中的后面兩個(gè)槽也能夠適配所有病害。
管養(yǎng)專(zhuān)家系統(tǒng)規(guī)則庫(kù)的建立,是將各類(lèi)病害的管養(yǎng)知識(shí)使用Jess開(kāi)發(fā)語(yǔ)言,編寫(xiě)形成一個(gè)*. clp類(lèi)型的文件存放至項(xiàng)目文件夾中。在每次進(jìn)行推理匹配時(shí),程序先按照路徑尋找到該clp文件,然后再將其讀取后放入推理機(jī)中進(jìn)行運(yùn)行。這樣的推理模式使得規(guī)則庫(kù)和系統(tǒng)軟件本體是分離的,所以這不僅方便直接使用Java語(yǔ)言對(duì)規(guī)則庫(kù)進(jìn)行操作,而且其規(guī)則庫(kù)的增添、修改或者刪除都不會(huì)影響系統(tǒng)本體的運(yùn)行。這也使得管養(yǎng)經(jīng)驗(yàn)知識(shí)擴(kuò)充功能模塊的實(shí)現(xiàn)成為可能。
而要實(shí)現(xiàn)管養(yǎng)經(jīng)驗(yàn)知識(shí)擴(kuò)充的功能則是需要程序能夠?qū)⒂脩?hù)輸入的新的管養(yǎng)經(jīng)驗(yàn)知識(shí)進(jìn)行解析后自行使用Jess語(yǔ)言將其編寫(xiě)形成規(guī)則,并建立與其相適配的工作存儲(chǔ)器。因?yàn)榘凑战⒌墓ぷ鞔鎯?chǔ)器具有適配新添加的病害管養(yǎng)措施的能力,因此該功能的實(shí)現(xiàn)只需讓程序能夠滿(mǎn)足解析輸入的管養(yǎng)經(jīng)驗(yàn)知識(shí)并自行進(jìn)行規(guī)則編寫(xiě)這一需求。
要在規(guī)則庫(kù)中新建一條規(guī)則[20],則需要編寫(xiě)規(guī)則的前件(Left-hand-side)和后件(Right-hand-side),在管養(yǎng)專(zhuān)家系統(tǒng)的規(guī)則庫(kù)中,前件即為病害的描述參數(shù),后件即為需要采取的養(yǎng)護(hù)維修措施,一個(gè)簡(jiǎn)單的規(guī)則模板示例如圖4所示。為了讓程序能夠自行進(jìn)行規(guī)則編寫(xiě),可以預(yù)先將規(guī)則模板寫(xiě)入程序中存為字符變量,當(dāng)用戶(hù)輸入新的管養(yǎng)知識(shí)后,程序解析其中的病害描述參數(shù)和管養(yǎng)措施,然后插空拼接到規(guī)則模板的留空處,這樣即可形成一條新的規(guī)則。
圖4 規(guī)則模板示例
規(guī)則庫(kù)中存入的規(guī)則前件、后件以及傳入工作存儲(chǔ)器的病害事實(shí)均是使用與之對(duì)應(yīng)的id進(jìn)行推理匹配的。所以本文也通過(guò)給擴(kuò)充的管養(yǎng)經(jīng)驗(yàn)知識(shí)分配具有唯一性的數(shù)據(jù)庫(kù)id來(lái)完成對(duì)其的解析。新擴(kuò)充的管養(yǎng)知識(shí)由病害描述和與之對(duì)應(yīng)的管養(yǎng)措施兩個(gè)部分組成。對(duì)于管養(yǎng)維修措施,程序?qū)⑼ㄟ^(guò)Java語(yǔ)言將其直接存入數(shù)據(jù)庫(kù),并由數(shù)據(jù)庫(kù)為其分配一個(gè)具有唯一性的id。而對(duì)于病害描述,程序首先判別其參數(shù)類(lèi)型,如果參數(shù)類(lèi)型為數(shù)值型,則直接進(jìn)入規(guī)則模板進(jìn)行拼接,如果參數(shù)類(lèi)型為字符型,那么程序?qū)⒏鶕?jù)其是否為系統(tǒng)中的已有病害描述進(jìn)行數(shù)據(jù)庫(kù)存儲(chǔ),并索引數(shù)據(jù)庫(kù)為其分配的具有唯一性的id,具體如圖5所示。
圖5 管養(yǎng)經(jīng)驗(yàn)知識(shí)擴(kuò)充功能實(shí)現(xiàn)流程
由于基于Jess的管養(yǎng)功能在推理過(guò)程中需要將人工巡檢得到的軌道交通盾構(gòu)隧道的病害情況和自動(dòng)化監(jiān)測(cè)數(shù)據(jù)調(diào)取作為事實(shí)條件,而這些事實(shí)數(shù)據(jù)則是由Java語(yǔ)言編寫(xiě)的調(diào)取模塊從數(shù)據(jù)庫(kù)中調(diào)取完畢后存儲(chǔ)為Java變量的。但是在Jess的工作存儲(chǔ)器中,其事實(shí)條件并不是一個(gè)變量,而是一個(gè)封裝的類(lèi)對(duì)象,所以Java調(diào)取得到的數(shù)據(jù)不能直接作為事實(shí)條件傳入Jess中進(jìn)行推理匹配,而是需要編寫(xiě)二者間的數(shù)據(jù)交互接口。
因?yàn)镴ess專(zhuān)家系統(tǒng)開(kāi)發(fā)語(yǔ)言的內(nèi)核是由Java語(yǔ)言編寫(xiě)的,所以其數(shù)據(jù)的交互可以采用Java語(yǔ)言中類(lèi)之間傳遞的方法,即通過(guò)編寫(xiě)與Jess中事實(shí)類(lèi)對(duì)象構(gòu)造相同的JavaBean,然后通過(guò)JavaBean中的set方法將變量傳入JavaBean中進(jìn)行對(duì)象打包,打包后的變量將以一個(gè)類(lèi)對(duì)象通過(guò)Jess的add方法傳入Jess的工作存儲(chǔ)器中,交互接口編寫(xiě)關(guān)鍵技術(shù)如圖6所示。
圖6 Jess與Java間數(shù)據(jù)交互接口技術(shù)流程
其中,由于Jess工作存儲(chǔ)器中的事實(shí)是以一個(gè)template為類(lèi)對(duì)象進(jìn)行存儲(chǔ)的,template中有數(shù)個(gè)槽,這些槽將存儲(chǔ)事實(shí)的不同條件,所以在構(gòu)建JavaBean時(shí),需要?jiǎng)?chuàng)建與槽相對(duì)應(yīng)且命名相同的私有變量,以便Jess工作存儲(chǔ)器能夠識(shí)別每個(gè)槽對(duì)應(yīng)的Java變量,并將其存入槽中。圖7為一個(gè)簡(jiǎn)單的template類(lèi)對(duì)象所對(duì)應(yīng)的JavaBean構(gòu)造。
圖7 JavaBean接口構(gòu)造示例
除了需要滿(mǎn)足Java與Jess間的數(shù)據(jù)交互,開(kāi)發(fā)完畢的Jess專(zhuān)家系統(tǒng)還應(yīng)該集成至Java中,供軟件平臺(tái)調(diào)用。這方面由于Jess提供了相應(yīng)的Java調(diào)用接口,所以在Java中,通過(guò)對(duì)Jess的核心類(lèi)Jess. Rete進(jìn)行實(shí)例化,然后將同樣實(shí)例化的工作存儲(chǔ)器放入Jess. Rete中,并聲明規(guī)則庫(kù)的絕對(duì)路徑,即可完成Java對(duì)Jess的集成調(diào)用。
軌道交通盾構(gòu)隧道管養(yǎng)功能主要由兩個(gè)功能模塊構(gòu)成,分別是專(zhuān)家系統(tǒng)管養(yǎng)決策模塊和經(jīng)驗(yàn)知識(shí)庫(kù)擴(kuò)充模塊。其中,專(zhuān)家系統(tǒng)管養(yǎng)決策功能模塊負(fù)責(zé)根據(jù)人工巡檢得到的病害情況和監(jiān)測(cè)數(shù)據(jù)進(jìn)行推理匹配,給出相應(yīng)的管養(yǎng)建議,其功能界面如圖8所示。
圖8 專(zhuān)家系統(tǒng)管養(yǎng)決策功能界面
功能界面分為4部分,用戶(hù)在病害類(lèi)型選擇框中選擇相應(yīng)的病害類(lèi)型后,右上方的病害情況輸入界面將會(huì)根據(jù)用戶(hù)選擇的病害類(lèi)型進(jìn)行改變,不同的病害類(lèi)型有不同的輸入界面,用戶(hù)輸入完病害類(lèi)型與病害情況后需在左下方的病害位置區(qū)間選擇病害發(fā)生的里程區(qū)間以便調(diào)取該病害所在位置的監(jiān)測(cè)數(shù)據(jù),在點(diǎn)擊診斷按鈕后,用戶(hù)輸入的病害情況以及病害所在位置的監(jiān)測(cè)數(shù)據(jù)將進(jìn)入Jess推理引擎進(jìn)行推理匹配,最終的推理結(jié)果將會(huì)傳入到右下方的推理結(jié)果顯示框中進(jìn)行顯示。
如表1所示的一個(gè)裂縫病害情況后系統(tǒng)自行推理顯示的示例。
表1 裂縫病害情況
該裂縫所在區(qū)間的不均勻沉降差為0.395 mm,《城市軌道交通工程監(jiān)測(cè)技術(shù)規(guī)范》對(duì)不均勻沉降的限值要求為0.04%L(L為隧道寬度)=4.776 mm。其不均勻沉降值沒(méi)有超過(guò)規(guī)范限值要求。
建議:(1)對(duì)裂縫所在的管片環(huán)進(jìn)行收斂變形監(jiān)測(cè),并檢查周邊是否存在工程施工與堆土情況;(2)若地面存在堆土,應(yīng)盡快完成堆土卸載,卸載過(guò)程中盡可能分層實(shí)施;(3)若管片收斂變形超過(guò)限值,應(yīng)該先待隧道變形穩(wěn)定后進(jìn)行鋼環(huán)加固;(4)裂縫的修補(bǔ)建議采用鋼板補(bǔ)強(qiáng)法。
由推理結(jié)果可以看出,由于裂縫是一條貫通的具有錯(cuò)動(dòng)現(xiàn)象的環(huán)向裂縫,且裂縫寬度與長(zhǎng)度都達(dá)到了管養(yǎng)規(guī)范的中修要求,產(chǎn)生原因很有可能是裂縫前后里程內(nèi)的不均勻沉降引起的。所以專(zhuān)家系統(tǒng)首先調(diào)取了裂縫所在區(qū)間的沉降數(shù)據(jù)進(jìn)行了不均勻沉降計(jì)算,并與規(guī)范值進(jìn)行比較,在排除了裂縫的產(chǎn)生是不均勻沉降引起的這個(gè)原因之后,提出了加強(qiáng)收斂變形監(jiān)測(cè)、進(jìn)行鋼環(huán)加固、采用鋼板補(bǔ)強(qiáng)法進(jìn)行裂縫修補(bǔ)的管養(yǎng)建議。
該模塊可讓管養(yǎng)專(zhuān)家不需要接觸任何編程語(yǔ)言即可在系統(tǒng)中自行添加、擴(kuò)充新的病害管養(yǎng)方法與技術(shù),添加后的管養(yǎng)經(jīng)驗(yàn)將編譯為Jess規(guī)則存放至規(guī)則庫(kù)中,供管養(yǎng)決策功能進(jìn)行推理。
(1)建立基于Jess管養(yǎng)專(zhuān)家系統(tǒng)的規(guī)則庫(kù),即是將現(xiàn)行的管養(yǎng)規(guī)范和標(biāo)準(zhǔn)、專(zhuān)家經(jīng)驗(yàn)以及地方地鐵集團(tuán)的企業(yè)標(biāo)準(zhǔn)等管養(yǎng)知識(shí)歸納整理后,使用Jess專(zhuān)家系統(tǒng)開(kāi)發(fā)語(yǔ)言編寫(xiě)為一條條病害情況(前件)對(duì)應(yīng)病害維修措施(后件)的產(chǎn)生式規(guī)則形式。本文規(guī)則庫(kù)的建立依據(jù)現(xiàn)行管養(yǎng)規(guī)范、標(biāo)準(zhǔn)、文獻(xiàn)資料,同時(shí)調(diào)研了武漢地鐵集團(tuán)的企業(yè)管養(yǎng)手冊(cè)、管養(yǎng)工程師經(jīng)驗(yàn),將軌道交通盾構(gòu)隧道常見(jiàn)的裂縫病害、滲漏水病害、劣化剝落病害、沉降及不均勻沉降、隧道斷面變形等病害建立了相應(yīng)的管養(yǎng)規(guī)則庫(kù)。
(2)管養(yǎng)專(zhuān)家系統(tǒng)的Jess事實(shí)庫(kù)即為一個(gè)存儲(chǔ)外部傳入的病害情況的工作存儲(chǔ)器。因此,在建立事實(shí)庫(kù)的時(shí)候應(yīng)該根據(jù)描述病害情況的參數(shù)類(lèi)型和參數(shù)個(gè)數(shù)設(shè)置相對(duì)應(yīng)的槽,為了滿(mǎn)足所建立的工作存儲(chǔ)器適配于每一種病害類(lèi)型,本文在建立的工作存儲(chǔ)器中設(shè)置了4個(gè)槽,分別為兩個(gè)單字符串型屬性槽,一個(gè)多浮點(diǎn)數(shù)值型屬性槽,一個(gè)多字符串型屬性槽。
(3)管養(yǎng)專(zhuān)家系統(tǒng)規(guī)則庫(kù)的建立,是將各類(lèi)病害的管養(yǎng)知識(shí)使用Jess開(kāi)發(fā)語(yǔ)言,編寫(xiě)形成一個(gè)*. clp類(lèi)型的文件存放至項(xiàng)目文件夾中。在每次進(jìn)行推理匹配時(shí),程序先按照路徑尋找到該clp文件,然后再將其讀取后放入推理機(jī)中進(jìn)行運(yùn)行。這樣的推理模式使得規(guī)則庫(kù)和系統(tǒng)軟件本體是分離的,所以這不僅方便可以直接使用Java語(yǔ)言對(duì)規(guī)則庫(kù)進(jìn)行操作,而且其規(guī)則庫(kù)的增添、修改或者刪除都不會(huì)影響系統(tǒng)本體的運(yùn)行。這也使得管養(yǎng)經(jīng)驗(yàn)知識(shí)擴(kuò)充功能模塊的實(shí)現(xiàn)成為可能。
(4)由于基于Jess的管養(yǎng)功能在推理過(guò)程中需要將人工巡檢得到的軌道交通盾構(gòu)隧道的病害情況和自動(dòng)化監(jiān)測(cè)數(shù)據(jù)調(diào)取作為事實(shí)條件,而這些事實(shí)數(shù)據(jù)則是由Java語(yǔ)言編寫(xiě)的調(diào)取模塊從數(shù)據(jù)庫(kù)中調(diào)取完畢后存儲(chǔ)為Java變量的。但是在Jess的工作存儲(chǔ)器中,其事實(shí)條件并不是一個(gè)變量,而是一個(gè)封裝的類(lèi)對(duì)象,所以Java調(diào)取得到的數(shù)據(jù)不能直接作為事實(shí)條件傳入Jess中進(jìn)行推理匹配,編寫(xiě)了Jess與Java語(yǔ)言的調(diào)用與數(shù)據(jù)交互接口,實(shí)現(xiàn)了Jess與軟件平臺(tái)的集成。