| | 企业邮箱| EN
子品牌网站
华如防务华如数据鼎成智造

登录

  • 图形验证码

用户密码登录

注册

  • 图形验证码

注册

您已注册成功!

建设中,敬请期待!

X语言:统一多领域建模与仿真语言XLanguage

发布时间:2021-06-25 来源:华如科技

最近,由北航自动化学院张霖教授课题组,设计并开发了一套统一多领域的建模与仿真语言,称为X语言。语言的主要能力是解决复杂产品的建模与仿真一体化的问题。



一、提出背景

复杂产品是指客户需求复杂、系统组成复杂、产品技术复杂、工作环境复杂的一类产品。其具有设计难度大、试验运维成本高、质量要求严、智能化需求大等特点,同时,又面临着制造业一次成功、准时交付、周期和成本不断压缩等重大挑战,想要解决以上矛盾,必须依赖建模和仿真。现有复杂产品涉及机、电、液、热、气、磁等各领域零部件子系统建模,每个领域的建模和仿真方法、标准规范及支撑工具不同。首先,各领域子系统需要在其他子系统关联参数固定的情况下独立进行仿真分析。其次,由于不同领域建模和仿真工具不同,各子系统间数据交互、信息共享和互操作方式都不同,需要大量的数据转换、模型格式转换和仿真互操作定义工作。再者,不同型号产品乃至零部件均对应不同模型,当产品发生细微变化时,当前建模和仿真方法乃至工具都不支持模型的灵活重用和演进。总体、分系统、单机/专业的模型难以并行协同,物理、信息系统难以关联优化。

为了解决以上问题,X语言从复杂产品跨域模型的关联与协同描述、统一建模语言的智能化语义拓展和语法/语义感知的建模元语动态解析三个方面入手,提出面向复杂产品仿真的一体化智能化建模语言,贯穿需求设计和仿真验证等全流程、多学科、跨阶段的协同设计建模与优化,建立面向复杂产品全系统异构模型的构建框架,实现在不同仿真应用场景和仿真任务下对复杂产品全系统规范化协同化智能化建模。

二、主要组成

如下图所示,X语言主要由图形建模和文本建模两个部分组成,两部分一一对应,可以实现自动转化过程。


在图形建模层面,参考SysML各类图的建模思想,清晰准确地表达系统的结构和行为;

在文本建模层面,借助DEVS仿真框架对于多领域模型的统一能力,将离散模型、智能体模型、以及连续模型统一于耦合模型之下。

基于此,赋予X语言以下建模仿真能力:①支持图形化建模,并能实现图形与文本之间的相互转换;②支持系统级结构与物理行为的描述以及仿真验证能力;③支持对各类复杂智能体模型进行建模,包括智能体的学习过程、通讯过程,以及多智能体的并行仿真过程;④支持连续、离散和连续/离散混合仿真。


其中,X语言中几个重要的类如下表所示:


总的来说,X语言支持对连续模型、离散事件模型、智能体模型,以及其对应的系统级模型的描述,并支持图形系统化建模与文本功能化建模。X语言主要是一门建模仿真语言,具有完备的仿真事件行为规范。此外,还具有一般编程语言具备的一些要素,比如函数function与结构体record等,并支持一些常用的数据结构和数据类型。


三、X语言的实现架构

整个X语言的开发实现架构分为三部分,分别是上层文本,中层解释器,以及底层的仿真器。

1)上层文本主要就是X语言自己的文本定义规范,定义的BNF文法可见:[X语言BNF文法](https://github.com/mistBH/X-Language/blob/main/XLanguage.bnf);

2)中层解释器是独自基于ANTLR4架构开发的一套解释器系统,基于C++代码;

3)底层仿真器是基于[DEVS离散事件系统规范](https://blog.csdn.net/weixin_43483381/article/details/105397791?spm=1001.2014.3001.5501)开发构建的一套仿真器,基于C++代码。仿真器包括了连续、离散、以及智能体的仿真器。

基于X语言的建模仿真流程是:输入一个由X语言上层文本描述的模型之后,通过解释器,将X语言解释为可仿真的C++代码,并基于C++的仿真器进行仿真,得到仿真结果。


其中,上层文本,中层解释器,底层仿真器三个模块的关系为:



四、 X语言的意义

建模与仿真已成为支撑系统之系统分析与开发的重要手段。对于系统建模与仿真的全过程,现有的建模语言大多针对某一阶段,缺乏全过程协同设计与验证的能力,而且很难保证系统各层之间的一致性和建模仿真过程的可追溯性。针对这些问题,X语言能够支持对系统结构和物理行为的描述,实现连续、离散事件、以及智能体模型的联合仿真,初步解决了国内建模仿真软件被国外“卡脖子”的问题。依靠X语言解释器和仿真器,使X语言能够支持连续的、离散的事件、混合系统和智能体模型的解释和仿真运行。


以下为基于X语言进行的一个汽车模型的建模例子图片。图片右侧为X语言的部分文本,左侧中间部分为X语言的图形建模: