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

一种高可扩展性的集成建模仿真方法与流程

2022-07-16 11:33:25 来源:中国专利 TAG:


1.本发明涉及计算机建模仿真技术领域,特别涉及一种高可扩展性的集成建模仿真方法。


背景技术:

2.计算机建模仿真是一种利用计算机相关软硬件技术对真实世界进行模拟仿真,从而对真实世界进行探索、分析和预测的重要方法和手段。现在,计算机建模仿真已广泛应用于工业控制、环境监测、社会科学和自然科学等几乎所有的学科领域。
3.随着应用领域的不断扩展,研究问题规模日趋扩大,不同领域的研究者建立了各种不同的仿真模型。但是现有的大多数仿真模型规模较小、功能比较简单,而且一般用于解决领域内特定问题,因此难以用于模拟和研究更加复杂的研究对象,也难以把握研究对象整体的性质和内部复杂的相互作用机理。因此很多时候需要建立跨学科领域、跨时空尺度的、多种方法集成的模型,以深入、细致、全面地刻画研究对象。所以在建模仿真的实践中,往往需要将不同领域、不同尺度的和不同方法的模型集成为更复杂的模型,称之为集成模型,以完成复杂问题或者对象的建模与仿真。而将简单的模型集成为复杂的模型的过程称之为集成建模。
4.而目前的集成建模存在以下问题:
5.第一,由于现有简单模型应用领域、开发需求、开发环境、运行环境、运行方式等方面一般各不相同,因此难以将简单模型集成为更复杂的集成模型;
6.第二,传统集成建模方法中,集成模型和实际应用场景往往紧密耦合,模型的可扩展性差;
7.第三,当应用场景稍有变化时,集成模型需要进行改写或者重构,工作量较大;
8.第四,集成模型也是一个模型,有可能成为另一个更复杂集成模型的一部分,而现有模型集成方法缺乏支持这种进一步集成的思想,现有集成建模环境也缺乏相应的机制,使得集成模型很难重用。


技术实现要素:

