面向实况/虚拟/构造混合系统的仿真方法转让专利

申请号 : CN201611192177.1

文献号 : CN106648658B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 宋晓周军华姬杭赵芳马耀飞

申请人 : 北京航空航天大学

摘要 :

本发明提出一种面向实况/虚拟/构造混合系统的仿真方法,属于分布并行协同仿真技术领域。本发明包括:网络通信器,生成实体类代理并提供网络通信服务;事件管理器,实现基于离散事件的订阅发布管理;时间管理器,提供保守时间推进和宽容时间推进两种方法;实体类管理器,用于管理实体类;实体类接口定义器,接收用户对各实体类的接口描述文件,解析文件并生成各实体类,为各实体类加入网络代理、事件管理、时间管理和实体管理模块,组成仿真原型系统;实体类逻辑定义器,在实体类中由用户实现业务逻辑。本发明支持面向实况/虚拟/构造混合系统仿真系统中细粒度实体类的生成,各实体类具有互操作性强、可组合性强和可重用性强的特点。

权利要求 :

1.一种面向实况、虚拟和构造混合系统的仿真方法,其特征在于,包括:

实体类管理器,用于,

(1)对混合系统,生成一个实体类manager及其实例,以及生成参与仿真的实体类i及其仿真实例,i=1,2,…,n,n为正整数;

(2)所述的实体类manager,实现功能的包括:作为事件路由引擎,记录混合系统参与仿真的每个实体类的代理与该实体类订阅的事件名的映射关系;作为保守时间推进方法的管理者,协调所有实体类i的同步推进;

网络通信器,用于在实体类manager和实体类i中创建网络代理模块,根据实体类节点位置生成manager代理,该代理模块负责与实体类manager通信,为每个实体类i提供网络通信服务;

事件管理器,用于在实体类manager和实体类i中创建事件管理模块,实现基于离散事件的订阅发布管理;在仿真时,实体类i的事件管理模块使用manager代理向实体类manager发送事件,实体类manager的事件管理模块根据事件名及事件路由引擎向订阅该事件的实体类发布该事件;

时间管理器,用于在实体类manager和实体类i中创建时间管理模块,实现混合系统的时间管理;时间管理器提供两种时间管理方法,保守时间推进方法和宽容时间推进方法;宽容时间推进方法,指要求所有实体类具有相同的逻辑时间且与系统物理时间同步,与保守时间推进方法不同,实体类manager不参与到时间管理中;

实体类接口定义器,通过解析用户输入的接口描述文件定义实体类交互接口,生成并初始化实体类manager和实体类i;所述的接口描述文件中记载实体类名、实体类节点位置和实体类订阅的事件名;所述的实体类接口定义器将实体类订阅的事件名在实体类manager中创建接口管理模块,也就是事件路由引擎,在实体类i中创建接口定义模块。

2.根据权利要求1所述的仿真方法,其特征在于,所述的实体类manager,还保存混合系统参与仿真的所有实体类的manager代理接口,并能在仿真过程中对实体类的manager代理进行动态添加和删除。

3.根据权利要求1所述的仿真方法,其特征在于,所述的网络通信器提供两种远程过程调用策略,第一种是通过远程节点位置定位远程实体类的manager代理,使用远程实体类manager代理调用远程方法,第二种是远程节点在本地生成自身的manager代理并将函数参数发送到本地,本地直接使用该manager代理调用本地方法。

4.根据权利要求1所述的仿真方法,其特征在于,所述的保守时间推进方法,使用实体类manager来管理所有实体类i,要求所有实体类i具有相同的逻辑时间,在只有接收到manager通过发来的步进指令时才向前执行一步,并在执行结束后使用本地manager代理回调步进完毕信号,实体类manager在混合系统参与仿真的所有实体类i完成回调后才广播下一个步进指令。

5.根据权利要求4所述的仿真方法,其特征在于,所述的保守时间推进方法,在每个实体类i中存有一个未来事件列表;实体类i在收到实体类manager发来的步进指令时,执行如下两步操作:先进行检查-发布操作,检查未来事件列表中当前时刻需要处理的事件,执行事件并触发相应操作,然后进行订阅-写入操作,在未来事件列表中写入其他实体类在当前时刻发来的事件;实体类i在执行完两步操作后进行代理回调,等待下一个步进指令。

