梁式桥参数化建模专家系统①
2020-03-23岳喜娜吴学毅吕明珠
岳喜娜, 吴学毅, 吕明珠
(西安理工大学 印刷包装与数字媒体学院, 西安 710048)
随着我国公路建设事业的快速发展, 桥梁行业更是实现了跨越式发展.在桥梁养护行业, 传统的桥梁养护管理模式面对繁杂的数据报告, 容易产生数据错误或遗失现象, 因此桥梁养护公司为了降低企业成本, 提高工作效率, 纷纷转向数字化病害检测记录方式[1], 而实现桥梁的三维建模是实现其工作的基础.参数化建模是扩展桥梁建模灵活性的主要手段[2], 而专家系统是是实现桥梁结构建模逻辑的方法之一, 本文针对使用专家系统方法进行梁式桥三维参数化建模展开研究.
目前主流的桥梁建模平台是基于Autodesk、Bently、Dassault 公司的产品, 最为常见的是基于对UG、CATIA、SolidWorks、Inventor 的二次开发来完成对模型的参数化建模[3-6].本文基于OSG 图形开发技术采用边界表示法完成了对梁式桥基本部件的参数化建模开发,并采用一种将梁式桥参数化建模与专家系统相结合的方法, 以提高梁式桥参数化建模的灵活性与可扩充性.
1 梁式桥参数化建模专家系统
1.1 梁式桥参数化建模一般过程
了解梁式桥参数化建模过程, 提取其普遍性建模流程, 是进行梁式桥参数化建模专家系统方法研究的前提.
1.1.1 组件参数化建模过程
常见的梁式桥组件包括: 空心板、小箱梁、连续板、重力式桥台、轻型桥台、盖梁柱式墩、柱式墩等.对一类组件进行参数化建模的过程如下:
(1)明确组件类型, 确认组件结构参数值以及组件的下一级部件组成关系.
(2)建立组件全局坐标系, 设置坐标原点与组件中某一部件的局部坐标系原点重合.
(3)按照组件的下一级部件组成关系及拓扑空间位置拼接各个部件, 形成完整的组件.
(4)将拼接完的组件进行绘制并展示模型.
1.1.2 全桥参数化建模过程
梁式桥全桥建模从建模流程上, 类似于组件建模,从建模内容上, 比组件建模较为复杂.
(1)明确全桥的结构组成, 全部组件结构参数值.
(2)建立全桥的全局坐标系.其中X 轴与全桥的桥梁中心线重合, Y 轴与全桥纵桥线重合, 坐标原点与左侧桥台局部坐标系原点重合.
(3)按照全桥的结构组成及组件的空间拓扑关系拼接全桥.
(4)将拼接好的全桥模型进行绘制并展示.
1.2 基于梁式桥的参数化建模专家系统结构
提取梁式桥组件及全桥建模的一般过程(如图1)可以发现, 专家总结的桥梁结构计算公式及拼接知识是完成组件及全桥建模的逻辑基础, 也是专家系统的知识库内容; 组件及全桥的建模过程中的组装流程是推理机的主要内容; 对推理出的结果进行三维绘制可作为解释机制, 验证参数化建模的正确性; 因此, 知识库、推理机、参数化建模模块是系统的重要组成模块[7].
图1 梁式桥快速建模专家系统结构图
知识库: 知识库中存储着梁式桥部件结构计算类知识和组件及全桥的拼接类知识, 按照知识类别及推理机的数据需要, 将知识库分为4 类; 同时选择合适的知识表达方式, 并设计其数据库表结构; 知识库是实现整个推理过程的数据基础.
数据库: 数据库中保存了系统运行过程中产生的一些必要数据.同时知识库是以数据库的形式存在, 因此数据库中包含了知识库.数据库是实现系统运行与推理过程的数据依托基础.
主推理程序: 提取组件建模及全桥建模拼接的过程性知识, 实现组件及全桥建模绘制的过程性程序.
人机交互界面: 一部分是用户使用, 在这部分用户能够实现桥梁组件浏览和全桥快速建模.另一部分是针对知识工程师的接口, 工程师在知识库编辑界面, 可编辑、扩充知识库, 使得系统更具灵活性与可扩展性.
参数化建模模块: 包括3 部分内容, (1)桥梁部件建模算法; (2)组件建模拼接算法; (3)全桥建模拼接算法.该模块作为系统重要的一部分使得系统具有解释性与可观察性.
2 知识库
2.1 知识的表现形式及特点
总结梁式桥参数化建模一般过程可以发现, 知识共含有2 类: (1)桥梁组件结构计算知识; (2)桥梁组件及全桥结构拼接知识.
2.1.1 桥梁组件结构计算知识
本文研究的桥梁组件共包含了7 类, 每一类组件下又包含了该组件下一级全部部件结构, 因此一个组件的结构计算知识包含了其下一级全部部件的结构计算知识之和.以组件空心板为例, 空心板结构组成如图2, 由一块左边板, N 块中间板和一块右边板组成.因此空心板结构计算类知识包含了这3 类部件的全部结构计算知识之和.
图2 空心板结构图
空心板按照跨径长度又可以分为7 类, 以表1 中展示的空心板部分知识为例, 举出跨径长度为6 m、8 m、10 m 的3 类空心板的结构计算知识.
表1 桥梁组件-空心板结构计算公式
2.1.2 桥梁组件及全桥结构拼接知识
对于每一类桥梁组件, 其结构组成都是固定的知识, 比如已知组件为空心板, 则知道空心板是由左边板、若干块中间板和右边板拼接而成; 这一类知识属于结构拼接类知识.而全桥的拼接知识与此类似.
2.2 知识库分类及功能
梁式桥参数化建模需要两类知识, 结合推理机进行推理时所需要的知识类型, 设计了4 类知识库, 每类知识库是按照知识特点进行划分, 具有不同的作用.
2.2.1 组件结构参数库
组件结构参数库存放绘制一个组件所需要的结构参数数值的集合.以空心板为例, 绘制一跨空心板需要知道其全部的结构参数描述及参数的含义, 如: bNum:桥梁编号; span: 该联跨径组成; holenum: 孔号; length:跨径长; bJ: 板间缝宽; kxbNum: 空心板数量; Gradient:弯斜坡度; Si: 盖梁宽度中心距布孔线; Sj: 盖梁宽度中心距墩柱中心线; D: 支座中心; 线距板端; H: 板梁高度;B: 右边板右悬臂端部距道路设计线; bZ: 横桥向支座中心距空心板中心线; hY1: 左边板悬臂端部厚度; hY2:右边板悬臂端部厚度; bB: 板梁宽度; bt: 中板顶宽;hG1: 左边板悬臂根部厚度; hG2: 右边板悬臂根部厚度;bY1: 左边板悬臂宽度; bY2: 右边板悬臂宽度; xT: 上倒角宽; yT: 上倒角高度; xJ: 下倒角宽; yJ: 下倒角高; hJ:底缘高度.以上的一组结构参数能够满足对空心板的三维外观描述, 其它的桥梁组件结构参数库, 都有一套可以用来描述自己三维结构的特殊参数.其设计方式和空心板类似.
2.2.2 组件知识库
组件知识库中存放了计算组件结构参数的计算公式,为2.1.1 节所描述的知识类型, 属于专家总结的元知识.
以空心板知识库为例, 图3 是其跨径长度为10 m的知识库内容.
图3 跨径长度为10 米的空心板知识库
2.2.3 模型拼接库
模型拼接库中存放了绘制该模型(组件或全桥)所需要的下一级结构拼接关系、部件绘制函数名称和部件个数约束等.具体存放的是2.1.2 节描述的知识类型.
2.2.4 模型绘制信息库
模型绘制信息库存放了绘制该模型(组件或全桥)所需要的全部信息.如一座桥梁的绘制信息库(已选上部结构为空心板、桥台结构为轻型桥台, 墩柱类型为盖梁柱式墩)会存储: N 跨空心板的绘制信息,N-1 个盖梁柱式墩的绘制信息和2 个轻型桥台绘制信息.每一条绘制记录中会包含当前绘制组件的三维空间坐标、模型绘制函数等.
2.3 知识表达
2.3.1 知识表达方式
常见的知识表达方式包括一阶逻辑谓词表示法、产生式表示法、语义网络表示法、框架表示法、过程表示法、面向对象表示法等, 这些知识表达方式各有特定的适用条件, 且各有优缺点.本文结合2.1.1 节中知识类型的特点, 选择产生式规则结合公式表达式作为知识的表达方式.
产生式规则的具体表示为“IF a Then b”, 这与桥梁结构计算知识的表示方式非常接近, 因此采用产生式规则能够很好的解释当前知识点.将知识采用产生式规则方法表达举例如下:
if (组件类型==“空心板”&&跨径长度==“10 米”&&参数名称描述==“盖梁长度”) then (盖梁长度=“(A×G+70)/cos(E)”).
2.3.2 公式解析器的应用
上一节知识表达式的后件是固定值或参数计算公式.计算公式是以字符串类型存在的, 字符串类型的公式失去了公式原本的意义, 因此为了解决公式的解析计算, 本文引入公式解析器来完成对字符串类型的公式的求解计算.
(1)桥梁结构计算公式的分类
① 固定值.图4 中, 可以看到板梁高度是由一个固定值表示.公式解析器需要完成将字符串类型的变量转变为一个整形值.
图4 空心板元知识
② 普通公式计算.图4 中左边板悬臂宽度的公式为: “(B-A×G)/2”.公式解析器需完成变量替换以及基本算术表达式的计算功能.
③ 含有特殊数学符号的公式计算.如盖梁柱式墩的部件盖梁, 其长度的计算公式为“(A×G-70)/cos(E)”,公式解析器需要解析特殊的数学符号(cos, tan, sin, abs).
④ 带有IF 语句的公式.图4 中板梁宽度的计算公式为“IF((B-A×100)<150, 100, IF((B-A×125)<150, 125,(B-50)/A))))”.这是一个带有IF 语句的具有特定逻辑判断语句的公式, 因此公式解析器需要能够自动解析这种类型的数学公式, 实现对本文所特有的桥梁公式的解析工作.
(2)公式解析器流程
图5 是公式解析器总的计算流程, 图6、图7、图8 是总流程下对应功能的详细计算流程.其中最为核心的是最内侧公式表达式处理, 是整个公式解析计算最重要的部分[8].
图5 公式解析器运算流程图
图6 预处理流程图
图7 逻辑语句处理流程图
(3)计算结果展示
表2 列举了9 项普通公式采用公式解析器及微软计算器分别计算的结果值及误差值, 可以看出误差精确到千分之一, 能够满足本项目的计算精度.
表3 是4 组对含有IF 语句公式的计算结果, 逻辑结果判断正确, 能有效计算特殊数学公式.
图8 最内侧公式表达式流程图
表2 普通计算公式结果统计
表3 含IF 语句公式计算结果统计
3 推理机
3.1 推理机的推理机制
推理机调用知识库中的知识, 按照专家思考问题的逻辑, 对提出的问题给出合理的答案.
本文研究最终验证手段是参数化建模结果, 因此,推理机给出的答案是参数化建模所需要的结构参数数据和模型绘制数据.推理机需求解的问题是特定模型的特定求解过程.因此推理机的推理内容包括: 对组件建模所需信息进行推理和对全桥建模进行推理.
3.2 推理机的推理流程
对组件推理完成拼接和建模参数的求解, 并将具体参数传递给参数化建模模块实现模型的绘制是推理机的推理过程(如图9).组件绘制推理过程中主要包括两方面: (1)组件对应的组件结构参数库推理; (2)组件对应的模型绘制库推理.全桥绘制推理过程也主要包括两方面内容: (1)主梁组件、桥台组件、桥墩组件的组件结构拼接库推理; (2)全桥对应的模型绘制库推理.二者推理过程类似.
图9 推理机主要推理流程
3.2.1 组件结构参数库推理过程
图10 为组件对应的结构参数库推理流程, 具体推理流程如下:
(1)判断组件类型, 到该组件对应的组件结构参数库中获取绘制该组件所需要的全部结构参数值标签.
(2)到该组件对应的组件知识库中逐条查找各值标签所对应的结构参数计算公式, 并返回查找结果.
(3)采用公式解析器对获取到的公式表达式进行解析计算, 并将计算结果返回.
(4)按照参数值标签将返回的计算结果存储在组件结构参数表对应的值标签下, 至此完成组件结构参数库推理流程.
图10 结构参数库推理流程图
3.2.2 模型绘制信息库推理过程
图11 为模型绘制库推理流程, 具体流程如下:
(1)根据所选组件类型, 到组件对应的模型拼接库中查找, 查找到该组件模型拼接库的全部记录信息.
(2)逐条解析模型拼接库的记录信息, 获取本条记录信息下部件名称、部件个数、部件绘制函数等相关信息, 依据这些信息计算该部件在整个组件中的三维空间坐标.
(3)逐条将(2)中得到的全部信息存放在该组件对应的模型绘制库中, 此时, 组件的模型绘制库中包含了绘制该组件模型所必须的绘制信息.至此完成组件的模型绘制库推理流程.
4 参数化建模
参数化建模模块是将推理机推理出的数据结果通过参数化建模算法建立相对精确的三维实体模型[9], 实现结果验证.
4.1 基本部件建模算法
整桥由组件拼接而成, 组件由部件拼接而成, 因此部件的建模算法最为基础.一般部件的建模流程如图12 所示.
图11 模型绘制库推理流程图
图12 一般部件绘制流程图
如连续板的绘制过程, 首先根据二维轮廓图, 确定连续板的横截面及相关结构参数, 再根据结构参数确定坐标原点与坐标系, 从二维结构参数计算三维顶点坐标, 最后依据顶点坐标绘制三维模型[10].
4.2 模型建模拼接算法
4.2.1 组件建模拼接算法
组件拼接算法是在已获得部件建模算法、组件结构参数及组件绘制数据基础上, 将组件绘制成三维模型的算法.通常拼接组件的流程, 如图13, 具体为:
根据传入的组件类型, 在MFC_OSG 类中匹配组件对应的结构参数信息和组件绘制信息, 并解析组件绘制信息完成桥梁组件的绘制.
图13 组件建模拼接算法
4.2.2 全桥建模拼接算法
在全桥拼接过程中会将整桥的绘制信息、上部结构、桥台结构和桥墩结构的结构参数信息全部传递给MFC_OSG 类, 只需要解析传递进来全桥绘制信息, 匹配每一个组件对应的绘制模型函数与绘制模型坐标位置, 借助OSG 中位姿变换节点, 将每个组件放置于特定位置, 即可完成全桥的模型绘制, 如图14 所示.
5 对桥梁组件知识库的编辑
知识库的编辑模块通过对知识库内容的增删改查完成知识扩充及修改, 为系统增加了扩充性.用户通过选择组件类型、跨径长度等条件调取相应的组件知识库完成知识的查看.用户通过编辑知识展示区域, 选择增加、删除、修改等功能, 完成对当前知识的修改, 且修改内容直接存储入知识库中, 主界面见图15.
6 结果展示与分析
基于上述系统设计, 本文在VS2013 (Microsoft Visual Studio 2013)平台上, 采用OSG 库, 利用MFC界面库, 使用三层架构的系统架构开发了一个梁式桥快速建模专家系统.6.1.2 节详述其应用过程.
6.1 结果展示
6.1.1 参数化建模结果
本文依次对7 类桥梁组件及全桥模型进行系统建模, 其建模结果展示如图16 至图23.
6.1.2 系统结果展示
如图24 为系统主界面, 包括3 部分, 桥梁BIM 组件建模, 全桥建模和知识库管理.以全桥建模为例, 详述系统运行过程.在全桥建模模块, 输入绘制一个桥梁所需主要参数后, 点击快速计算按钮, 生成全桥模型如图25.主要参数不变, 修改跨径组成, 系统能够生成不同全桥建模结果, 图25 为6 跨桥梁, 图26 为9 跨桥梁.
在全桥生成过程中, 首先系统从界面传入主结构参数, 然后对比该实例的参数与数据库中已有实例的参数, 若已有, 则调取推理出的数据及绘制方案, 将其传递给参数化建模模块, 完成模型绘制并展示在界面上.若无, 则利用推理机中的全桥推理流程, 检索相应知识库, 完成数据及绘制方案推理, 将结果传递给参数化建模模块, 完成模型绘制并展示在界面上.
图14 全桥建模拼接算法
图15 知识库编辑主界面
图16 空心板模型
图17 连续板模型
图18 小箱梁模型
BIM 组件的建模流程可参考全桥建模流程.知识库的编辑可参照第5 节.
图19 轻型桥台模型
图20 盖梁柱式墩模型
图21 重力式桥台模型
图22 柱式墩模型
图23 全桥模型
图24 系统主界面
图25 6 跨全桥建模结果
图26 9 跨全桥建模结果
6.2 结果分析
(1)参数化建模结果
对比专家给出的桥梁及组件三维图形, 能够正确建立模型形状.三维建模结果准确.在全桥拼接时, 存在拼接缝隙, 说明系统计算结果有偏差, 计算精度待改进.
(2)知识库编辑结果
可通过增删查改方式修改知识库中的存储的知识内容, 可修改推理机所依赖的知识内容.
(3)专家系统结果
该专家系统能够准确运行, 通过用户在界面输入少量必要的主要参数, 就能准确完成一座桥梁的粗建模, 完成自动化建模过程, 且结果准确.
7 总结
本文采用一种结合专家系统与梁式桥参数化建模的方法, 该方法通过构建专家系统的各功能模块以及各模块之间的联系, 能够实现根据用户输入的少量主要参数自动完成整桥及组件的参数化建模.通过知识库编辑完成对知识的修改, 进而影响参数化建模所依赖的数据计算方式, 使用户参与到梁式桥参数化建模的过程中.该方法促进了梁式桥参数化建模的灵活性和可扩展性, 避免了传统程序“一经写定, 不易修改”的弊端.