9.针对上述存在的问题,本发明提出了一种高可扩展性的集成建模仿真方法,结合本发明提出的一种轻量级的集成建模仿真领域专用语言(domain specific language,dsl),能够支持具有高可扩展性、集成模型可重用的集成建模仿真。
10.为了实现上述目的,本发明所采用的技术方案如下:
11.一种高可扩展性的集成建模仿真方法,其特征在于,包括以下步骤:
12.步骤1:根据用户输入,构建不同的子模型,所述子模型为简单模型或者集成模型;
13.步骤2:对于简单模型,定义符合模型统一视图的简单模型;对于集成模型,构建其概念模型;
14.步骤3:定义步骤2所述的概念模型的实例化模型;
15.步骤4:运行集成的实例化模型:其先按照所述概念模型已定义的执行步长来制备好数据,按照步骤2简单模型定义方法定义数据输入和输出模块,建立与步骤3所述实例化模型的连接与控制,运行所述实例化模型,最终实现模拟仿真过程。
16.进一步地,步骤2的具体操作步骤包括:
17.步骤21:对于简单模型,通过python或者pojo代码实现所述简单模型,基于所述python或pojo代码利用可重用集成建模领域特定语言定义符合模型统一视图的简单模型;
18.步骤22:对于集成模型,先枚举其所使用的子模型,再定义控制流,并指定这些子模型之间的数据流、连接以及子模型间的关系,最后概念化所述子模型,构建出所述集成模型的概念模型。
19.进一步地,步骤3的具体操作步骤包括:
20.步骤31:将步骤22建立的概念模型中枚举出的单个子模型定义为子模型实例;
21.步骤32:根据模拟仿真需求指定同类子模型组中模型数量,并实例化子模型间的连接,从而构建出所述概念模型的实例化模型。
22.进一步地,步骤2中的模型统一视图包括以声明为主的模型静态统一视图以及运行时用于控制的模型动态统一视图,并且两者的定义分别为:
23.1)模型静态统一视图
24.m
stxic
:=《n,p,i,o,f》.
25.其中,n为模型名称、p为参数列表、i为输入变量列表、o为输出变量列表、f为功能函数;
26.2)模型动态统一视图
27.m
dycamix
:=《n,p,i,o,f,a》
28.其中,n为正在执行的模型实例名称、p为参数列表、i为输入变量列表、o为输出变量列表、f为功能函数、a为模型的有限状态机;
29.进一步地,步骤22中所述的集成模型中,模型与其枚举的子模型间均存在有限状态机,形成层次有限状态机,基于该层次有限状态机实现所述集成模型仿真模拟的动态控制,其具体操作步骤包括:
30.步骤221:置当前实例化模型为初始状态,即s0状态;
31.步骤222:依据连接关系,以宽度优先策略遍历当前实例化模型的子模型,置所有子模型为初始状态;
32.步骤223:若子模型也是实例化的集成模型,则对该集成模型继续执行步骤222,直至再没有实例化的集成模型;
33.步骤224:若数据到达,根据具体模型设定进入相应执行状态,并依据子模型执行结果动态决定不同层级子模型的执行状态。
34.步骤225:若数据结束,置当前实例化模型执行结束,并以步骤222和步骤223的方式置所有层级子模型执行结束。
35.进一步地,步骤22中所述的数据流包括连接器和链接,所述连接器是数据流的中间处理单元,用于消除集成过程中不同子模型之间数据的维度、尺度甚至语义不同而产生的障碍;所述链接是模型和连接器之间传输数据的通道,每个链接都有一个源和一个目标,源是模型或连接器的输出变量,目标是模型或连接器的输入变量。
36.进一步地,步骤22中所述的控制流包括顺序控制、并行控制、选择控制和迭代控制,通过控制流与所述数据流联合作用,使得集成模型能够完成复杂任务;
37.所述顺序控制是由数据流隐含的,顺序执行;
38.所述并行控制表示两个或多个模型可以在同一运行周期内以并行方式执行,并行控制的多个模型之间不存在数据流的依赖;
39.所述选择控制用于在模拟过程中根据特定的条件在一组模型中选择其中之一执行,选择控制允许选择不同的模型,或者根据不同的场景选择一个模型是否可以工作;
40.所述迭代控制用于将建模仿真的多步执行和其他建模仿真的一步对应,即当集成具有不同时间步长的模型时,具有较少时间步的模型应该迭代多次,而其他模型只执行一次。
41.进一步地,所述模型间的关系包括一对一、一对多、多对一和多对多,其中:
42.一对一关系表示一个模型实例的输出被传递到另一个模型实例,这是模型之间的默认关系,所以通常o2o关系不需要显示申明;
43.一对多关系表示一个模型实例的输出被传递到另一个模型的至少一个实例;
44.多对一关系表示至少一个模型实例的输出被传递到另一个模型的实例;
45.多对多关系需要在实例化时根据实际应用需求进行具体定义。
46.本发明的有益效果是:
47.第一,本发明中的所有模型,包括简单模型和集成模型,均拥有一致的描述方法,即为模型的统一视图。在统一视图约束下,所有模型在使用者的角度除了功能外形式上是统一的,使用方法是一致的,使得集成模型易于重用;
48.第二,本发明将简单模型实现、概念模型集成、模型实例化和集成模型的执行等过程进行分解,使得模型设计、实现和具体仿真应用隔离开,尤其是本发明将概念模型集成和实例化分开,使得集成不再和具体应用绑定在一起增强了模型的可扩展性;
49.第三,本发明中的集成模型执行依赖数据流驱动和层次有限状态机控制。因此对集成中的数据流和控制流定义了严格的操作语义,并设计了相应算法,这为集成模型环境、运行时环境提供了集成模型的自动化能力和正确性验证的数学基础;
50.第四,本发明提出的方法中的简单模型的实现以及每个模型都遵循模块化设计思想,即提高了它们的可扩展性,也提高了模型集成的开发效率;
51.综上所述,本发明基于模型驱动开发的思想,以减轻平台的复杂性并能有效地表达领域概念。其将概念集成建模从具体应用中分离,模型集成者只构建概念模型,或者模型的模型(只包含被集成的子模型以及它们之间的关系),而不是一开始就直接构建模型的实例和实例之间的空的数据流关系。直到最终用户想要使用模型来进行模拟时,他们才实例化子模型及其关系,从而提高了集成建模仿真的可扩展性和开发效率。
附图说明
52.图1为模型的静态统一视图的图示化表示;
53.图2为包含动态特征的建模仿真统一视图的图形化示例;
54.图3为集成建模及仿真过程;
55.图4为概念集成模型的组织结构;
56.图5为建模过程中各相关文件依赖关系图;
57.图6为数据流示意图;
58.图7为反向连接(backward)示意图;
59.图8为集成模型示意图;
60.图9为并行操作示意图;
61.图10为模型选择控制示意图;
62.图11为选择操作示意图;
63.图12为模型迭代控制示意图;
64.图13为迭代操作示意图;
65.图14为实例化o2o关系的子模型的结果图;
66.图15为o2m关系实例化的结果图;
67.图16为m2o关系实例化的结果图;
68.图17为一个复杂的建模仿真建模仿真集成示意图,其中图17(a)为模拟集成的图模型,图17(b)为图17(a)的模拟集成的统一视图形式。
具体实施方式
69.为了使本领域的普通技术人员能更好的理解本发明的技术方案,下面结合附图和实施例对本发明的技术方案做进一步的描述。
70.一、模型的描述方法
71.本发明中的所有模型,包括简单模型和集成模型,均拥有一致的描述方法,即模型统一视图。所述模型统一视图包括设计阶段以声明为主的模型静态统一视图和运行时用于控制的模型动态统一视图。
72.(1)模型静态统一视图
73.模型静态统一视图由模型名称n、参数列表p、输入变量列表i、输出变量列表o和功能f五部分组成,表示为:
74.m
static
:=《n,p,i,o,f》.
75.其中,名称n用于将每个模型把自己与其他模型进行区分并可以被引用。
76.不管是简单模型还是集成的复杂的模型,每个模型都有其模拟仿真功能,用f表示。
77.简单模型的功能一般是实现一个简单的模拟仿真任务,例如计算某个地理坐标的日照时长等,集成的复杂模型的功能往往是被集成的子模型的功能的特定组合,可以完成更复杂任务。
78.p为模型的参数列表,参数是仿真模型的固有属性,其取值往往决定模型的仿真模拟效果,当模型给定时,仿真模拟往往是为了确定参数的合理取值。
79.i和o分别代表建模仿真的输入变量列表和输出变量列表。参数列表、输入变量列表和输出变量列表构成建模仿真的接口,其中参数列表和输入变量列表可以为空,但输出变量列表一般不应为空;且它们分别被定义为:
80.[0081][0082]

