一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

并行化BIM模型检查方法及装置与流程

2022-03-05 09:27:41 来源:中国专利 TAG:

并行化bim模型检查方法及装置
技术领域
1.本发明涉及建筑技术领域,具体而言,涉及一种并行化bim模型检查方法及装置。


背景技术:

2.bim(building information model,建筑信息模型)是以三维模型为基础的面向建筑信息应用的技术,能够有效应用于建筑与基础设施的规划、设计、建造、管理等阶段,是建筑、工程和施工阶段最具发展力的技术之一。在bim技术推广落地过程中,实现基于bim模型的建筑规范审查,对于促进bim行业进步和发展具有重要作用。
3.相关技术中,可以使用建筑规范审查工具bimchecker对bim模型进行审查,以确定bim模型对应的建筑是否符合规范。如图1所示,bimchecker工具主要由规则库构建子工具、语义模型转换模块、bim模型检查引擎和输出展示模块等构成。规则库构建子工具用于向用户提供将自然语言建筑规范条款编写成便于计算机解析执行的snl(structural natural language,建筑规范描述语言)规则的接口,供用户编写snl规则(可参考领域数据库编写),并将用户编写的snl规则自动转换成sparql语句用于查询。语义模型转换模块用于对bim模型进行语义提取,获得包含模型语义内容的owl(web ontology language,网络本体语言)模型。bim模型检查引擎用于通过sparql语句查询owl模型,以确定建筑是否符合规范,并传输给输出展示模块展示检查结果。
4.在实际审查中,往往存在运行效率相关的问题。出现性能有较大问题时一般有两种情况。一方面是个别snl条款或计算性规则编制的具体问题,常常需要结合出现性能问题的特殊模型进行处理。另一方面则是更为普遍的,由于模型规模、数据存储传输带来的各类性能问题。因此,bimchecker工具除了需要检查bim模型对应的建筑是否符合规范,还需要进行完整性和一致性检查。其中,完整性检查一般是对建模质量的考虑,如条款涉及的构件的缺失与属性的缺失等,操作上是将snl中需要检查完整性的构件、属性等筛选出,并构造生成用于检查构件与属性是否缺失的sparql;一致性检查是对条款具体语义、数值等“定量”的检查,操作上是针对snl中描述的语义,构造用于检查构件是否存在错误的sparql。然而,在目前审查过程中,bim模型检查引擎是串行按照条款顺序进行检查的,一般4核cpu(central processing unit,中央处理器)机器中,检查过程只占用10~20%的cpu利用率,从而导致cpu利用率和检查效率都比较低。


技术实现要素:

5.本发明提供了一种并行化bim模型检查方法及装置,能够通过并行检查完整性和一致性,以提高cpu利用率和检查效率。具体的技术方案如下:
6.第一方面,本发明实施例提供了一种并行化bim模型检查方法,所述方法包括:
7.获取基于建筑规则描述语言snl规则生成的sparql检查语句,所述snl规则为基于snl编写的建筑规范条款;
8.针对每一条snl规则,分别获取sparql检查语句中的至少一个第一字段和至少一
个第二字段,所述第一字段为与完整性检查相关的字段,所述第二字段为与一致性检查相关的字段;
9.将每一个第一字段作为独立任务加入第一任务队列,将每一个第二字段作为独立任务加入第二任务队列;
10.将所述第一任务队列中的多个任务提交到线程池,并行检查建筑语义模型的完整性,所述建筑语义模型为基于建筑信息模型bim进行语义抽取获得的模型;在所述第一任务队列中的任务完成后,将第二任务队列中的多个任务提交到线程池,并行检查所述建筑语义模型与snl规则的一致性;
11.或者,将所述第一任务队列或者所述第二任务队列中的多个任务提交到线程池,并行进行相应检查,所述相应检查包括所述第一任务队列对应完整性检查,所述第二任务队列对应一致性检查。
12.可选的,所述第一字段包括checkvalid字段,所述第二字段包括checksql、checkcomp以及checkref字段。
13.可选的,将每一个第一字段作为独立任务加入第一任务队列,将每一个第二字段作为独立任务加入第二任务队列,包括:
14.将包含多个独立子项的第一字段中多个子项分别作为独立任务,将未包含多个独立子项的第一字段作为独立任务,加入所述第一任务队列;
15.将包含多个独立子项的第二字段中多个子项分别作为独立任务,将未包含多个独立子项的第二字段作为独立任务,加入所述第二任务队列。
16.可选的,所述方法还包括:
17.针对不同snl规则,并行进行完整性和一致性检查。
18.可选的,将每一个第一字段作为独立任务加入第一任务队列,将每一个第二字段作为独立任务加入第二任务队列,包括:
19.基于每一个第一字段生成一个callable实例,将第一字段的callable实例作为独立任务加入第一任务队列;
20.基于每一个第二字段生成一个callable实例,将第二字段的callable实例作为独立任务加入第二任务队列。
21.可选的,所述方法还包括:
22.监控针对每一条snl规则进行完整性和/或一致性检查的时间是否发生超时;
23.若发生超时,则针对发生超时的snl规则生成超时日志。
24.第二方面,本发明实施例提供了一种并行化bim模型检查装置,所述装置包括:
25.第一获取单元,用于获取基于建筑规则描述语言snl规则生成的sparql检查语句,所述snl规则为基于snl编写的建筑规范条款;
26.第二获取单元,用于针对每一条snl规则,分别获取sparql检查语句中的至少一个第一字段和至少一个第二字段,所述第一字段为与完整性检查相关的字段,所述第二字段为与一致性检查相关的字段;
27.队列生成单元,用于将每一个第一字段作为独立任务加入第一任务队列,将每一个第二字段作为独立任务加入第二任务队列;
28.并行检查单元,用于将所述第一任务队列中的多个任务提交到线程池,并行检查
建筑语义模型的完整性,所述建筑语义模型为基于建筑信息模型bim进行语义抽取获得的模型;在所述第一任务队列中的任务完成后,将第二任务队列中的多个任务提交到线程池,并行检查所述建筑语义模型与snl规则的一致性;或者,将所述第一任务队列或者所述第二任务队列中的多个任务提交到线程池,并行进行相应检查,所述相应检查包括所述第一任务队列对应完整性检查,所述第二任务队列对应一致性检查。。
29.可选的,所述第一字段包括checkvalid字段,所述第二字段包括checksql、checkcomp以及checkref字段。
30.可选的,所述队列生成单元,包括:
31.第一队列生成模块,用于将包含多个独立子项的第一字段中多个子项分别作为独立任务,将未包含多个独立子项的第一字段作为独立任务,加入所述第一任务队列;
32.第二队列生成模块,用于将包含多个独立子项的第二字段中多个子项分别作为独立任务,将未包含多个独立子项的第二字段作为独立任务,加入所述第二任务队列。
33.可选的,所述并行检查单元,还用于针对不同snl规则,并行进行完整性和一致性检查。
34.可选的,所述队列生成单元,用于基于每一个第一字段生成一个callable实例,将第一字段的callable实例作为独立任务加入第一任务队列;基于每一个第二字段生成一个callable实例,将第二字段的callable实例作为独立任务加入第二任务队列。
35.可选的,所述装置还包括:
36.监控单元,用于监控针对每一条snl规则进行完整性和/或一致性检查的时间是否发生超时;
37.日志生成单元,用于若发生超时,则针对发生超时的snl规则生成超时日志。
38.第三方面,本发明实施例提供了一种存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现第一方面所述的方法。
39.第四方面,本发明实施例提供了一种电子设备,包括:
40.一个或多个处理器;
41.存储装置,用于存储一个或多个程序,
42.其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现第一方面所述的方法。
43.由上述内容可知,本发明实施例提供的一种并行化bim模型检查方法及装置,能够在获取基于snl规则生成的sparql检查语句后,不是直接进行顺序检查,而是先针对每一条snl规则,分别获取sparql检查语句中与完整性检查相关的至少一个第一字段和与一致性检查相关的至少一个第二字段,再将每一个第一字段作为独立任务加入第一任务队列,将每一个第二字段作为独立任务加入第二任务队列,最后根据检查需求采用不同的并行检查策略,如可以第一任务队列或者第二任务队列提交给线程池进行并行处理,也可以先将第一任务队列提交给线程池进行并行处理,再将第二任务队列提交给线程池进行并行处理,从而不仅提高了cpu利用率,还提高了完整性和一致性的检查效率。当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
44.本发明实施例的创新点包括:
45.1、针对每条snl规则,可以获取sparql检查语句中与完整性检查相关的至少第一
字段和与一致性检查相关的至少一个第二字段,并将每个字段作为独立任务加入队列,再根据检查需求采用不同的并行化检查策略,以提高检查效率。针对不同snl规则,也可以进行并行化处理。
46.2、当第一字段或者第二字段包括多个独立子项时,可以分别将每个独立子项拆分出来作为独立任务进行处理,从而进一步提高了检查效率。
47.3、通过监控针对每一条snl规则进行完整性和/或一致性检查的时间是否发生超时,并记录超时日志,可以方便用户有针对性地、及时地对影响检查效率的snl规则进行完善。
附图说明
48.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例。对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
49.图1为现有技术提供的一种建筑规范审查工具的结构示意图;
50.图2为本发明实施例提供的一种并行化bim模型检查方法的流程示意图;
51.图3为本发明实施例提供的四种分类检查的示意图;
52.图4为本发明实施例提供的一种计算性规则并行化处理嵌套任务的示意图;
53.图5为本发明实施例提供的一种含超时方案的检查结果综合流程图;
54.图6为本发明实施例提供的一种bim模型智能检查引擎平台化系统的架构示意图;
55.图7为本发明实施例提供的一种bim模型智能检查引擎平台化系统的功能模块组成框图;
56.图8为本发明实施例提供的一种并行化bim模型检查装置的结构示意图。
具体实施方式
57.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
58.需要说明的是,本发明实施例及附图中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含的一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
59.本发明提供了一种并行化bim模型检查方法及装置,能够通过并行检查完整性和一致性,以提高cpu利用率和检查效率。本发明实施例所提供的方法,可以应用于任一具有计算能力的电子设备,该电子设备可以为终端或者服务器。在一种实现中,实现该方法的功能软件可以以单独的客户端软件的形式存在,也可以以目前相关的客户端软件的插件的形式存在,这都是可以的。下面对本发明实施例进行详细说明。
60.图2为本发明实施例提供的并行化bim模型检查方法的一种流程示意图。该方法可
以包括如下步骤:
61.s100:获取基于snl规则生成的sparql检查语句。
62.所述snl规则为基于snl编写的建筑规范条款。snl从结构上主要可以分为简单句、复合句和条件句。
63.简单句=(前缀名词短语(后缀名词短语((《且》|《或》)后缀名词短语)*)|(前缀名词动词短语((《且》|《或》)动词短语)*))
64.复合句=简单句(《并且》简单句)*
65.条件句=《if》(复合条件句|存在一个条件句)
66.《then》(复合条件句|存在一个条件句)
67.示例性的,下述文本是一条snl规则样例,从样例可观察到snl易于理解,基本上能够按照汉语的语序顺畅阅读。
[0068][0069]
为了便于计算机执行,需要将基于snl规则转换成sparql检查语句。具体,bimchecker工具在解析snl语句时可以采用javacc工具。javacc是java平台最广泛使用的语法生成器之一。通过javacc可以将上述结构化的snl转化为snlsentence类的实例。该snlsentence类基本按照snl语法结构存储各单元,可用于后续构造查询语句使用。snlsentence后续将通过一系列复杂算法,构造出sparql查询语句。
[0070]
s110:针对每一条snl规则,分别获取sparql检查语句中的至少一个第一字段和至少一个第二字段。
[0071]
每条snl规则可以包括至少一个第一字段和/或至少一个第二字段。所述第一字段为与完整性检查相关的字段,所述第二字段为与一致性检查相关的字段。所述第一字段包括checkvalid字段,所述第二字段包括checksql、checkcomp以及checkref字段。checkvalid字段包含针对条款中编制后的snl所涉及到的构件内容检查的sparql语句。checksql是针对原始snl在规则库管理工具中已预先生成的sparql查询语句。checkcomp作为计算性规则,需要在引擎中根据具体的计算性规则种类,从owl模型中提取相关的构件,动态生成sparql进行查询。并且,计算性规则需要对查询后的结果进行后处理得到实际需要的最终结果。checkref字段是对其他条款的引用,指向另一个条款,本身不包含检查信息,引擎运行时定位到其指向的条款进行检查。
[0072]
s120:将每一个第一字段作为独立任务加入第一任务队列,将每一个第二字段作为独立任务加入第二任务队列。
[0073]
具体实施过程中,可以基于每一个第一字段生成一个callable实例,将第一字段的callable实例作为独立任务加入第一任务队列;基于每一个第二字段生成一个callable实例,将第二字段的callable实例作为独立任务加入第二任务队列。
[0074]
当第一字段或者第二字段中包括多个独立子项时,可以将多个独立子项拆分成独立任务,并行执行。也就是说,可以将包含多个独立子项的第一字段中多个子项分别作为独立任务,将未包含多个独立子项的第一字段作为独立任务,加入所述第一任务队列;将包含多个独立子项的第二字段中多个子项分别作为独立任务,将未包含多个独立子项的第二字段作为独立任务,加入所述第二任务队列。
[0075]
实际应用中,若选择单独进行完整性或一致性检查时,由于没有了查询间的关系,不需要特殊的额外处理,所以可以分别针对完整性和一致性进行并行检查,即执行步骤s140。当同时进行完整性与一致性检查时,实际上一致性检查可以看作完整性检查的后续流程。当存在构件缺失与属性缺失等完整性问题时,往往需要修改建模重新进行整体检查。若完整性问题过多,一致性检查的意义就大大减弱。当无并行、全部检查结束时产出报告时,该问题影响较小。然而,并行执行全部完整性与一致性检查时,对应一致性检查条款应于完整性检查之后才更具有意义。抽象而言,即检查原子项之间存在前后关系,需要先检查完整性再检查一致性,即执行步骤s130。
[0076]
s130:将所述第一任务队列中的多个任务提交到线程池,并行检查建筑语义模型的完整性;在所述第一任务队列中的任务完成后,将第二任务队列中的多个任务提交到线程池,并行检查所述建筑语义模型与snl规则的一致性。
[0077]
所述建筑语义模型为基于bim进行语义抽取获得的模型,例如可以为owl模型。线程池的大小可自定义配置为与cpu核数正相关,可以适配各种计算环境下cpu核数算力差异的情况。
[0078]
对于完整性检查的并行处理或者一致性检查的并行处理,本发明实施例在java内置的java.util.concurrent并行包下的工具函数的基础上进行定制。其中,通过executorservice服务新建指定大小的线程池pthread=n,同时采用callable future实例的方案。将所有原子任务ti(即上述独立任务)包装为数callable实例ci,来容纳原先的sparql查询部分。同时,生成future实例fi,该实例相当于存储sparql查询任务ti的预期任务,可随时在指定的条件下进行执行并得到实际查询结果。对于原子任务的提交方案,在保证原有执行顺序不变的情况下,通过构建一个itemresultcollection集合,将原先存储所有sparql查询结果,替换为存储callable列表。在顺序执行过程中,替换为向itemresultcollection中提交包装后的callable实例。在全部既有检查顺序执行完毕后,对itemresultcollection中全部的callable进行迭代,再提交到线程池中运行。
[0079]
s140:将所述第一任务队列或者所述第二任务队列中的多个任务提交到线程池,并行进行相应检查,所述相应检查包括所述第一任务队列对应完整性检查,所述第二任务队列对应一致性检查。
[0080]
从处理任务解析、提交任务到并行执行与合并检查结果的整体算法伪代码可以参考如下内容:
[0081][0082][0083]
上述方法是完整性与一致性检查并行的基础。实际实现中还需进行线程安全处理,需要对共享的语义与模型数据进行锁控制。需要说明的一点是语义查询使用的jena引擎本身不包含线程安全处理,在同一jvm下多线程处理时,jena引擎提供mrsw(multiple-reader,single-writer)的并发支持,通过enter/leavecriticalsection()方法对sparql原子项中jena引擎的查询进行临界区控制。
[0084]
上述方法是针对一条snl规则的并行处理过程,为了进一步提高完整性和一致性检查的效率,针对不同snl规则也可以开启多个线程并行进行检查。
[0085]
本发明实施例提供的一种并行化bim模型检查方法,能够在获取基于snl规则生成的sparql检查语句后,不是直接进行顺序检查,而是先针对每一条snl规则,分别获取sparql检查语句中的完整性检查相关的至少一个第一字段和与一致性检查相关的至少一
object notation,js对象简谱)语义模型一定意义上是为了通用性、生成解析的便捷以及可读性。这是以牺牲数据体积为代价的。其中如ei、en等构件信息,以及键值对属性的命名已经考虑到部分体积的成本,然而json仍非网络传输的最佳选择。下面将对各类文件结构进行评估,并给出最终处理方法。
[0095]
对于可与json同义互转的二进制文件格式,bson(binary serialized document format)与msgpack是两大可选项,两者分别有着不同的二进制结构,可分别对json同结构转换,都拥有缩减json语义模型大小的可能。如表1所示,是几个样例模型在两种方案下的压缩比例。
[0096]
表1
[0097][0098][0099]
由上观察可得,bson由于增加索引等相关数据,对于建筑语义模型反而会增加大小,而msgpack可以压缩30%左右空间,效果显著。msgpack格式进行调整的基础上,对模型针对两种常用算法进行压缩测试,如表2所示。可以得知,两压缩算法对模型都有极高的压缩率,可以减少95%左右空间。该情况是由于json语义模型中有大量重复字段,如构件id、构件名称等。
[0100]
表2
[0101][0102]
最终,综合考虑格式转换、压缩效率与语义模型文件最终体积,以及对已上线引擎的兼容性,本发明实施例未修改语义模型结构,而采用了上述msgpack配合deflate算法压缩的形式。可以使得平台端前端提交审查任务时,极大地提高模型传输效率。
[0103]
(二)综合平台的并行检查结果
[0104]
bim模型条款检查的最终产物,是针对各个已选择的检查条款在bim模型上检查得到的结果报告。对应到bimchecker引擎中,即引擎执行完各个原子查询后,自底向上对snl、条款、规则库来进行汇总综合。结果综合需要考虑并行优化带来的影响。下面将从本发明实施例的报告综合过程的复杂条款的超时设计及实时流式结果反馈两点说明进一步的优化方法。
[0105]
针对复杂条款的超时报出方法。在实际建模测试中,由于sparql的效率问题一定程度上依赖于条款编制人员编写snl的健壮性,可能会出现部分条款检查时间或空间规模上的膨胀,此时可设计条款超时方案,监控针对每一条snl规则进行完整性和一致性检查的时间完整性和/或一致性检查的时间是否发生超时,若发生超时,则针对发生超时的snl规则生成超时日志。在实现中,本发明实施例通过executorcompletionservice类的pool轮询方法,在给定超时时限内进行结果收集。当超时后仍无法收集到原子任务结果的情况下,遍历队列中各任务future的状态,取消未标记完成状态的任务。这样就可以提供给snl编写人员反馈,提醒优化修改snl语句。最终达到从snl的编写到引擎的解析与执行过程的统一优化。如图5所示是含超时方案的检查结果综合总流程。其中,可以采用实时流式结果反馈方法,即报告不在模型全部检查结束后才生成,而是在检查过程中,每一条条款自身检查完成后,流式地反馈到用户前端。
[0106]
本发明实施例通过以上结果综合相关的方法,提供给用户超时配置的选项,并且及时反馈条款检查结果,保证并行检查结果的一致性以及程序的鲁棒性,从交互角度解决运行效率低的问题。
[0107]
根据上述方法实施例,本发明的另一个实施例提供了一种bim模型智能检查引擎平台化系统,该系统整体上分为前端模型提交与检查结果展示部分,以及后端平台并行化
检查引擎部分,整体软件架构如图6所示。用户可以通过web界面选择提交的模型文件与snl规则库文件,并选择具体的检查条款列表,提交至平台后端进行检查。提交后无需在线等待,对于检查耗时相对较久的模型,前端web界面会展示当前检查进度等信息。后端将处理所有用户提交的模型与规范数据。模型检查完成后,平台提供前端结果展示界面,供用户查看报告内容并下载。
[0108]
本发明实施例实现的平台的详细功能模块图如图7所示。整体分为前端展示模块、前端预处理模块以及后端并行化检查引擎模块。
[0109]
前端展示模块,用于实现模型检查平台前端交互界面。包含模型列表展示界面模块、新建审查界面模块、结果查询界面模块。该三模块分别实现了从展示当前平台存储的历史模型检查请求列表,到新建模型检查的snl选择、模型选择、snl条款选择部分的界面,再到提交审查结果详情展示界面的所有内容。
[0110]
前端预处理模块,主要包含前端部分中非交互界面展示部分,包含了前端的snl条款内容解析器、前端的模型压缩预处理模块、数据处理与上传模块。snl条款解析器模块负责在前端对用户上传的snl规则库内容进行解析与简单展示。模型压缩预处理模块使用deflate算法对用户待上传的模块进行压缩等预处理操作。数据处理与上传模块负责对全部模型与snl等数据进行处理并与平台后端通信。
[0111]
后端并行化检查引擎模块,包括平台多模型检查模块、完整性检查和一致性检查并行化模块、计算性规则并行化模块和并行调度模块。针对平台化提供多模型同时审查的功能,进而分别对完整性、一致性进行检查,计算性规则检查提供并行化支持。
[0112]
后端并行化检查引擎部分,需要负责对前端提供的bim模型、规则库文件数据以及选择的检查条款、检查命名等文本数据的处理。同时,后端需要提供对这些输入数据以及检查结果数据的存储支持。在实现上,后端接口以spring boot框架为基础,以restful api形式进行设计,提供对前端检查的数据提交与结果查询的支持。前端以react为基础框架,以axios网络库作为api支持进行实现。部分关键接口列表如表3所示。
[0113]
表3
[0114]
[0115]
检查数据存储方面,鉴于模型的规模及应用模式,该系统直接采用文件系统作为存储模型与检查条款的方式,并将检查相关元数据以json形式存储。同一检查中的模型、检查条款snl、元数据、检查结果等以文件形式存储于同一个以uuid为唯一标识的目录下。其中,模型与snl条款文件以原始二进制文件形式存储,元数据与检查结果以json形式存储。
[0116]
下面以实际案例对并行化检查进行分析:
[0117]
本发明实施例提供的检查引擎平台可以提高服务器资源利用效率,提升运行速度。可以针对数个现实模型与snl规则库交叉进行运行测试,给出实际的效率对比。
[0118]
如表4所示,是本发明实施例采用的测试建筑模型信息。该实验选取的都是完整的整栋建筑模型,不存在丢失跨楼层信息的问题,能够反映真实效率运行情况。
[0119]
表4
[0120]
模型名称模型大小某师范创业大厦23272kb江湖别墅876kb某县二中教学楼22832kb某人民医院门诊楼116314kb
[0121]
本发明实施例选取了在2019年面向《建筑设计防火规范》gb 50016-2014(2018年版)编制的snl规则库,涵盖了1129条snl语句。该库是已编制的规模最大的规则库之一,对原规范中可自动检查条款的覆盖率相对较高。同时,该规则库已在多地bim审查系统正式部署使用,具有实际参考价值。因此,本发明实施例选取此规范作为模型并行化检查运行效率参考对比的数据。如表5所示,是原始检查引擎与实现并行化方法后的引擎,在上述全部测试用例模型上的运行时间结果。其中,并行参数为32线程。从该表可以看出,采用并行方法后,运行效率能够整体提升50%左右。
[0122]
表5
[0123]
模型名称建筑设计防火规范某师范创业大厦原始:3m20s并行:1m30s(-55%)江湖别墅原始:21s并行:8s(-62%)某县二中教学楼原始:49s并行:45s(-9%)某人民医院门诊楼原始:2h (超时)并行:15m20s(n/a)
[0124]
综上,一台常见配置计算机运行实现了并行化方法的bimchecker引擎时,在含千余条snl的成熟的建筑防火规范规则库与从1m到100m不同规模的建筑模型的组合检查测试中,并行化方法能够稳定地节约40%-60%的模型检查运行时间,更方便地给出超时条款,协助用户测试工作的进行。本发明实施例能够较好地支持模型检查此类需要大量迭代修改的使用模式。
[0125]
相应于上述方法实施例,本发明实施例提供了一种并行化bim模型检查装置,如图8所示,所述装置可以包括:
[0126]
第一获取单元80,用于获取基于建筑规则描述语言snl规则生成的sparql检查语句,所述snl规则为基于snl编写的建筑规范条款;
[0127]
第二获取单元82,用于针对每一条snl规则,分别获取sparql检查语句中的至少一个第一字段和至少一个第二字段,所述第一字段为与完整性检查相关的字段,所述第二字
段为与一致性检查相关的字段;
[0128]
队列生成单元84,用于将每一个第一字段作为独立任务加入第一任务队列,将每一个第二字段作为独立任务加入第二任务队列;
[0129]
并行检查单元86,用于将所述第一任务队列中的多个任务提交到线程池,并行检查建筑语义模型的完整性,所述建筑语义模型为基于建筑信息模型bim进行语义抽取获得的模型;在所述第一任务队列中的任务完成后,将第二任务队列中的多个任务提交到线程池,并行检查所述建筑语义模型与snl规则的一致性;或者,将所述第一任务队列或者所述第二任务队列中的多个任务提交到线程池,并行进行相应检查,所述相应检查包括所述第一任务队列对应完整性检查,所述第二任务队列对应一致性检查。。
[0130]
可选的,所述第一字段包括checkvalid字段,所述第二字段包括checksql、checkcomp以及checkref字段。
[0131]
可选的,所述队列生成单元84,包括:
[0132]
第一队列生成模块,用于将包含多个独立子项的第一字段中多个子项分别作为独立任务,将未包含多个独立子项的第一字段作为独立任务,加入所述第一任务队列;
[0133]
第二队列生成模块,用于将包含多个独立子项的第二字段中多个子项分别作为独立任务,将未包含多个独立子项的第二字段作为独立任务,加入所述第二任务队列。
[0134]
可选的,所述并行检查单元86,还用于针对不同snl规则,并行进行完整性和一致性检查。
[0135]
可选的,所述队列生成单元84,用于基于每一个第一字段生成一个callable实例,将第一字段的callable实例作为独立任务加入第一任务队列;基于每一个第二字段生成一个callable实例,将第二字段的callable实例作为独立任务加入第二任务队列。
[0136]
可选的,所述装置还包括:
[0137]
监控单元,用于监控针对每一条snl规则进行完整性和/或一致性检查的时间是否发生超时;
[0138]
日志生成单元,用于若发生超时,则针对发生超时的snl规则生成超时日志。
[0139]
基于上述方法实施例,本发明的另一个实施例还提供了一种存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现如上所述的方法。
[0140]
基于上述方法实施例,本发明的另一个实施例还提供了一种电子设备,包括:
[0141]
一个或多个处理器;
[0142]
存储装置,用于存储一个或多个程序,
[0143]
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上所述的方法。
[0144]
上述系统、装置实施例与方法实施例相对应,与该方法实施例具有同样的技术效果,具体说明参见方法实施例。装置实施例是基于方法实施例得到的,具体的说明可以参见方法实施例部分,此处不再赘述。本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
[0145]
本领域普通技术人员可以理解:实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0146]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献