6.根据权利要求1所述的仿真方法,其特征在于,所述的宽容时间推进方法,要求所有实体类具有相同的逻辑时间且与系统物理时间同步;

宽容时间推进方法中,每个实体类中存有一个发送事件列表,事件产生后暂存在发送事件列表中,并在到达事件执行时间时发送;对实体类订阅的每个事件都设计有一个历史事件列表,用于存放事件的历史数据;

当实体类接收到事件时,检查该事件是否满足执行要求,如果该事件接收时间与逻辑时间差的绝对值在宽容范围内,则执行该事件,仿真继续进行;若超出宽容范围,则在该事件的历史事件列表中获得其中变量在当前时刻估计的值,使用估计值继续仿真,并将估计值作为一个事件记录在历史事件列表中;当实体类执行完事件后进行发布操作,将新触发的事件写入发送事件列表中,等待执行时间到达时发布。

7.根据权利要求1所述的仿真方法,其特征在于,所述的接口描述文件,是用户以标记语言的格式输入的实体类信息。

8.根据权利要求1所述的仿真方法,其特征在于,所述的实体类接口定义器,根据接口描述文件,将实体类名和实体类节点位置写入网络通信器的集成开发语言文件中,网络通信器调用相应编译器生成各实体类的网络代理模块。

9.根据权利要求1~7任一所述的仿真方法,其特征在于,所述的仿真方法,还包括实体类逻辑定义器,用于在实体类中实现业务应用逻辑,包括实体类中实例的变量组织、实体类在收到事件后的操作、实体类触发发布事件的条件、以及每个实体类允许的时间差。

说明书 :

面向实况/虚拟/构造混合系统的仿真方法

技术领域

[0001] 本发明属于分布并行协同仿真技术领域,涉及计算机科学,具体地说,是指一个面向实况/虚拟/构造混合系统的仿真方法。

背景技术

[0002] 利用计算机仿真与实兵训练相结合的方法进行综合训练,是提高训练效果和节约训练经费的有效途径。二十世纪九十年代初,美军提出在综合训练演习中使用实况/虚拟/构造混合训练方法,这种训练方法能够同时发挥三种训练样式的优点,使联合作战过程高效协同运行。其中:
[0003] 1)实况仿真系统是现实的人操作现实的系统,在战场上表现为实兵训练、实兵演习、武器装备试验等;
[0004] 2)虚拟仿真系统是现实的人操作虚拟的系统,表现为决策指挥训练和模拟器技能训练等;
[0005] 3)构造仿真系统是虚拟的人操作虚拟的系统,是指完全的计算机软件模拟作战。
[0006] 实况/虚拟/构造混合系统通常具有实体粒度细、系统规模大、事件交互复杂的特点,因此要求其仿真框架及方法功能完整且必须具有以下特征:
[0007] 1)仿真框架具有较强的可组合型和可重用性,即仿真方法必须支持实体类的定义及拓展,支持实体类接口定义及管理,而且实体类接口描述与编程语言、操作系统无关;
[0008] 2)仿真框架及方法具有较强的实时性和完善的时间管理算法;
[0009] 3)仿真框架及方法具有较强的互操作性,底层网络通信具有较高的通信效率。
[0010] 之前的仿真方法大多只针对实况/虚拟/构造中的一类系统进行仿真,往往实体粒度较粗,比如高层体系结构(HLA)和分布交互仿真(DIS)一般都是针对联邦成员或仿真应用的,而实况/虚拟/构造混合系统需要实现大量细粒度模型的互联互通,因此其实体结构及事件交互的设计必须是面向类的。同时,目前常用的高层体系架构和分布交互仿真均没有针对实况/虚拟/构造混合系统仿真系统的细粒度实现方法,具有开发过程复杂、成本高而且周期长的问题。

发明内容