[0083]
o={o1,o2,...}
[0084]
参数列表、输入变量列表和输出变量列表中的每个元素均为一个元组:《名称,数据,类型,约束》;其中,名称在同一模型内不重复,名称用于与模型或模型实例名称绑定;约束用于模型定义参数、变量的取值范围。
[0085]
模型的统一视图可以用如图1所示的图形化方法表示。图1所示的名称为mod的模型为《mod,p,i,o,f》,且p={p1,p2},i={i1,i2,i3},o={o1,o2},图中箭头代表了数据流的方向。
[0086]
(2)模型的执行及模型动态统一视图
[0087]

数据驱动
[0088]
本发明采用数据驱动的方法控制模型的执行,模型在参数设定的情形下被启动并等待输入数据到达,数据到达以后执行一次,称为为一个运行周期(cycle),该运行周期是根据具体模拟仿真的问题预设的,在运行周期内实现其功能,并产生相应的输出,然后等待下一次输入的到达,当数据输入模块读到数据结束标志(比如文件结束符)时则判断再无数据到达,此时执行结束,完成模拟仿真。
[0089]
这种执行方式解决了基于离散时间的物理过程的仿真模拟,每一次执行都代表一个时间步长的仿真,而整个模拟不需要模型设计和集成者额外处理该重复过程。
[0090]

基于层次有限状态机的过程控制
[0091]
模型的执行是一个动态的过程,在执行过程中,不同的输入可能引发不同的模拟过程。因此,本发明利用有限状态机描述模拟的动态过程。在集成模型中,由于模型和子模型之间都存在有限状态机,故而会形成层次有限状态机,本发明提出了基于层次有限状态机的仿真模拟集成算法,实现了复杂仿真模拟过程的动态描述和自动控制。
[0092]

模型动态统一视图
[0093]
在加入执行过程的动态描述后,模型在执行过程中仍然可以用统一的视图来描述,模型包含动态属性的统一视图描述为:
[0094]mdycamix
:=《n,p,i,o,f,a》
[0095]
n,p,i,o,f和静态模型表示的含义一致,仅n是正在执行的模型实例的名称。
[0096]
模拟仿真的属性由两部分组成:p,i,o,和f是建模仿真的静态属性,有限状态机a是建模仿真的动态属性。
[0097]
定义建模仿真的状态为:
[0098]
s:=《pe,ie,oe,fe》
[0099]
其中pe∈p,ie∈i,oe∈o,fe∈f,下标代表当前状态有效,所述有效是指当前运行状态中起作用的部分,例如pe指当前整个参数集合中起作用部分,是模型参数集合p的一个子集;而不起作用部分仅指当前运行状态不起作用,是集合p减去pe的部分,这部分在模型处于其他运行状态时可能又成为有效部分。
[0100]
当建模仿真的状态发生变化,则表示该建模仿真当前的某个相关的集合已经发生改变。例如,当建模仿真所需要的输入变量增多时说明该建模仿真的状态已经发生了变化。
[0101]
建模仿真的状态及其迁移可以通过如下有限状态机来定义:
[0102]
a:=《s,s0,t》
[0103]
其中,s为建模仿真的一个有限状态的集合,t:s

