陳 遠 張 雨 康 虹
(鄭州大學 土木工程學院,鄭州 450001)
建筑行業(yè)涉及專業(yè)類別較多,不同專業(yè)規(guī)范標準也不同,存在上百本不同的規(guī)范,規(guī)范中所蘊含的知識內容豐富,這就要求設計人員及審核人員能夠充分理解和掌握這些標準和規(guī)范。目前,我國的建筑設計合規(guī)性檢查仍以人工為主,結果取決于檢查人員對規(guī)范的理解以及所具有的設計經驗,其檢查過程非常耗時,檢查結果具有較強的主觀性。
BIM技術的出現改變了傳統建筑業(yè)的生產方式和管理模式,實現了工程項目在規(guī)劃、設計、施工和運營等過程信息共享,并保證各個階段、不同專業(yè)間的信息集成?;贐IM模型的建筑設計合規(guī)性檢查被越來越多的研究人員所重視,基于BIM模型的建筑設計合規(guī)性自動檢查,對提高設計模型檢查的效率和精度,提高基于BIM的建筑設計自動化具有重要的影響。
建筑設計合規(guī)性自動檢查是指以計算機方法檢查建筑設計是否符合規(guī)范的過程。Ismail學者[1]指出設計合規(guī)性自動檢查是一個通過其對象、屬性和關系來自動評估設計的過程或者系統?;贐IM的設計規(guī)范自動檢查是實現BIM數據信息自動抽取,提取出需要檢查的模型信息,將建筑規(guī)范轉換為計算機可識別的規(guī)則模式,為設計合規(guī)性檢查提供約束知識庫。
目前比較成熟并且采納最多的合規(guī)性檢查方法由Eastman等人提出,將規(guī)則檢查分為四個階段,分別為:規(guī)則轉譯、模型準備、規(guī)則執(zhí)行和檢查結果報告[2]等。Martins JP依據Eastman的方法,提出建筑給水系統的合規(guī)性自動檢測的方法及軟件應用[3],胡培寧以此方法框架為理論基礎,提出了BIM模型的防火設計審查系統構想[4]。宮松培等人以Eastman的四階段模型為理論依據,建立了深基坑自動圖審知識庫,研究了深基坑專項施工方案BIM模型所需信息,在此基礎上設計開發(fā)了基于BIM的深基坑自動審圖系統[5]。
Eastman的方法體系能夠展現一個完整的合規(guī)性檢查步驟,但是此方法體系中未能體現一個開放的環(huán)境來編寫規(guī)則,通常規(guī)則由計算機編程功能直接嵌入到程序代碼中實現規(guī)則檢查,缺少獨立于程序的數據庫后端管理系統來集中儲存管理規(guī)則信息。而專家系統的知識庫與程序相互獨立,系統求解的過程是通過知識庫中的知識來模擬專家求解問題的思維方式,這種方式允許用戶在知識庫中增加知識以不斷完善系統。因而嘗試以專家系統的結構構建規(guī)則與程序獨立的系統來實現合規(guī)性檢查,是合規(guī)性檢查領域一種新的思路。
專家系統是一個智能的計算機系統,其內部存儲有某一特定領域專家的知識或經驗,應用系統可以模擬人類專家決策的過程從而解決特定領域的實際問題。在建筑工程領域,專家系統主要應用在項目評估、診斷、決策和預測、建筑設計優(yōu)化等方面[6]。目前,有部分學者按照專家系統結構進行規(guī)則檢查的研究。DelisI, Ethymios A討論了Fire-Code-Analyzer(防火規(guī)范分析)系統的設計與實現,該系統是一種用于防火規(guī)范檢查的專家系統[7]。李雪等人結合專家系統結構構建了基于Revit平臺的電氣設計審圖系統,介紹了審圖系統各模塊功能[8]。蔣鵬學者提到了采用專家系統模型,把規(guī)范建成知識庫,每條規(guī)范簡化為一個產生式規(guī)則的形式[9]。
目前的專家系統語言,必須以特定格式輸入規(guī)則,而建筑設計規(guī)范條文繁多,結構形式不一,難以實現用專家系統語言來描述規(guī)范條文。因而本文采取這種基本專家系統結構,利用數據庫結構化儲存設計規(guī)范條文,構建推理機制,實現規(guī)范檢查的結果。專家系統是一種基于知識的系統,其重要技術問題是知識表達,知識的抽取和知識的推理。如何將建筑設計規(guī)范條文進行知識表達,知識抽取是構建規(guī)則庫的主要技術問題,結合BIM信息與規(guī)則知識庫進行推理是得出合規(guī)性檢查結果的核心問題。
知識獲取是把用于求解某個領域問題的知識從擁有這些知識的知識源中,通過識別、理解和歸納等手段抽取出來,建立知識庫的過程。建筑規(guī)范是經過長久的經驗積累及科學實驗得出的指導性文件,設計人員進行建筑設計時必須要遵從相關規(guī)范。因而設計合規(guī)性檢查是以建筑設計規(guī)范作為知識獲取的知識源。建筑規(guī)范是用人類的自然語言描述的,無法直接編碼到計算機系統。設計規(guī)范知識獲取就是需要解決如何將自然語言描述的規(guī)范條文抽取轉換為某種知識表示方法。因此要想實現規(guī)則知識庫的建立,首先應在通過設計規(guī)范來抽取可以轉換的規(guī)范條文,對條文邏輯進行重組,將這些規(guī)范條文以選定的知識表示方法建模,將其形式化為適用于計算機應用程序的格式,形成最后的規(guī)則庫??赊D換的規(guī)則知識獲取過程如圖1所示。本文的規(guī)范知識獲取模式先將建筑規(guī)范形式化形成知識表達式,然后按照知識表達式的格式,將規(guī)范內容輸入至編輯系統形成規(guī)則庫。這種方式規(guī)則知識與推理過程分開,由規(guī)范獲取到的規(guī)則統一集中放置在規(guī)則庫中,非程序員可以進行規(guī)則的添加及修改,規(guī)則庫更新較為方便。
圖1 規(guī)范知識獲取示意圖
知識是人們對客觀世界的規(guī)律性的認識。知識的表示形式直接決定了知識的應用形式及處理和利用效率。產生式表示是目前最廣泛的知識表示法,這種表示法一般用于產生式系統,基于規(guī)則的專家系統就是一個產生式系統。本文在對設計規(guī)范做知識分析的基礎上,與BIM中信息分類的特點結合,選用產生式與面向對象結合的知識表示形式,建立了合規(guī)性檢查系統中的規(guī)則庫先將自然語言表達的規(guī)范條文轉換為合規(guī)性檢查的規(guī)則,規(guī)則采用產生式方法表示,然后將產生式規(guī)則以面向對象的方式封裝,使得一個對象可以包含多個約束規(guī)則。面向對象的知識表示過程如圖2所示,現實世界的實體即指規(guī)范條文中的檢查對象,計算機世界的對象是指BIM模型中的構件對象,BIM構件抽象為類,將類實例化就得到一個對象,從而可以調用對象的各種屬性及方法。然后統一構建類Rule Model,將知識表達式分解結構在類中定義屬性,進行類實例化后,將規(guī)則庫中的規(guī)則信息賦值給屬性從而進行規(guī)則的相關運算與推理。
圖2 面向對象的表示過程
規(guī)則庫是存儲建筑工程領域設計規(guī)則的集合。本文采用產生式規(guī)則表示規(guī)范知識,產生式規(guī)則由條件和結論兩部分組成??尚问交囊?guī)則以表達式分解的形式存儲在數據庫中,使用數據表這種簡潔的形式表示規(guī)范復雜的邏輯,從而建立規(guī)則庫。本文在確定規(guī)范知識表達式后,建立規(guī)則庫的過程分為選擇規(guī)則庫建立的工具、規(guī)則庫結構設計、建立規(guī)則庫、規(guī)則數據庫訪問四個階段。
(1)規(guī)則庫建立工具選擇
本文是以關系型數據庫來建立規(guī)則庫,考慮到SQL Server功能比較全面,效率高,與其他服務器軟件集成度高,并且SQL Server數據庫存儲數據的獨立性強,數據建立、擴充及修改也較容易實現。故選用此數據庫來建立規(guī)范規(guī)則庫,后期通過軟件和數據庫的連接,實現對規(guī)則的調取,并且通過插件功能實現數據庫后臺規(guī)則的增加、刪除和修改。
(2)規(guī)則庫結構設計
規(guī)范規(guī)則庫由條件集合構成,結論集合則是在程序中采用條件表達式來表示符合與不符合的結果,條件表達式如下:
“符合”? “符合”:“不符合”;
當合規(guī)性檢查結果“符合”為真,則返回結果“符合”,反之,返回結果“不符合”。規(guī)則庫條件的組成除了知識表達式的分解結構,還增加了條件id、規(guī)范名稱、章節(jié)號、條文描述幾個部分。規(guī)范名稱和章節(jié)號是為了說明該條條文出自哪本規(guī)范的哪一章節(jié),便于對檢查結果有疑問時進行規(guī)范的索引查詢。規(guī)范描述是規(guī)范的具體內容,是為了與BIM信息實時比對。其余知識表達式的部分用于后續(xù)的推理檢索。半形式化與不可形式化難以用結構化的表達式表示,其規(guī)則庫結構按照“規(guī)范名稱—章節(jié)號—建筑構件—條文描述”建立,規(guī)則庫結構字段類型同可形式化規(guī)則庫結構。
(3)建立規(guī)則庫
根據以上對條件集合表的結構設計創(chuàng)建規(guī)則數據庫表。數據庫表的創(chuàng)建有兩種方式,一種是直接在SQL Server軟件界面上操作建立,另一種是腳本法,即用代碼實現數據庫表的建立。對于沒有數據庫操作經驗的工程師想要查看或者修改規(guī)則,這兩種方式極其不方便。故本文采用先在Excel中建立規(guī)則表,再通過Revit插件界面導入數據庫的方式建立規(guī)范規(guī)則庫。在插件界面對數據庫進行操作的程序以C#語言為開發(fā)語言,引入數據庫ADO.NET程序集實現與數據源的交互。
(4)規(guī)則數據庫訪問
本文采用ADO.NET技術訪問規(guī)則數據庫,進而獲取規(guī)則知識,其體系結構如圖3所示??紤]到需要在合規(guī)性檢查系統界面對規(guī)則庫進行編輯,本文通過DataSet訪問規(guī)則數據庫,獲取規(guī)則信息。訪問規(guī)則庫的基本過程包括:聲明并創(chuàng)建SqlConnection對象實例創(chuàng)建數據庫連接、構造包含查詢語句的SqlDataAdapter對象、填充數據到DataSet、以及規(guī)則數據操作。
圖3 ADO.NET體系結構
通過對Revit建立的BIM模型圖元體系分析可知,模型元素包含模型圖元、基準圖元、視圖專用圖元,其中模型圖元是直接構成建筑的各類構件,每個構件都含有豐富的屬性信息。建筑設計規(guī)范合規(guī)性檢查通常檢查的屬性有面積、尺寸、空間、數量等,其中面積和尺寸可直接獲取元素后提取屬性信息獲得。數量以過濾器的方式獲取某一對象的集合,通過集合的Count屬性計算數量??臻g信息的獲取屬于數據衍生,不能直接提取獲得,如凈高需要同時獲取上樓板的底面和下樓板頂面的標高,然后通過運算得出結果。合規(guī)性檢查中需要檢查多種類別的構件,如果對每種構件都建立一個過濾的方式,無疑會大大增加編程的工作量??紤]到規(guī)范中的構件對象與BIM模型的構件類別存在一定的對應關系,本文建立了BIM模型與規(guī)則信息映射關系,直接在BIM模型中獲取包含規(guī)范構件的類別,然后過濾實例,提取這些實例模型的屬性信息。然而,并非所有BIM模型的構件與規(guī)范構件對象全部一一對應。因而當模型構件與規(guī)范檢查對象對應時,本文通過建立BIM構件與規(guī)范對象間的映射關系提取屬性信息,當不能通過映射關系獲取構件對象時,以過濾器的方式先獲取構件再提取屬性信息。過濾器信息獲取方式可以封裝為一個方法,當提取方式與前面一致時,可直接調用方法獲取屬性信息。BIM構件信息與規(guī)范約束對象的映射關系如圖4所示,BIM模型中的元素與規(guī)范中的構件構成了對象間的映射關系,圖元屬性與構件約束構成了屬性間的映射關系。
圖4 BIM構件信息與規(guī)范約束對象間的映射關系
通過映射關系提取的屬性信息一般為屬性直接獲取的過程,合規(guī)性檢查中的檢查對象對應規(guī)范中的構件對象,因而對BIM模型進行檢查需要獲取與規(guī)范構件對象對應的元素類別,再獲取與規(guī)范構件對象約束的屬性值。將這個獲取的過程封裝為一個通過規(guī)范構件對象提取對應屬性的方法,即構建了BIM模型與規(guī)范間的對象映射與對象屬性映射。圖5是BIM構件與規(guī)范構件之前映射關系的建立過程,首先與規(guī)則數據庫建立連接,當BIM模型中的構件與規(guī)則庫中建筑構件一致時,返回模型構件。圖6是BIM屬性信息與規(guī)范構件約束的映射關系建立過程,首選選擇規(guī)則數據庫中所有的構件,獲取構件的屬性約束,如果BIM構件的Parameter參數與構件屬性約束一致,返回構件的Parameter參數。
圖5 BIM構件與規(guī)范構件的映射關系的建立方法
圖6 BIM屬性信息與規(guī)范構件約束的映射關系建立方法
基于專家系統與BIM的合規(guī)性檢查系統是在BIM平臺集成BIM設計模型和建筑設計規(guī)范,利用推理機制驗證建筑設計是否符合規(guī)范要求,并將檢查報告通過系統輸出。本文開發(fā)環(huán)境和工具包括:Revit平臺、NET框架、C#編程語言、Revit 2016以及SQL Server 數據庫。
首先使用Revit建立BIM模型,選取模型進行檢查點分析。如圖7所示,圖中展示了項目BIM模型對應規(guī)則庫中的相關檢查點,檢查內容包括入戶門、臥室門等各類門的高度及寬度、不同功能房間的面積及凈高要求、一定條件下墻體長度、樓梯的相關參數等。以樓梯為例,圖7展示了樓梯的檢查點在Revit中數據信息,這些數據信息是保證構件能夠進行合規(guī)性檢查的數據源,通過API獲取這些數據,即可實現該樓梯的檢查。
圖7 案例項目BIM模型檢查點及數據信息展示
根據合規(guī)性檢查系統框架,模型信息與規(guī)則信息的匹配過程如圖8所示。首先將BIM構件的類別與規(guī)則信息中的檢查對象匹配,如匹配成功則使用Revit API的過濾器功能,篩選出該構件類型下的構件實例,然后提取構件實例與規(guī)則屬性對應的屬性信息。信息自動匹配同時也是檢查BIM信息的完備性的過程,若信息不完整,BIM信息模塊則缺少規(guī)范中的檢查對象,需要通過API構建過濾器獲取元素提取屬性參數。
圖8 BIM信息自動匹配
自動檢查過程如圖9所示,以模塊①中的規(guī)則信息為條件,將模塊②中的BIM信息作為已知事實,結合兩者數據信息判斷BIM信息是否符合規(guī)范的過程。自動檢查的過程在模塊③中進行,通過選擇模塊②中的構件實例,構件屬性信息自動填充到模塊③中的屬性值,實現模型信息與規(guī)則信息的比較,這部分合規(guī)性檢查是通過BIM模型值與規(guī)則數值匹配完成的,最后檢查結果在模塊⑤中輸出。
圖9 合規(guī)性檢查系統運行主界面
本文探討了建筑設計合規(guī)性檢查的一般理論與方法,介紹了專家系統在合規(guī)性檢查中的應用,分析了建筑設計規(guī)范知識獲取和表達,并建立了合規(guī)性檢查系統,實現了基于BIM模型的建筑設計合規(guī)性自動檢查。通過研究論文提出,實現合規(guī)性自動檢查不僅需要技術手段,更需要從行業(yè)發(fā)展的戰(zhàn)略層面上來解決規(guī)范與模型間的對應問題。本文建模精細為LOD300,通過系統驗證仍然存在信息缺失的問題,因而還需要展開BIM數據標準的相關研究,建立滿足合規(guī)性自動檢查要求的BIM設計模型交付標準。另外,目前建筑設計規(guī)范的結構化程度并不高,條文描述語言不規(guī)范,這也是導致規(guī)則與模型間難以匹配的原因之一,這就要求規(guī)范條文描述還應更加規(guī)范、標準,以便更適應今后智能系統的發(fā)展。