陈 远 张 雨 康 虹
(郑州大学 土木工程学院,郑州 450001)
建筑行业涉及专业类别较多,不同专业规范标准也不同,存在上百本不同的规范,规范中所蕴含的知识内容丰富,这就要求设计人员及审核人员能够充分理解和掌握这些标准和规范。目前,我国的建筑设计合规性检查仍以人工为主,结果取决于检查人员对规范的理解以及所具有的设计经验,其检查过程非常耗时,检查结果具有较强的主观性。
BIM技术的出现改变了传统建筑业的生产方式和管理模式,实现了工程项目在规划、设计、施工和运营等过程信息共享,并保证各个阶段、不同专业间的信息集成。基于BIM模型的建筑设计合规性检查被越来越多的研究人员所重视,基于BIM模型的建筑设计合规性自动检查,对提高设计模型检查的效率和精度,提高基于BIM的建筑设计自动化具有重要的影响。
建筑设计合规性自动检查是指以计算机方法检查建筑设计是否符合规范的过程。Ismail学者[1]指出设计合规性自动检查是一个通过其对象、属性和关系来自动评估设计的过程或者系统。基于BIM的设计规范自动检查是实现BIM数据信息自动抽取,提取出需要检查的模型信息,将建筑规范转换为计算机可识别的规则模式,为设计合规性检查提供约束知识库。
目前比较成熟并且采纳最多的合规性检查方法由Eastman等人提出,将规则检查分为四个阶段,分别为:规则转译、模型准备、规则执行和检查结果报告[2]等。Martins JP依据Eastman的方法,提出建筑给水系统的合规性自动检测的方法及软件应用[3],胡培宁以此方法框架为理论基础,提出了BIM模型的防火设计审查系统构想[4]。宫松培等人以Eastman的四阶段模型为理论依据,建立了深基坑自动图审知识库,研究了深基坑专项施工方案BIM模型所需信息,在此基础上设计开发了基于BIM的深基坑自动审图系统[5]。
Eastman的方法体系能够展现一个完整的合规性检查步骤,但是此方法体系中未能体现一个开放的环境来编写规则,通常规则由计算机编程功能直接嵌入到程序代码中实现规则检查,缺少独立于程序的数据库后端管理系统来集中储存管理规则信息。而专家系统的知识库与程序相互独立,系统求解的过程是通过知识库中的知识来模拟专家求解问题的思维方式,这种方式允许用户在知识库中增加知识以不断完善系统。因而尝试以专家系统的结构构建规则与程序独立的系统来实现合规性检查,是合规性检查领域一种新的思路。
专家系统是一个智能的计算机系统,其内部存储有某一特定领域专家的知识或经验,应用系统可以模拟人类专家决策的过程从而解决特定领域的实际问题。在建筑工程领域,专家系统主要应用在项目评估、诊断、决策和预测、建筑设计优化等方面[6]。目前,有部分学者按照专家系统结构进行规则检查的研究。DelisI, Ethymios A讨论了Fire-Code-Analyzer(防火规范分析)系统的设计与实现,该系统是一种用于防火规范检查的专家系统[7]。李雪等人结合专家系统结构构建了基于Revit平台的电气设计审图系统,介绍了审图系统各模块功能[8]。蒋鹏学者提到了采用专家系统模型,把规范建成知识库,每条规范简化为一个产生式规则的形式[9]。
目前的专家系统语言,必须以特定格式输入规则,而建筑设计规范条文繁多,结构形式不一,难以实现用专家系统语言来描述规范条文。因而本文采取这种基本专家系统结构,利用数据库结构化储存设计规范条文,构建推理机制,实现规范检查的结果。专家系统是一种基于知识的系统,其重要技术问题是知识表达,知识的抽取和知识的推理。如何将建筑设计规范条文进行知识表达,知识抽取是构建规则库的主要技术问题,结合BIM信息与规则知识库进行推理是得出合规性检查结果的核心问题。
知识获取是把用于求解某个领域问题的知识从拥有这些知识的知识源中,通过识别、理解和归纳等手段抽取出来,建立知识库的过程。建筑规范是经过长久的经验积累及科学实验得出的指导性文件,设计人员进行建筑设计时必须要遵从相关规范。因而设计合规性检查是以建筑设计规范作为知识获取的知识源。建筑规范是用人类的自然语言描述的,无法直接编码到计算机系统。设计规范知识获取就是需要解决如何将自然语言描述的规范条文抽取转换为某种知识表示方法。因此要想实现规则知识库的建立,首先应在通过设计规范来抽取可以转换的规范条文,对条文逻辑进行重组,将这些规范条文以选定的知识表示方法建模,将其形式化为适用于计算机应用程序的格式,形成最后的规则库。可转换的规则知识获取过程如图1所示。本文的规范知识获取模式先将建筑规范形式化形成知识表达式,然后按照知识表达式的格式,将规范内容输入至编辑系统形成规则库。这种方式规则知识与推理过程分开,由规范获取到的规则统一集中放置在规则库中,非程序员可以进行规则的添加及修改,规则库更新较为方便。
图1 规范知识获取示意图
知识是人们对客观世界的规律性的认识。知识的表示形式直接决定了知识的应用形式及处理和利用效率。产生式表示是目前最广泛的知识表示法,这种表示法一般用于产生式系统,基于规则的专家系统就是一个产生式系统。本文在对设计规范做知识分析的基础上,与BIM中信息分类的特点结合,选用产生式与面向对象结合的知识表示形式,建立了合规性检查系统中的规则库先将自然语言表达的规范条文转换为合规性检查的规则,规则采用产生式方法表示,然后将产生式规则以面向对象的方式封装,使得一个对象可以包含多个约束规则。面向对象的知识表示过程如图2所示,现实世界的实体即指规范条文中的检查对象,计算机世界的对象是指BIM模型中的构件对象,BIM构件抽象为类,将类实例化就得到一个对象,从而可以调用对象的各种属性及方法。然后统一构建类Rule Model,将知识表达式分解结构在类中定义属性,进行类实例化后,将规则库中的规则信息赋值给属性从而进行规则的相关运算与推理。
图2 面向对象的表示过程
规则库是存储建筑工程领域设计规则的集合。本文采用产生式规则表示规范知识,产生式规则由条件和结论两部分组成。可形式化的规则以表达式分解的形式存储在数据库中,使用数据表这种简洁的形式表示规范复杂的逻辑,从而建立规则库。本文在确定规范知识表达式后,建立规则库的过程分为选择规则库建立的工具、规则库结构设计、建立规则库、规则数据库访问四个阶段。
(1)规则库建立工具选择
本文是以关系型数据库来建立规则库,考虑到SQL Server功能比较全面,效率高,与其他服务器软件集成度高,并且SQL Server数据库存储数据的独立性强,数据建立、扩充及修改也较容易实现。故选用此数据库来建立规范规则库,后期通过软件和数据库的连接,实现对规则的调取,并且通过插件功能实现数据库后台规则的增加、删除和修改。
(2)规则库结构设计
规范规则库由条件集合构成,结论集合则是在程序中采用条件表达式来表示符合与不符合的结果,条件表达式如下:
“符合”? “符合”:“不符合”;
当合规性检查结果“符合”为真,则返回结果“符合”,反之,返回结果“不符合”。规则库条件的组成除了知识表达式的分解结构,还增加了条件id、规范名称、章节号、条文描述几个部分。规范名称和章节号是为了说明该条条文出自哪本规范的哪一章节,便于对检查结果有疑问时进行规范的索引查询。规范描述是规范的具体内容,是为了与BIM信息实时比对。其余知识表达式的部分用于后续的推理检索。半形式化与不可形式化难以用结构化的表达式表示,其规则库结构按照“规范名称—章节号—建筑构件—条文描述”建立,规则库结构字段类型同可形式化规则库结构。
(3)建立规则库
根据以上对条件集合表的结构设计创建规则数据库表。数据库表的创建有两种方式,一种是直接在SQL Server软件界面上操作建立,另一种是脚本法,即用代码实现数据库表的建立。对于没有数据库操作经验的工程师想要查看或者修改规则,这两种方式极其不方便。故本文采用先在Excel中建立规则表,再通过Revit插件界面导入数据库的方式建立规范规则库。在插件界面对数据库进行操作的程序以C#语言为开发语言,引入数据库ADO.NET程序集实现与数据源的交互。
(4)规则数据库访问
本文采用ADO.NET技术访问规则数据库,进而获取规则知识,其体系结构如图3所示。考虑到需要在合规性检查系统界面对规则库进行编辑,本文通过DataSet访问规则数据库,获取规则信息。访问规则库的基本过程包括:声明并创建SqlConnection对象实例创建数据库连接、构造包含查询语句的SqlDataAdapter对象、填充数据到DataSet、以及规则数据操作。
图3 ADO.NET体系结构
通过对Revit建立的BIM模型图元体系分析可知,模型元素包含模型图元、基准图元、视图专用图元,其中模型图元是直接构成建筑的各类构件,每个构件都含有丰富的属性信息。建筑设计规范合规性检查通常检查的属性有面积、尺寸、空间、数量等,其中面积和尺寸可直接获取元素后提取属性信息获得。数量以过滤器的方式获取某一对象的集合,通过集合的Count属性计算数量。空间信息的获取属于数据衍生,不能直接提取获得,如净高需要同时获取上楼板的底面和下楼板顶面的标高,然后通过运算得出结果。合规性检查中需要检查多种类别的构件,如果对每种构件都建立一个过滤的方式,无疑会大大增加编程的工作量。考虑到规范中的构件对象与BIM模型的构件类别存在一定的对应关系,本文建立了BIM模型与规则信息映射关系,直接在BIM模型中获取包含规范构件的类别,然后过滤实例,提取这些实例模型的属性信息。然而,并非所有BIM模型的构件与规范构件对象全部一一对应。因而当模型构件与规范检查对象对应时,本文通过建立BIM构件与规范对象间的映射关系提取属性信息,当不能通过映射关系获取构件对象时,以过滤器的方式先获取构件再提取属性信息。过滤器信息获取方式可以封装为一个方法,当提取方式与前面一致时,可直接调用方法获取属性信息。BIM构件信息与规范约束对象的映射关系如图4所示,BIM模型中的元素与规范中的构件构成了对象间的映射关系,图元属性与构件约束构成了属性间的映射关系。
图4 BIM构件信息与规范约束对象间的映射关系
通过映射关系提取的属性信息一般为属性直接获取的过程,合规性检查中的检查对象对应规范中的构件对象,因而对BIM模型进行检查需要获取与规范构件对象对应的元素类别,再获取与规范构件对象约束的属性值。将这个获取的过程封装为一个通过规范构件对象提取对应属性的方法,即构建了BIM模型与规范间的对象映射与对象属性映射。图5是BIM构件与规范构件之前映射关系的建立过程,首先与规则数据库建立连接,当BIM模型中的构件与规则库中建筑构件一致时,返回模型构件。图6是BIM属性信息与规范构件约束的映射关系建立过程,首选选择规则数据库中所有的构件,获取构件的属性约束,如果BIM构件的Parameter参数与构件属性约束一致,返回构件的Parameter参数。
图5 BIM构件与规范构件的映射关系的建立方法
图6 BIM属性信息与规范构件约束的映射关系建立方法
基于专家系统与BIM的合规性检查系统是在BIM平台集成BIM设计模型和建筑设计规范,利用推理机制验证建筑设计是否符合规范要求,并将检查报告通过系统输出。本文开发环境和工具包括:Revit平台、NET框架、C#编程语言、Revit 2016以及SQL Server 数据库。
首先使用Revit建立BIM模型,选取模型进行检查点分析。如图7所示,图中展示了项目BIM模型对应规则库中的相关检查点,检查内容包括入户门、卧室门等各类门的高度及宽度、不同功能房间的面积及净高要求、一定条件下墙体长度、楼梯的相关参数等。以楼梯为例,图7展示了楼梯的检查点在Revit中数据信息,这些数据信息是保证构件能够进行合规性检查的数据源,通过API获取这些数据,即可实现该楼梯的检查。
图7 案例项目BIM模型检查点及数据信息展示
根据合规性检查系统框架,模型信息与规则信息的匹配过程如图8所示。首先将BIM构件的类别与规则信息中的检查对象匹配,如匹配成功则使用Revit API的过滤器功能,筛选出该构件类型下的构件实例,然后提取构件实例与规则属性对应的属性信息。信息自动匹配同时也是检查BIM信息的完备性的过程,若信息不完整,BIM信息模块则缺少规范中的检查对象,需要通过API构建过滤器获取元素提取属性参数。
图8 BIM信息自动匹配
自动检查过程如图9所示,以模块①中的规则信息为条件,将模块②中的BIM信息作为已知事实,结合两者数据信息判断BIM信息是否符合规范的过程。自动检查的过程在模块③中进行,通过选择模块②中的构件实例,构件属性信息自动填充到模块③中的属性值,实现模型信息与规则信息的比较,这部分合规性检查是通过BIM模型值与规则数值匹配完成的,最后检查结果在模块⑤中输出。
图9 合规性检查系统运行主界面
本文探讨了建筑设计合规性检查的一般理论与方法,介绍了专家系统在合规性检查中的应用,分析了建筑设计规范知识获取和表达,并建立了合规性检查系统,实现了基于BIM模型的建筑设计合规性自动检查。通过研究论文提出,实现合规性自动检查不仅需要技术手段,更需要从行业发展的战略层面上来解决规范与模型间的对应问题。本文建模精细为LOD300,通过系统验证仍然存在信息缺失的问题,因而还需要展开BIM数据标准的相关研究,建立满足合规性自动检查要求的BIM设计模型交付标准。另外,目前建筑设计规范的结构化程度并不高,条文描述语言不规范,这也是导致规则与模型间难以匹配的原因之一,这就要求规范条文描述还应更加规范、标准,以便更适应今后智能系统的发展。