s是状态迁移函数,初始状态s是状态迁移函数,初始状态代表建模仿真被激活,其中s0∈s且代表等待输入。
[0104]
附图2给出了建模仿真统一视图包含动态特征的图形化示例。假定建模仿真m=《nm,p,i,o,f,a》,p={p1,p2},i={i1,i2,i3},o={o1,o2},f={f1,f2},a=《s,s0,t》,s={s0,s1,s2},且t={(s0,s1),(s0,s2),(s1,s1),(s2,s2),(s1,s2),(s2,s1)}.另外s1=《p
e1
,i
e1
,o
e1
,f1>,s2=《p
e2
,i
e2
,o
e2
,f2》,p
e1
=p
e2
={p1,p2},i
e1
={i1,i2},i
e2
={i1,i3},o
e1
={o1},o
e2
={o2};
[0105]
二、集成建模以及仿真过程
[0106]
本发明的建模和仿真过程被细化为一些细粒度的子过程,包括实现或改写/重构简单模型、定义简单模型、概念化集成模型、实例化集成模型、创建仿真和仿真。其整个过程如附图3所示。具体的集成建模过程包括以下步骤:
[0107]
步骤1:根据用户输入,构建不同的子模型,所述子模型为简单模型或者集成模型;
[0108]
步骤2:通过python或者pojo代码实现所述简单模型,基于所述python或者pojo代码利用可重用集成建模领域特定语言定义符合模型统一视图的简单模型;
[0109]
步骤3:定义所述集成模型,先枚举集成建模中所使用的子模型,并指定这些子模型之间的数据流及连接关系,同时定义控制流,再概念化所述子模型,构建出所述集成模型的概念模型;
[0110]
步骤4:定义步骤3所述的概念模型的实例化模型,先将概念模型中枚举的单个子模型定义为子模型实例,根据模拟仿真需求指定同类子模型组中模型数量,并实例化子模型间的连接,从而构建出所述集成模型的实例化模型;
[0111]
步骤5:运行集成模型,其先按照模型执行步长制备好数据,按照步骤2简单模型定义方法定义数据输入和输出模块,建立与步骤4所述实例化模型的连接与控制,运行实例化模型,最终实现模拟仿真过程。
[0112]
大多数集成软件都有其自身的方法来定义新的组件和重构遗留软件。为了降低特定领域专业人员新模型设计、开发和既有模型的重构难度,本发明采用类似于python或者简单java对象模型(plain old java object,pojo)等的基本编程方法创建新模型。建模分为实现和定义两个部分。首先,新的简单模型将用python或者pojo编码实现,而遗留的诸如库、可执行文件,甚至web服务(web services,ws)将被封装到python或者pojo代码中,然后基于这些代码(实现简单模型的python或者pojo编码、遗留的诸如库、可执行文件等),用可重用领域特定语言定义符合模型统一视图的简单模型。
[0113]
模型的定义分为两个部分:概念化和实例化。其中,概念化是构建集成模型的概念模型的过程。在该阶段,枚举集成中使用的子模型,指定这些子模型中的数据流,并定义控制流。每种类型子模型的数量是由具体的应用程序决定的。
[0114]
对于具体的模拟仿真应用,概念模型被实例化为模型的实例。在仿真中,每类模型的数量根据具体的应用指定。并增加了一些概念模型中难以定义的特性。然后根据模型的实例进行仿真,包括必要的输入输出分配和工作流定义。最后,根据输入和参数进行仿真。此外,为了支持soa技术,可以将每个模型作为服务发布。
[0115]
在本发明中,简单模型、概念集成模型和模型实例的结构是不同的。简单模型只依
赖于模型的实现的python或者pojo代码文件。概念集成模型依赖于多个子模型、模型间的控制流、连接器、链接和关系。该依赖关系如附图4所示,其中虚线椭圆表示它不是一个显式的实体,并将在实践中被其子节点取代。
[0116]
仿真模型定义和集成主要包括三个部分,即简单的模型定义、集成的概念模型和集成模型的实例。简单模型和集成模型被统一到同一个视图中,它们具有相同的文件名格式和文件结构。在简单模型和集成模型的基础上,集成模型的实例在一个单独的文件中定义。这些文件的依赖性如图5所示。
[0117]
数据流将所有子模型粘合在一起,并在所有子模型之间传递必要的信息,从而为更复杂的现象和过程建模。所述数据流由连接器和链接两部分组成。附图6中mod1和mod2之间有一条数据流,由l1和l2两条链接和一个连接器c组成。下面将分别介绍连接器和链接:
[0118]
(1)连接器(connector)
[0119]
连接器(connector)是数据流的中间处理单元,如附图6中的c。其用于消除集成过程中不同子模型之间数据的维度、尺度甚至语义不同而产生的障碍。从功能和实现上类似于简单模型,但更简单,且具有一定程度的通用性,故而连接器有两种实现方法。当连接器比较复杂时,可以类似于简单模型的实现,将连接器实现为简单python或者pojo文件,然后通过python或者pojo代码利用可重用领域特定语言导入连接器;
[0120]
对于简单的连接器,例如只完成简单数据分发或者简单计算,则采用集成建模环境内置基本的主要的算术、数学数值运算和集合运算,以表达式的形式在集成模型中声明,由运行时环境转换成具体的实现。
[0121]
(2)链接(link)
[0122]
链接(link)是模型和连接器之间传输数据的通道。每个链接都有一个源和一个目标。源是模型或连接器的输出变量,而目标是模型或连接器的输入变量。根据数据流的方向,有两种类型的链接,我们分别称之为前向链接(forward)和反向链接(backward)。模型运行周期中,如果模型与连接器之间存在链接,称其为前向链接,如图6中的l1和l2。
[0123]
如图7所示,如果存在一个或多个直接或间接链接从模型m1到模型m2,如l’,或者当一个链接传输模型m2最后一个周期的输出数据到输入模型m1下一个周期作为输入,如l1,则该链接为一个反向链接(backward),如图7中的l’和l1。由上可知,反向链接只能发生在模型和连接器之间。
[0124]
(3)连接器关联链接的特性
[0125]
大多数连接器处理模型之间的值-值数据传输,例如负责变量物理单位转换的连接器。在这些连接器中,值一旦接收一次,然后在处理后即发送出去。因此,对于每个输入和输出,连接器只需要一个简单数据类型的变量,如表1的第一行所示。
[0126]
同时,还有许多连接器用于处理数据集上的操作,如求和、取平均值或等分区等待。在这些连接器中,运行时系统将为每个输入或输出提供复合数据类型变量,如表1的第二行所示。
[0127]
表1 连接器关联链接的特性
[0128]
[0129][0130]
表1中第二行的值-集合和集合-值链接分别用于在连接器的输入端和输出端向集合的元素和从该集合的元素传递值。连接器端,集合的元素个数和数据类型根据功能和链接的数量动态决定。
[0131]
表1的第三行为连接器和迭代控制相关。在连接器中,连接到迭代的输入和输出负责为迭代控制连接和收集或者分发数据,因此每次迭代会产生或者需要一个值,从而产生一个值的序列。
[0132]
在集成建模中,典型的控制流包括顺序、并行、选择和迭代,这些控制和数据流(包括连接器和链接)联合作用,使集成模型可以完成更复杂的任务。由于顺序控制是由数据流隐含的,故下面仅介绍并行、选择和迭代操作。
[0133]
(1)并行控制
[0134]
并行控制表明两个或多个模型可以在同一运行周期内以并行方式执行。并行控制的模型之间不存在数据流的依赖。但如果其中一个模型失效,基于控制的集成模型也会失效。并行控制的结构和相应的集成模型如附图8所示,模型ex8_mod由子模型mod1和mod2通过并行控制集成得到。模型ex8_mod的参数、输入、输出和函数是由并行控制的集成算法依据如下一段描述的集成方法,根据mod1和mod2的相应特征得到的。并行控制通常用于集成多个可并行化的模型,以简化集成。
[0135]
假定两个模型m1=《p1,i1,o1,f1,a1》和m2=《p2,i2,o2,f2,a2》,a1=《s1,s
10
,t1》,且a2=《s2,s
20
,t2》。
[0136]
令m=m1↑
m2,并且m=《p,i,o,f,a》,其中