[0011] 本发明的目的是提供一种面向实况/虚拟/构造混合系统的仿真方法,支持面向实况/虚拟/构造混合系统仿真系统中细粒度实体类的生成,具有互操作性强、可重用性强、可组合性强、可跨平台跨语言开发和接口实现分离等特点。
[0012] 本发明提供的面向实况/虚拟/构造混合系统的仿真方法,包括:
[0013] 实体类管理器,用于,
[0014] (1)对混合系统,生成一个实体类manager及其实例,以及参与仿真的实体类i及其仿真实例,i=1,2,…,n,n为正整数;
[0015] (2)所述的实体类manager,实现的功能包括:作为事件路由引擎,记录混合系统参与仿真的每个实体类的代理与该实体类订阅的事件名的映射关系;作为保守时间推进方法的管理者,协调所有实体类i的同步推进。
[0016] 网络通信器,用于在实体类manager和实体类i中创建网络代理模块,根据实体类节点位置生成manager代理,该代理模块负责与manager实体类通信,为每个实体类i提供网络通信服务。
[0017] 事件管理器,用于在实体类manager和实体类i中创建事件管理模块,实现基于离散事件的订阅发布管理;在仿真时,实体类i的事件管理模块使用manager代理向实体类manager发送事件,实体类manager的事件管理模块根据事件名及事件路由引擎向订阅该事件的实体类发布该事件。
[0018] 时间管理器,实现实况/虚拟/构造混合系统的仿真时间管理;时间管理器中提供两种时间管理方法,保守时间推进方法和宽容时间推进方法。
[0019] 实体类接口定义器,通过解析用户输入的接口描述文件定义实体类交互接口,生成并初始化实体类manager和实体类i;所述的接口描述文件中记载实体类名、实体类节点位置和实体类订阅的事件名;所述的实体类接口定义器将实体类订阅的事件名在实体类manager中创建接口管理模块,也就是事件路由引擎,在实体类i中创建接口定义模块。
[0020] 实体类逻辑定义器,在实体类中实现业务应用逻辑。
[0021] 本发明的优点与积极效果在于:
[0022] (1)本发明支持面向实况/虚拟/构造混合系统仿真系统中细粒度实体类的生成,各实体类具有互操作性强、可组合性强和可重用性强的特点;
[0023] (2)本发明订阅发布的实现为仿真方法提供了非常良好的可组合性,用户只需在模型接口定义器中声明此实体类订阅和发布的事件,此实体类就能在实况/虚拟/构造仿真系统中运行;
[0024] (3)本发明的时间管理中,采用保守时间推进方法以支持对事件发生时间精度要求较高但执行效率较低的情况,采用宽容时间推进方法以支持对事件发生时间精度要求较低但执行效率较高的情况;
[0025] (4)本发明通过实体类接口定义器为用户在开发仿真系统时提供了便利,在开发时不需要考虑底层通信逻辑和仿真运行管理,不需要考虑应用层的具体逻辑实现,适用本发明开发的仿真架构具有可重用性和可组合性。

附图说明

[0026] 图1为本发明仿真方法的时间步进管理示意图;
[0027] 图2为本发明仿真方法的时间宽容管理示意图;
[0028] 图3为本发明仿真方法的实体类接口定义器运行原理图。

具体实施方式

