岳喜娜, 吳學毅, 呂明珠
(西安理工大學 印刷包裝與數(shù)字媒體學院, 西安 710048)
隨著我國公路建設事業(yè)的快速發(fā)展, 橋梁行業(yè)更是實現(xiàn)了跨越式發(fā)展.在橋梁養(yǎng)護行業(yè), 傳統(tǒng)的橋梁養(yǎng)護管理模式面對繁雜的數(shù)據(jù)報告, 容易產(chǎn)生數(shù)據(jù)錯誤或遺失現(xiàn)象, 因此橋梁養(yǎng)護公司為了降低企業(yè)成本, 提高工作效率, 紛紛轉向數(shù)字化病害檢測記錄方式[1], 而實現(xiàn)橋梁的三維建模是實現(xiàn)其工作的基礎.參數(shù)化建模是擴展橋梁建模靈活性的主要手段[2], 而專家系統(tǒng)是是實現(xiàn)橋梁結構建模邏輯的方法之一, 本文針對使用專家系統(tǒng)方法進行梁式橋三維參數(shù)化建模展開研究.
目前主流的橋梁建模平臺是基于Autodesk、Bently、Dassault 公司的產(chǎn)品, 最為常見的是基于對UG、CATIA、SolidWorks、Inventor 的二次開發(fā)來完成對模型的參數(shù)化建模[3-6].本文基于OSG 圖形開發(fā)技術采用邊界表示法完成了對梁式橋基本部件的參數(shù)化建模開發(fā),并采用一種將梁式橋參數(shù)化建模與專家系統(tǒng)相結合的方法, 以提高梁式橋參數(shù)化建模的靈活性與可擴充性.
了解梁式橋參數(shù)化建模過程, 提取其普遍性建模流程, 是進行梁式橋參數(shù)化建模專家系統(tǒng)方法研究的前提.
1.1.1 組件參數(shù)化建模過程
常見的梁式橋組件包括: 空心板、小箱梁、連續(xù)板、重力式橋臺、輕型橋臺、蓋梁柱式墩、柱式墩等.對一類組件進行參數(shù)化建模的過程如下:
(1)明確組件類型, 確認組件結構參數(shù)值以及組件的下一級部件組成關系.
(2)建立組件全局坐標系, 設置坐標原點與組件中某一部件的局部坐標系原點重合.
(3)按照組件的下一級部件組成關系及拓撲空間位置拼接各個部件, 形成完整的組件.
(4)將拼接完的組件進行繪制并展示模型.
1.1.2 全橋參數(shù)化建模過程
梁式橋全橋建模從建模流程上, 類似于組件建模,從建模內(nèi)容上, 比組件建模較為復雜.
(1)明確全橋的結構組成, 全部組件結構參數(shù)值.
(2)建立全橋的全局坐標系.其中X 軸與全橋的橋梁中心線重合, Y 軸與全橋縱橋線重合, 坐標原點與左側橋臺局部坐標系原點重合.
(3)按照全橋的結構組成及組件的空間拓撲關系拼接全橋.
(4)將拼接好的全橋模型進行繪制并展示.
提取梁式橋組件及全橋建模的一般過程(如圖1)可以發(fā)現(xiàn), 專家總結的橋梁結構計算公式及拼接知識是完成組件及全橋建模的邏輯基礎, 也是專家系統(tǒng)的知識庫內(nèi)容; 組件及全橋的建模過程中的組裝流程是推理機的主要內(nèi)容; 對推理出的結果進行三維繪制可作為解釋機制, 驗證參數(shù)化建模的正確性; 因此, 知識庫、推理機、參數(shù)化建模模塊是系統(tǒng)的重要組成模塊[7].
圖1 梁式橋快速建模專家系統(tǒng)結構圖
知識庫: 知識庫中存儲著梁式橋部件結構計算類知識和組件及全橋的拼接類知識, 按照知識類別及推理機的數(shù)據(jù)需要, 將知識庫分為4 類; 同時選擇合適的知識表達方式, 并設計其數(shù)據(jù)庫表結構; 知識庫是實現(xiàn)整個推理過程的數(shù)據(jù)基礎.
數(shù)據(jù)庫: 數(shù)據(jù)庫中保存了系統(tǒng)運行過程中產(chǎn)生的一些必要數(shù)據(jù).同時知識庫是以數(shù)據(jù)庫的形式存在, 因此數(shù)據(jù)庫中包含了知識庫.數(shù)據(jù)庫是實現(xiàn)系統(tǒng)運行與推理過程的數(shù)據(jù)依托基礎.
主推理程序: 提取組件建模及全橋建模拼接的過程性知識, 實現(xiàn)組件及全橋建模繪制的過程性程序.
人機交互界面: 一部分是用戶使用, 在這部分用戶能夠實現(xiàn)橋梁組件瀏覽和全橋快速建模.另一部分是針對知識工程師的接口, 工程師在知識庫編輯界面, 可編輯、擴充知識庫, 使得系統(tǒng)更具靈活性與可擴展性.
參數(shù)化建模模塊: 包括3 部分內(nèi)容, (1)橋梁部件建模算法; (2)組件建模拼接算法; (3)全橋建模拼接算法.該模塊作為系統(tǒng)重要的一部分使得系統(tǒng)具有解釋性與可觀察性.
總結梁式橋參數(shù)化建模一般過程可以發(fā)現(xiàn), 知識共含有2 類: (1)橋梁組件結構計算知識; (2)橋梁組件及全橋結構拼接知識.
2.1.1 橋梁組件結構計算知識
本文研究的橋梁組件共包含了7 類, 每一類組件下又包含了該組件下一級全部部件結構, 因此一個組件的結構計算知識包含了其下一級全部部件的結構計算知識之和.以組件空心板為例, 空心板結構組成如圖2, 由一塊左邊板, N 塊中間板和一塊右邊板組成.因此空心板結構計算類知識包含了這3 類部件的全部結構計算知識之和.
圖2 空心板結構圖
空心板按照跨徑長度又可以分為7 類, 以表1 中展示的空心板部分知識為例, 舉出跨徑長度為6 m、8 m、10 m 的3 類空心板的結構計算知識.
表1 橋梁組件-空心板結構計算公式
2.1.2 橋梁組件及全橋結構拼接知識
對于每一類橋梁組件, 其結構組成都是固定的知識, 比如已知組件為空心板, 則知道空心板是由左邊板、若干塊中間板和右邊板拼接而成; 這一類知識屬于結構拼接類知識.而全橋的拼接知識與此類似.
梁式橋參數(shù)化建模需要兩類知識, 結合推理機進行推理時所需要的知識類型, 設計了4 類知識庫, 每類知識庫是按照知識特點進行劃分, 具有不同的作用.
2.2.1 組件結構參數(shù)庫
組件結構參數(shù)庫存放繪制一個組件所需要的結構參數(shù)數(shù)值的集合.以空心板為例, 繪制一跨空心板需要知道其全部的結構參數(shù)描述及參數(shù)的含義, 如: bNum:橋梁編號; span: 該聯(lián)跨徑組成; holenum: 孔號; length:跨徑長; bJ: 板間縫寬; kxbNum: 空心板數(shù)量; Gradient:彎斜坡度; Si: 蓋梁寬度中心距布孔線; Sj: 蓋梁寬度中心距墩柱中心線; D: 支座中心; 線距板端; H: 板梁高度;B: 右邊板右懸臂端部距道路設計線; bZ: 橫橋向支座中心距空心板中心線; hY1: 左邊板懸臂端部厚度; hY2:右邊板懸臂端部厚度; bB: 板梁寬度; bt: 中板頂寬;hG1: 左邊板懸臂根部厚度; hG2: 右邊板懸臂根部厚度;bY1: 左邊板懸臂寬度; bY2: 右邊板懸臂寬度; xT: 上倒角寬; yT: 上倒角高度; xJ: 下倒角寬; yJ: 下倒角高; hJ:底緣高度.以上的一組結構參數(shù)能夠滿足對空心板的三維外觀描述, 其它的橋梁組件結構參數(shù)庫, 都有一套可以用來描述自己三維結構的特殊參數(shù).其設計方式和空心板類似.
2.2.2 組件知識庫
組件知識庫中存放了計算組件結構參數(shù)的計算公式,為2.1.1 節(jié)所描述的知識類型, 屬于專家總結的元知識.
以空心板知識庫為例, 圖3 是其跨徑長度為10 m的知識庫內(nèi)容.
圖3 跨徑長度為10 米的空心板知識庫
2.2.3 模型拼接庫
模型拼接庫中存放了繪制該模型(組件或全橋)所需要的下一級結構拼接關系、部件繪制函數(shù)名稱和部件個數(shù)約束等.具體存放的是2.1.2 節(jié)描述的知識類型.
2.2.4 模型繪制信息庫
模型繪制信息庫存放了繪制該模型(組件或全橋)所需要的全部信息.如一座橋梁的繪制信息庫(已選上部結構為空心板、橋臺結構為輕型橋臺, 墩柱類型為蓋梁柱式墩)會存儲: N 跨空心板的繪制信息,N-1 個蓋梁柱式墩的繪制信息和2 個輕型橋臺繪制信息.每一條繪制記錄中會包含當前繪制組件的三維空間坐標、模型繪制函數(shù)等.
2.3.1 知識表達方式
常見的知識表達方式包括一階邏輯謂詞表示法、產(chǎn)生式表示法、語義網(wǎng)絡表示法、框架表示法、過程表示法、面向對象表示法等, 這些知識表達方式各有特定的適用條件, 且各有優(yōu)缺點.本文結合2.1.1 節(jié)中知識類型的特點, 選擇產(chǎn)生式規(guī)則結合公式表達式作為知識的表達方式.
產(chǎn)生式規(guī)則的具體表示為“IF a Then b”, 這與橋梁結構計算知識的表示方式非常接近, 因此采用產(chǎn)生式規(guī)則能夠很好的解釋當前知識點.將知識采用產(chǎn)生式規(guī)則方法表達舉例如下:
if (組件類型==“空心板”&&跨徑長度==“10 米”&&參數(shù)名稱描述==“蓋梁長度”) then (蓋梁長度=“(A×G+70)/cos(E)”).
2.3.2 公式解析器的應用
上一節(jié)知識表達式的后件是固定值或參數(shù)計算公式.計算公式是以字符串類型存在的, 字符串類型的公式失去了公式原本的意義, 因此為了解決公式的解析計算, 本文引入公式解析器來完成對字符串類型的公式的求解計算.
(1)橋梁結構計算公式的分類
① 固定值.圖4 中, 可以看到板梁高度是由一個固定值表示.公式解析器需要完成將字符串類型的變量轉變?yōu)橐粋€整形值.
圖4 空心板元知識
② 普通公式計算.圖4 中左邊板懸臂寬度的公式為: “(B-A×G)/2”.公式解析器需完成變量替換以及基本算術表達式的計算功能.
③ 含有特殊數(shù)學符號的公式計算.如蓋梁柱式墩的部件蓋梁, 其長度的計算公式為“(A×G-70)/cos(E)”,公式解析器需要解析特殊的數(shù)學符號(cos, tan, sin, abs).
④ 帶有IF 語句的公式.圖4 中板梁寬度的計算公式為“IF((B-A×100)<150, 100, IF((B-A×125)<150, 125,(B-50)/A))))”.這是一個帶有IF 語句的具有特定邏輯判斷語句的公式, 因此公式解析器需要能夠自動解析這種類型的數(shù)學公式, 實現(xiàn)對本文所特有的橋梁公式的解析工作.
(2)公式解析器流程
圖5 是公式解析器總的計算流程, 圖6、圖7、圖8 是總流程下對應功能的詳細計算流程.其中最為核心的是最內(nèi)側公式表達式處理, 是整個公式解析計算最重要的部分[8].
圖5 公式解析器運算流程圖
圖6 預處理流程圖
圖7 邏輯語句處理流程圖
(3)計算結果展示
表2 列舉了9 項普通公式采用公式解析器及微軟計算器分別計算的結果值及誤差值, 可以看出誤差精確到千分之一, 能夠滿足本項目的計算精度.
表3 是4 組對含有IF 語句公式的計算結果, 邏輯結果判斷正確, 能有效計算特殊數(shù)學公式.
圖8 最內(nèi)側公式表達式流程圖
表2 普通計算公式結果統(tǒng)計
表3 含IF 語句公式計算結果統(tǒng)計
推理機調用知識庫中的知識, 按照專家思考問題的邏輯, 對提出的問題給出合理的答案.
本文研究最終驗證手段是參數(shù)化建模結果, 因此,推理機給出的答案是參數(shù)化建模所需要的結構參數(shù)數(shù)據(jù)和模型繪制數(shù)據(jù).推理機需求解的問題是特定模型的特定求解過程.因此推理機的推理內(nèi)容包括: 對組件建模所需信息進行推理和對全橋建模進行推理.
對組件推理完成拼接和建模參數(shù)的求解, 并將具體參數(shù)傳遞給參數(shù)化建模模塊實現(xiàn)模型的繪制是推理機的推理過程(如圖9).組件繪制推理過程中主要包括兩方面: (1)組件對應的組件結構參數(shù)庫推理; (2)組件對應的模型繪制庫推理.全橋繪制推理過程也主要包括兩方面內(nèi)容: (1)主梁組件、橋臺組件、橋墩組件的組件結構拼接庫推理; (2)全橋對應的模型繪制庫推理.二者推理過程類似.
圖9 推理機主要推理流程
3.2.1 組件結構參數(shù)庫推理過程
圖10 為組件對應的結構參數(shù)庫推理流程, 具體推理流程如下:
(1)判斷組件類型, 到該組件對應的組件結構參數(shù)庫中獲取繪制該組件所需要的全部結構參數(shù)值標簽.
(2)到該組件對應的組件知識庫中逐條查找各值標簽所對應的結構參數(shù)計算公式, 并返回查找結果.
(3)采用公式解析器對獲取到的公式表達式進行解析計算, 并將計算結果返回.
(4)按照參數(shù)值標簽將返回的計算結果存儲在組件結構參數(shù)表對應的值標簽下, 至此完成組件結構參數(shù)庫推理流程.
圖10 結構參數(shù)庫推理流程圖
3.2.2 模型繪制信息庫推理過程
圖11 為模型繪制庫推理流程, 具體流程如下:
(1)根據(jù)所選組件類型, 到組件對應的模型拼接庫中查找, 查找到該組件模型拼接庫的全部記錄信息.
(2)逐條解析模型拼接庫的記錄信息, 獲取本條記錄信息下部件名稱、部件個數(shù)、部件繪制函數(shù)等相關信息, 依據(jù)這些信息計算該部件在整個組件中的三維空間坐標.
(3)逐條將(2)中得到的全部信息存放在該組件對應的模型繪制庫中, 此時, 組件的模型繪制庫中包含了繪制該組件模型所必須的繪制信息.至此完成組件的模型繪制庫推理流程.
參數(shù)化建模模塊是將推理機推理出的數(shù)據(jù)結果通過參數(shù)化建模算法建立相對精確的三維實體模型[9], 實現(xiàn)結果驗證.
整橋由組件拼接而成, 組件由部件拼接而成, 因此部件的建模算法最為基礎.一般部件的建模流程如圖12 所示.
圖11 模型繪制庫推理流程圖
圖12 一般部件繪制流程圖
如連續(xù)板的繪制過程, 首先根據(jù)二維輪廓圖, 確定連續(xù)板的橫截面及相關結構參數(shù), 再根據(jù)結構參數(shù)確定坐標原點與坐標系, 從二維結構參數(shù)計算三維頂點坐標, 最后依據(jù)頂點坐標繪制三維模型[10].
4.2.1 組件建模拼接算法
組件拼接算法是在已獲得部件建模算法、組件結構參數(shù)及組件繪制數(shù)據(jù)基礎上, 將組件繪制成三維模型的算法.通常拼接組件的流程, 如圖13, 具體為:
根據(jù)傳入的組件類型, 在MFC_OSG 類中匹配組件對應的結構參數(shù)信息和組件繪制信息, 并解析組件繪制信息完成橋梁組件的繪制.
圖13 組件建模拼接算法
4.2.2 全橋建模拼接算法
在全橋拼接過程中會將整橋的繪制信息、上部結構、橋臺結構和橋墩結構的結構參數(shù)信息全部傳遞給MFC_OSG 類, 只需要解析傳遞進來全橋繪制信息, 匹配每一個組件對應的繪制模型函數(shù)與繪制模型坐標位置, 借助OSG 中位姿變換節(jié)點, 將每個組件放置于特定位置, 即可完成全橋的模型繪制, 如圖14 所示.
知識庫的編輯模塊通過對知識庫內(nèi)容的增刪改查完成知識擴充及修改, 為系統(tǒng)增加了擴充性.用戶通過選擇組件類型、跨徑長度等條件調取相應的組件知識庫完成知識的查看.用戶通過編輯知識展示區(qū)域, 選擇增加、刪除、修改等功能, 完成對當前知識的修改, 且修改內(nèi)容直接存儲入知識庫中, 主界面見圖15.
基于上述系統(tǒng)設計, 本文在VS2013 (Microsoft Visual Studio 2013)平臺上, 采用OSG 庫, 利用MFC界面庫, 使用三層架構的系統(tǒng)架構開發(fā)了一個梁式橋快速建模專家系統(tǒng).6.1.2 節(jié)詳述其應用過程.
6.1.1 參數(shù)化建模結果
本文依次對7 類橋梁組件及全橋模型進行系統(tǒng)建模, 其建模結果展示如圖16 至圖23.
6.1.2 系統(tǒng)結果展示
如圖24 為系統(tǒng)主界面, 包括3 部分, 橋梁BIM 組件建模, 全橋建模和知識庫管理.以全橋建模為例, 詳述系統(tǒng)運行過程.在全橋建模模塊, 輸入繪制一個橋梁所需主要參數(shù)后, 點擊快速計算按鈕, 生成全橋模型如圖25.主要參數(shù)不變, 修改跨徑組成, 系統(tǒng)能夠生成不同全橋建模結果, 圖25 為6 跨橋梁, 圖26 為9 跨橋梁.
在全橋生成過程中, 首先系統(tǒng)從界面?zhèn)魅胫鹘Y構參數(shù), 然后對比該實例的參數(shù)與數(shù)據(jù)庫中已有實例的參數(shù), 若已有, 則調取推理出的數(shù)據(jù)及繪制方案, 將其傳遞給參數(shù)化建模模塊, 完成模型繪制并展示在界面上.若無, 則利用推理機中的全橋推理流程, 檢索相應知識庫, 完成數(shù)據(jù)及繪制方案推理, 將結果傳遞給參數(shù)化建模模塊, 完成模型繪制并展示在界面上.
圖14 全橋建模拼接算法
圖15 知識庫編輯主界面
圖16 空心板模型
圖17 連續(xù)板模型
圖18 小箱梁模型
BIM 組件的建模流程可參考全橋建模流程.知識庫的編輯可參照第5 節(jié).
圖19 輕型橋臺模型
圖20 蓋梁柱式墩模型
圖21 重力式橋臺模型
圖22 柱式墩模型
圖23 全橋模型
圖24 系統(tǒng)主界面
圖25 6 跨全橋建模結果
圖26 9 跨全橋建模結果
(1)參數(shù)化建模結果
對比專家給出的橋梁及組件三維圖形, 能夠正確建立模型形狀.三維建模結果準確.在全橋拼接時, 存在拼接縫隙, 說明系統(tǒng)計算結果有偏差, 計算精度待改進.
(2)知識庫編輯結果
可通過增刪查改方式修改知識庫中的存儲的知識內(nèi)容, 可修改推理機所依賴的知識內(nèi)容.
(3)專家系統(tǒng)結果
該專家系統(tǒng)能夠準確運行, 通過用戶在界面輸入少量必要的主要參數(shù), 就能準確完成一座橋梁的粗建模, 完成自動化建模過程, 且結果準確.
本文采用一種結合專家系統(tǒng)與梁式橋參數(shù)化建模的方法, 該方法通過構建專家系統(tǒng)的各功能模塊以及各模塊之間的聯(lián)系, 能夠實現(xiàn)根據(jù)用戶輸入的少量主要參數(shù)自動完成整橋及組件的參數(shù)化建模.通過知識庫編輯完成對知識的修改, 進而影響參數(shù)化建模所依賴的數(shù)據(jù)計算方式, 使用戶參與到梁式橋參數(shù)化建模的過程中.該方法促進了梁式橋參數(shù)化建模的靈活性和可擴展性, 避免了傳統(tǒng)程序“一經(jīng)寫定, 不易修改”的弊端.