代表并行控制。
[0137]
那么有p=p1∪p2,i=i1∪i2,和o=o1∪o2,其中∪不同建模仿真的输出均为可区分的。功能的集成为f=f1⊙
f2,其中

表示f={f=(f1↑
f2)|f1∈f1,f2∈f2},且f=f1↑
f2表示f1和f2都执行成功。集成建模仿真的初始状态s0=《s
10
,s
20
》,s
10
和s
20
分别是m1和m2的初始
状态。
[0138]
s={s0}∪(s1\{s
10
}
×
s2\{s
20
}),其中s\{s}=(s-{s})。转移函数t定义为:
[0139]
t=t1×
t
2-s
10
·-s
20
·
ꢀꢀꢀ
(1)
[0140]
其中,t1×
t2={(s
1is2l
,s
1js2m
)|(s
1i
,s
1j
)∈t1,(s
2l
,s
2m
)∈t2,i,j,l,m≥0},s10
·
={(s
10s2l
,s
1js2m
)∈t1×
t2|,j>0,l,m≥0},且s
20
·
={(s
1is20
,s
1js2m
)∈t1×
t2|,i>0,l,m≥0}。
[0141]
如果si=(s
1j
,s
2k
),p
ei
=p
e1j
∪p
e2k
,i
ei
=i
e1j
∪i
e2k
,o
ei
=o
e1j
∪o
e2k
,i≠0,fe=(f
e1
↑fe2
)。并行操作示意如附图9。
[0142]
(2)选择控制
[0143]
选择控制用于在模拟过程中根据特定的条件在一组模型中选择其中之一执行。选择控制允许选择不同的模型,或者根据不同的场景选择一个模型是否可以工作。例如,图10显示了模型mod由子模型mod1和mod2通过选择控制进行集成,如果判别器g满足,模型mod1工作,否则mod2工作。
[0144]
假定m1=《p1,i1,o1,f1,a1》,m2=《p2,i2,o2,f2,a2》,a1=《s1,s
10
,t1》,和a2=《s2,s
20
,t2》。如果m=《p,i,o,f,a》,m=m1◇
m2,表示当判别g1满足时,m1被执行,g2和m2类似,其中