[0029] 下面将结合附图和实施例对本发明作进一步的详细说明。
[0030] 本发明提出的方法支持实体类的接口定义、逻辑定义,具有完整高效的接口定义及管理方法,同时提供完善的事件管理、实体管理和两种方式的时间管理,即对实时性要求高的时间容忍算法和对准确性要求高的保守推进算法。不仅如此,本发明针对实况/虚拟/构造混合系统实体量大、粒度细的特点,使用面向对象、基于代理的网络通信中间件开发,通信速度快、效率高、跨语言、跨平台;开发过程为先设计接口再设计业务逻辑,能达到程序依赖接口而非依赖实现的目的。
[0031] 本发明的仿真方法包括网络通信器、事件管理器、时间管理器、实体类管理器、实体类接口定义器和实体类逻辑定义器。
[0032] 事件管理器,实现了基于离散事件的订阅发布管理。
[0033] 仿真方法中的基本信息交互接口为离散事件,一个离散事件包括事件名、发送方实体类名、接收方实体类名、发送时间、接收时间和需要发送的数据,数据可以是整形、双精度数、字符串或一个或多个以上类型的组合。本发明中,对混合系统,生成一个实体类manager和若干参与仿真的仿真实体类。所实现的实体类manager作为总的事件路由引擎,事件路由引擎为混合系统中其他每个实体类的代理与该实体类订阅的事件名的映射关系。每个实体类(包含manager)可以订阅多个事件,这些事件也可以被其他每个实体类订阅。实体类manager还作为保守时间推进方法的管理者,协调混合系统中所有仿真实体类的同步推进。
[0034] 除了manager类,混合系统的其他每个实体类中均含有一个manager代理,在仿真中其他实体类使用它们的这个manager代理向manager实体类发送事件。实体类manager中含有所有实体类的manager代理接口,并能在仿真过程中对manager代理进行动态添加和删除。实体类manager根据其他实体类发过来的事件名及事件路由引擎向订阅此事件的实体类发布该事件,从而完成发送和接收的解耦合过程,即离散事件的订阅发布。订阅发布的实现为仿真方法提供了非常良好的可组合性,用户只需在模型接口定义器中声明此实体类订阅的事件,此实体类就能在仿真系统中运行,这种程序依赖接口而非实现的思想将在模型接口层进一步介绍。
[0035] 网络通信器,即中间件通信引擎,为位于各分布式仿真节点的实体类提供代理生成服务,并基于代理实现远程过程调用。
[0036] 网络通信器用于在实体类manager和各仿真实体类中创建网络代理模块,根据实体类节点位置为各仿真实体类生成manager代理,manager代理负责与实体类manager通信,为每个实体类提供网络通信服务。
[0037] 本发明提出封装面向对象、基于代理的通信协议及应用程序编程接口,提出两种典型的远程过程调用策略,第一种为通过远程节点位置信息定位远程实体类的manager代理,使用manager代理调用远程方法,第二种为远程节点生成自身manager代理并通过函数参数发送到本地,本地直接使用此manager代理调用本地方法。在事件管理器、时间管理器和实体类接口定义器的开发中使用到了这两种通信策略;网络通信器在系统中的功能为,根据节点位置生成实体类代理,提供网络通信服务。
[0038] 时间管理器,实现混合仿真系统的时间管理。
[0039] 根据实况/虚拟/构造混合系统仿真的不同需求,本发明提出两种时间管理方法,分别是:对事件发生时间精度要求较高的执行效率较低的保守时间推进方法和对事件发生时间精度要求较低的执行效率较高的宽容时间推进方法。由用户根据实际需求选择一种作为混合系统运行时的时间管理方法。
[0040] 保守时间推进方法如图1所示。它使用上面提到的实体类manager来管理所有实体类,要求所有实体类具有相同的逻辑时间,只有接收到manager通过网络通信器发来的步进指令时才能向前执行一步,并在执行结束后使用本地manager代理回调步进完毕信号。manager在除自身外的所有其他实体类完成回调后才能广播下一个步进指令。每个实体类中存有一个未来事件列表,当收到实体类manager发来的步进指令时,先进行“检查-发布”操作,即检查未来事件列表中在当前时刻需要处理的事件,执行这些事件并触发相应的操作,如内部变量、状态的变化或事件发布操作;然后进行“订阅-写入”操作,即在未来事件列表中写入由其他仿真实体类在当前时刻发来的事件;执行完这两步操作后进行代理回调,等待下一个步进指令。在这种时间管理方式下,事件产生后立即发送,由接收方根据接收时间执行。这种时间管理的优点是保证所有事件准时执行,事件中的数据被准确取得和使用,缺点是网络通信量较大,当实体数量大、事件交互密集时会使系统执行速度变慢。
[0041] 宽容时间推进方法如图2所示,要求所有实体类具有相同的逻辑时间且与系统物理时间同步,与保守时间推进方法不同,实体类manager不参与到时间管理中。在这种时间管理方式下,每个实体类中存有一个发送事件列表,事件产生后暂存在发送事件列表中,并在到达事件执行时间时发送。当实体类接收到事件时,如果该事件接收时间与逻辑时间差(由实体类逻辑定义器所定义的每个实体类允许的时间差)的绝对值在某一范围内,即宽容度范围内,则执行该事件,仿真继续进行;若超出宽容范围,则在该事件的历史事件列表中使用内推的方法得到其中变量在当前时刻“估计”的值,使用此估计值继续仿真,并将估计值作为一个新的事件写入历史事件列表中。
[0042] 对于实体类订阅的每个事件,本发明都设计一个相对应的历史事件列表,列表中存有固定数目的历史事件,以备接收到超出时间宽容范围的事件时根据历史事件推测数据的估计值,形成新的事件。当实体类接收到事件时进行“订阅-检查-写入”操作,即检查此事件是否满足执行要求,不满足根据该事件的历史事件列表读取历史事件进行处理,处理后将此新的事件写入该历史事件列表。当实体类执行完事件后进行“发布”操作,即将新触发的事件写入发送事件列表中等待执行时间到达时发布。这种时间管理的优点是逻辑时间均匀步进,不会因为网络通信或时间处理速度减缓,缺点是当网络通信或时间处理速度过慢时系统内变量可信度变低,并且模型内需要针对每个事件建立一个历史事件列表,当事件数量较多时空间复杂度较高。
[0043] 实体类管理器,实现了实体类的管理。对混合系统,生成一个实体类manager及其实例,以及参与仿真的实体类i及其仿真实例。i=1,2,…,n,n为正整数,代表参与仿真的实体类数。实体类管理器为实体类manager和各仿真实体类i生成实体管理模块,以创建和管理manager实例或仿真实例。
[0044] 实体类i是具有一定逻辑的对象的集合,体现为一个混合系统中的一个仿真代码工程,与它相关的事件的订阅发布和时间管理都在这个代码工程中实现。而实例是仿真中运行的最小单位,对应现实生活的一个对象,体现为类的变量。每个仿真代码工程包括一个manager实例和任意多个仿真实例,manager实例也就是上面提到的manager代理。manager类在仿真中生成一个实例,负责订阅发布时的事件管理和保守推进方法中的时间管理操作等。每个仿真实体类i会生成多个实例,每个实例在仿真中具有自己的状态和属性,使用链表、容器和结构体等进行管理。
[0045] 实体类接口定义器,实现了实体类的交互接口定义,如图3所示。
[0046] 实体类接口定义器通过解析用户输入的接口描述文件定义实体类交互接口,同时生成并初始化实体类manager和混合系统中仿真中需要的其他各实体类i。用户以标记语言的格式输入实体类信息,包括实体类名、实体类节点位置(网络地址和端口号)和实体类需要订阅的事件名。实体类名和实体类节点位置信息被写入中间件通信引擎提供的集成开发语言文件中,并调用相应编译器生成各实体类的网络代理;实体类订阅的事件名在实体类manager中生成接口管理模块,即事件路由引擎,在混合系统的实体类i中生成相应的接口定义模块,接口定义模块中记载实体类自身订阅的事件名;最后,实体类接口定义器将由事件管理器生成的事件管理模块、由时间管理器生成的时间管理模块和由实体类管理器生成的实体管理模块加入到实体类manager和各实体类i中,共同组成仿真原型系统。
[0047] 总的来说,所述事件管理模块用于管理实体类对事件的发布与订阅,通过manager代理向实体类manager发送事件;时间管理模块为每个实体类(包括manager类)提供时间管理方法,用于管理仿真时间;实体管理模块用于创建或管理manager实例或仿真实例。每个实体类都需要与manager类进行通讯,以实现以manager为中心控制的事件管理、时间管理和实体管理。
[0048] 实体类接口定义器为用户在开发仿真系统时提供了两大便利。第一点为不需要考虑底层通信逻辑和仿真运行管理,网络通信(网络代理的生成及管理)和运行管理(事件、时间和实体管理)在每次开发系统时操作均相同,与具体系统无关,通过解析用户的接口描述文件实现相关的通信模块和运行管理模块,使系统具有可重用性;第二点为不需要考虑应用层的具体逻辑实现,即先设计接口再设计业务逻辑的思想,达到程序依赖接口而非依赖实现的目的,使系统具有可组合性,只要某实体类对某接口感兴趣,即可根据相关接口订阅事件,并不考虑此实体类的实现平台、实现语言和实现逻辑。综上,互操作性、可重用性和可组合性使该方法具有面向实况/虚拟/构造的能力。
[0049] 实体类逻辑定义器,即实体类应用逻辑实现。
[0050] 本发明在实体类中预留了实现其业务逻辑的区域,主要包括实体类中实例的变量组织、实体类在收到事件后的操作、实体类触发发布事件的条件、每个实体类允许的时间差等,发布事件过程在原型系统中已经包含,不需要用户重复编写,实体类逻辑定义器的完善标志着用户完成了基于此仿真方法的仿真系统搭建。此后用户可以根据需要进行系统的运行与暂停、系统事件管理方法的选择和系统的输入输出定义,完成其仿真任务。