代表选择控制。表达式的参数、输入和输出分别为pg,ig,和og.则有p=p1∪p2∪p
g1
∪p
g2
,i=i1∪i2∪i
g1
∪i
g2
,o=o1∪o2∪o
g1
∪o
g2
,f={g1,g2}
×
f1∪{g1,g2}
×
f2。
[0145]
对有限状态机,s={s
10
}
×
s2∪s1×
{s
20
},s0={s
10
,s
20
},t=∪
ki=0
(t1×
t
2i0
)∪(∪
ki=0
(t
1i0
×
t2))。如果si=(s
1j
,s
20
),pe=p
e1j
∪p
g1
∪p
g2
,ie=i
e1j
∪i
g1
∪i
g2
,oe=o
e1j
∪o
g1
∪o
g2
,fe=(f
g1
,f
g2
)&f
e1j
。若si=(s
10
,s
2j
),则pe=p
e2j
∪p
g1
∪p
g2
,ie=i
e2j
∪i
g1
∪i
g2
,oe=o
e2j
∪o
g1
∪o
g2
,fe=(g1,g2)&f
e2j
.
[0146]
显然,m=m1◇
m2=m2◇m1 and m=m1◇
m2◇
m3=(m1◇
m2)

m3=m1◇
(m2◇
m3)。选择控制如图11所示。
[0147]
(3)迭代控制
[0148]
为了容易集成,将模拟定义为按步(周期)执行,一个建模仿真一般要执行多个步骤,步骤间类似,只有少许不同,有时一个建模仿真的多步执行和其他建模仿真的一步对应,此时多步执行的建模仿真就需要迭代操作。
[0149]
典型的场景是,当集成具有不同时间步长的模型时,具有较少时间步的模型应该迭代多次,而其他模型只执行一次。图12展示了由mod1在迭代控制下集成为模型mod,当判别器g满足时mod1一直工作。
[0150]
假定m1=《p1,i1,o1,f1,a1》和a1=《s1,s
10
,t1》。如果m=《p,i,o,f,a》,m=μm1,其中μ代表模型迭代多次。g是判断表达式,则有p=pg∪p1,i=ig∪i1,o=og∪o1和f={g}
×
f1∪{g}
×
{f
ε
}。
[0151]
对建模仿真的有限状态机a=《s,s0,t》,我们定义s0=s
10
。为了方便管理,定义3个迭代的状态,初始sf∈sf,sf={p
ef
,i
ef
,o
ef
,f
ef
},迭代运行s
it
,和结束se,这样s={s0,se}∪sf∪s
it
,相应的转移即为tf,t
it
,和te。若(s
10
,s
1i
)∈tf则(s
10
,s
1i
)∈t1.令s
1i
=《p
e1i
,i
e1i
,o
e1i
,f
e1i
》,则p
ef
=p
e1i
∪pg,i
ef
=i
e1i
∪ig,o
ef
=o
e1i
∪og,且f
ef
=g
×fe1i
。对于每一个(s
1i
,s
1j
)∈t1,i≠0,有(s
1i
,s
1j
)∈t
it
。令s
it
=《p
eit
,i
eit
,o
eit
,f
eit
》,则p
eit
=p
e1j
∪pg,i
eit
=i
e1j
∪ig,o
eit
=o
e1j
∪og,和f
eit
=g
×fe1j
。对于迭代结束状态,令se=《p
ee
,i
ee
,o
ee
,f
ee
》,那么p
ee
=pg,i
ee

ig,o
ee
=og,和f
ee
=g,te={(si,se)|si∈sf∪s
it
}。迭代操作如图13。
[0152]
三、集成模型可扩展性
[0153]
传统集成模型的可扩展性受到集成建模和应用程序场景之间的紧密耦合的限制。具体而言,集成模型通常由特定领域固定数量的模型实例组成;因此,数据流和控制流也是静态绑定到模型实例的;则称这些模型为静态结构的模型。显然,静态结构化模型难以扩展到新的应用领域和新的场景。同样,模型的可重用性也受到限制。
[0154]
为了提高模型的可扩展性乃至可重用性,本发明将概念集成建模从具体应用中分离,模型集成者只构建概念模型,或者模型的模型——只包含被集成的子模型以及它们之间的关系,而不是一开始就直接构建模型的实例和实例之间的空的数据流关系。直到最终用户想要使用模型来进行模拟时,他们才实例化子模型及其关系。具体为:
[0155]
1、模型间关系定义
[0156]
根据相互作用的模型的数量,本发明定义了模型间的四种关系,这些关系最终对应于至少两个链接和一个连接器。上述的四种关系分别是一对一(o2o,one to one)、一对多(o2m,one to more)、多对一(m2o,more to one)和多对多(m2m,more to more)。
[0157]
其中,o2o关系表示一个模型实例的输出被传递到另一个模型实例,这是模型之间的默认关系,所以通常o2o关系不需要显示申明;
[0158]
o2m关系表示一个模型实例的输出被传递到另一个模型的至少一个实例;
[0159]
而m2o关系表示至少一个模型实例的输出被传递到另一个模型的实例;
[0160]
m2m关系则相对比较复杂,需要在实例化时根据实际应用需求进行具体定义。
[0161]
2、集成模型的实例化
[0162]
在概念集成模型中,被集成的子模型、连接器、链接和模型间关系将被声明。在实例化模型中,所有子模型的实例数将根据实际应用场景决定,子模型实例中间的数据流(链接器、链接)也将被实例化。
[0163]
例如对于两个满足o2o关系的子模型,它们的实例化模型可能会得到如图14所示的结果。
[0164]
对应的实例化模型用模型集成领域特定语言定义分别如下:
[0165]
仅有一个模型实例的情形:
[0166][0167]
含一批模型实例的情形:
[0168][0169]
后者中,集成平台将自动创建第i个连接器实例链接第i个模型实例inst_mod1[i]和inst_mod2[i]。
[0170]
o2m,m2o,and m2m关系相对比较复杂,连接器的工作也有多种不同形式。图15展示了一个o2m关系的实例化。
[0171]
对应的实例化模型用模型集成领域特定语言定义分别如下:
[0172][0173][0174]
有时需要为不同目标模型实例创建新的连接器,如图15(d)的情形,此时旧的连接器和链接会被覆盖。
[0175]
m2o关系的实例化过程和o2m关系类似,如图16所示。
[0176]
m2m关系缺乏比较通用的模式,因此模型之间的关系需要分别声明。在实例化过程中,应该补充与这些关系相关的链接和连接器。此外,相同类型模型实例之间的关系也属于上面提到的一种关系类型,因此,它们的声明和实例化与不同模型实例的声明和实例化是相同的。
[0177]
3、集成建模仿真
[0178]
集成建模仿真就是建模仿真软件模块被集成的过程。上述各种操作最终都可看成建模仿真,而建模仿真可以被看作节点,建模仿真之间的关联可以看作边,这样建模仿真的集成其实就是图状结构。另一方面,为了使集成可以被重用,集成的建模仿真也应该遵循上述所定义的统一的视图。因此,针对图17(a)的集成,我们有图17(b)的统一视图表示,其通过如下算法1的相应的底层操作来完成。
[0179]
算法1 复杂建模仿真的集成算法
[0180]
[0181]
[0182][0183]
四、集成建模仿真领域专用语言
[0184]
集成建模仿真领域专用语言是模型集成者集成模型的重要工具,本发明还提供了一种轻量级的领域专用语言进行集成模型的定义和描述。
[0185]
(1)简单模型实现
[0186]
简单模型实现并不属于集成建模仿真领域专用语言的工作,但由于二者之间存在调用关系,因此本发明对简单模型的实现形式没有特殊要求,可以实现为软件模块、组件和服务。比如采用python或者java的pojo等实现,因为python的装饰器(decorator)、java的标注(annotation)等可以方便仿真时利用面向切片的编程方法(aspect-oriented programming,aop)实现输入、输出、参数和模型功能执行的控制。对于已有模型,需要利用宿主语言进行封装。
[0187]
(2)模型定义
[0188]
集成建模中,首先要将简单模型的实现定义为模型的统一视图,定义一个pojo实现的简单模型的方法如下:
[0189][0190]
正如在统一视图中所定义的一样,每个模型都有一个名称,比如ex1_bas_mod。定义的主体将导入与模型实现的pojo。很明显,简单模型的构造与模型的实现之间存在着很大的差异,这大大释放了模型的实现。模型的基本元素可以从pojo中的标注中自动提取出来。
[0191]
集成模型基于其他子模型定义,具体定义方式可以如下:
[0192][0193]
ex2_comp_mod模型导入mod1和mod2两个子模型,其基本要素应由dsl支持集成系统根据相应的控制,通过模型集成算法自动得到。
[0194]
(3)数据流定义
[0195]
数据流的定义包括连接器的定义和链接的定义。
[0196]
如第5部分所述,本方法中连接器有两种实现方法。对于功能复杂的连接器,实现为简单python或者pojo文件;然后通过导入实现文件来声明连接器。
[0197][0198]
对于功能简单的连接器,直接在定义时利用表达式显式地定义,执行时由运行时环境转换成具体的实现。
[0199][0200]
连接器的参数、输入和输出在集成模型中显式地声明,并采用动态类型。表达式用于计算具有特定输入和参数的输出,的语法和python或者java中的运算表达式类似。
[0201]
链接包括前向和后向两类,链接的结构可以定义如下:
[0202]
onerelation;
[0215]
relationo2m(mod3,mod4);//one-to-morerelation;
[0216]
relationm2o(mod5,mod6);//more-to-onerelation;
[0217]
relationm2m(mod7,mod8);//more-to-morerelation.
[0218]
实施例
[0219]
利用本发明的发明对wofost(农作物生长模型)、hydrus-1d(非饱和带水文模型)和modflow(地下水模型)进行了集成,模拟农作物生长、非饱和带水分和地下水之间的作用过程,从而研究地下水和农作物的相互影响。
[0220]
农作物生长会收到根系附近水分的影响,地表浅层的水分同时又要受到植被和地下水的影响,而地下水的水位又与地表浅层含水量相互作用。wofost是农作物生长模型,一般用来模拟小麦、玉米等农作物生长过程;hydrus-1d是非饱和带水文模型,用来模拟地表以下浅层水文活动;modflow是地下水模型,用于模拟地下水活动。该三个模型均为现有模型,但都被封装成相互独立的应用程序。在实际模拟应用中,这三个模型对应的程序只能独立运行,来自于其他模型的影响只能依据经验设置为固定值,这显然难以反映被模拟的各部分之间动态的交互,也为相关的模拟带来较大的误差。利用本方法,通过重构这三个模型,并进行集成,以一天为模拟步长,三个模型之间可以以一天为单位进行相互影响的模拟,从而提升模拟精度和仿真能力。
[0221]
首先利用本高可扩展集成建模方法,通过修改现有模型程序wofost、hydrus-1d和modflow,以pojo进行封装,并利用本方法定义为简单模型,对应模型文件分别为“path_wo”、“path_hy”和“path_mo”。
[0222]
其次进行集成,定义集成的概念模型ex16_wohymo,首先枚举要用到的子模型,即wofost、hydrus-1d和modflow,并分别指明模型文件,即“path_wo”、“path_hy”和“path_mo”;然后定义控制流和数据流,并定义了模型间关系;其中wofost和hydrus-1d之间是一对一的关系,而hydrus-1d和modflow之间是多对一的关系。
[0223]
再次,进行集成模型实例化,得到具体任务的实例化模型。为了比较不同的地表区域划分的模型性能,执行了两种实例化方案,即分别将地表农作物生长模块划分成2个和5个区域,这样就分别有2个wofost和hydrus_1d子模型实例和5个wofost和hydrus_1d子模型实例,而modflow模型只有一个;数据流和连接关系也随之实例化。从而得到两个实例化模型,可以分别进行模拟。如果地表作物类型发生变化,则可在方便的在概念集成模型基础上进行修改,而无需对已有的实例化模型进行重构。概念模型定义为:
[0224]
[0225][0226]
为了比较不同的地表区域划分的模型性能,下面的示例提供了两种概念模型的实例化结果,其分别划分成2个和5个区域,定义如下:
[0227]
[0228][0229]
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
再多了解一些

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

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

相关文献