分布式仿真技术研究 下载本文

龙源期刊网 http://www.qikan.com.cn

分布式仿真技术研究

作者:焦思涵

来源:《中国高新技术企业》2015年第17期

摘要:分布式仿真是研究分布式系统或者通过分布式计算对大规模复杂系统进行仿真的一项非常重要的技术。在分布式仿真中,仿真成员之间需要进行频繁的数据通信,因此数据通信的性能对整个仿真的运行速度和性能将产生重要影响。在HLA的仿真系统中,联邦是用来达到某一特定仿真目的的分布仿真系统。文章对分布式仿真技术进行了研究。 关键词:分布式仿真技术;RTI;XML;仿真成员;数据通信 文献标识码:A 中图分类号:TP391 文章编号:1009-2374(2015)18-0028-03 DOI:10.13535/j.cnki.11-4406/n.2015.18.015 1 分布式仿真概述

分布式仿真是研究分布式系统或者通过分布式计算对大规模复杂系统进行仿真的一种非常重要的技术。一方面,把分布在不同地理位置的仿真模型连接起来,组成一个仿真联邦,共同完成仿真任务;另一方面,也可以把复杂的仿真计算分布在不同的计算机上并行地运行。分布式仿真主要应用于军事、制造、娱乐、人员培训等方面。由于供应链往往涉及不同地域的多个企业,分布式仿真也广泛应用于供应链的建模和仿真。

我们使用基于HLA/RTI的分布式仿真的高层体系结构来实现仿真。在HLA的仿真系统中,联邦是用来达到某一特定仿真目的的分布仿真系统,它由若干相互作用的联邦成员构成,从而使跨平台仿真变得更加容易。在跨平台的仿真中,我们面对需要传输大量的带有标识的数据的问题。为解决这个问题,我们提出了采用以DOM树方式的XML文档的方案来实现表现、保存和传输我们需要的仿真数据的解决方法。使用微软的MSXML的DOM Parser的解决方案,通过Visual C++来进行XML的编程,主要使用了其中的Document接口,并将其与仿真系统的仿真前端结合在一起,完成仿真系统内大量的数据传输。采用了这种方式后,使得数据的格式和表达具有跨平台的灵活性和独立性。

在分布式仿真中,仿真成员之间需要进行频繁的数据通信,因此数据的通信效率对整个仿真的运行速度和性能将产生重要影响。分布式仿真是研究分布式系统或者通过分布式计算对大规模复杂系统进行仿真的一种非常重要的技术。一方面,把分布在不同地理位置的仿真模型连接起来,组成一个仿真联邦,共同完成仿真任务;另一方面,也可以把复杂的仿真计算分布在不同的计算机上并行运行。分布式仿真主要应用于军事、制造、娱乐、人员培训等方面。 仿真克隆是近几年刚刚出现的一个新的仿真优化技术,目的是避免或减少仿真中的重复计算,从而提高仿真的执行效率和效能,提高仿真软件的健壮性及仿真优化能力。其基本思想

龙源期刊网 http://www.qikan.com.cn

是,在仿真运行过程中,当系统的状态达到某种条件,或者系统到达某个决策点而面临决策的时候,仿真过程“克隆”自己,从而产生新的仿真,原有仿真及其克隆分别沿着不同的路径同时继续运行,探索和试验不同的选择、策略和情形(Scenarios)。本课题以分布式供应链为研究背景,在PETRI网矩阵模型的基础上,研究基于HLA的分布式仿真的克隆技术,在HLA的分布仿真中采用XML文档格式来实现带标记数据的传输。取得的结果也是初步的,尚存在以下问题:

1.1 仿真成员的“克隆”

仿真成员通常是仿真程序,如何在需要克隆的时候,仿真成员复制自己,并使各个情形沿着不同的路径运行,尚没有一个较通用的解决方法。在这个成员的复制的过程中,需要获取成员的全部的状态数据,从而复制出相同的成员。在建立这种结构化的可标识的数据时如何采用XML的文档格式。

1.2 仿真代码的可重用性

仿真成员的互操作性和仿真代码的可重用性是HLA的两个重要目标,如何使现有仿真代码不经修改即可支持克隆技术,其中的仿真成员的互操作需要大量的可标识的数据文档,而仿真代码的重用需要对仿真代码的结构使用XML文档进行标记等,尚需进一步研究。 1.3 计算量平衡问题

在分布式仿真中,如果参与仿真的计算机之间实现计算量平衡,可以有效减少等待时间。如何在不同的计算资源之间重新分配计算任务,如何用XML表示计算机的计算状态等,也是一个非常重要的问题。

在分布式仿真中,仿真成员之间需要进行频繁的数据通信,因此数据通信的质量和效率对整个仿真的运行效果和性能将产生重要的影响。笔者在本课题中采用XML实现基于HLA的分布式仿真中的数据交换。就是要解决在上面的仿真成员的“克隆”、仿真代码的可重用性以及计算量平衡问题中的仿真数据的跨平台传输,从而实现在分布式仿真中的数据交换。 2 分支仿真中的数据传输 2.1 仿真分支方法

仿真克隆是近几年刚刚出现的一个新的仿真优化技术,目的是避免或减少仿真中的重复计算,从而提高仿真的执行效率和效能,提高仿真软件的健壮性及仿真优化能力。其基本思想是,在仿真运行过程中,当系统的状态达到某种条件,或者系统到达某个决策点而面临决策的时候,仿真过程“克隆”自己,从而产生新的仿真,原有仿真及其克隆分别沿着不同的路径同时继续运行,探索和试验不同的选择、策略和情形(Scenarios)。采用这种技术具有下列优点:(1)在克隆之后,多个情形同时运行,有助于提高仿真软件的健壮性。在仿真结束的时候,

龙源期刊网 http://www.qikan.com.cn

将会同时得到多个仿真结果。在多CPU的场合,由于各个情形独立运行,从而增加仿真的并行度,提高仿真运行速度;(2)在克隆之前的计算量被克隆之后的所有情形所继承和共有,从而避免或减少了重复计算;(3)在分布式环境下,并非组成仿真联邦的所有成员均同时克隆自己,那些参与克隆的成员可以共享那些没有克隆的成员,从而减少了计算量。初步的试验结果显示,该技术可以显著减少仿真运行时间。 2.2 在仿真中的RTI服务

如图1所示,本设计中创建了一个包含两个成员的联邦。一个成员是对制造业流水线的四种加工策略(FIFO、EDD、SPT、SLK)进行仿真的应用程序(称为Simulation),另一个成员是用于监控仿真运行的可视化人机交互界面(称为Monitor)。

其中,交互类Control有两个参数,ConCode表示控制命令的编号,ConData表示控制命令的参数。同样,交互类Report也有两个参数,RepCode表示报告的状态编号,RepData表示状态参数。

如图2所示,描述了本设计的基本交互过程和在该过程中主要用到的RTI服务。 2.2.1 声明管理服务。

第一,publishInteractionClass()。联邦成员使用publishInteractionClass()服务来公布指定的交互类,表明联邦成员可以生成指定交互类的交换实例。在本设计中,Simulation联邦公布交互类Control,Monitor联邦公布交互类Report。

第二,subscribeInteractionClass()。联邦成员利用subscribeInteractionClass()服务来订购指定的交互类。RTI将随后出现的指定交互类的交互实例传给此联邦成员。订购一个交互类就订购了其所有的参数。在本设计中,Simulation联邦公布交互类Report,Monitor联邦公布交互类Control。

2.2.2 对象管理服务。

第一,sendInteraction()。联邦成员使用sendInteraction()服务来向联邦发送交换实例。在联邦中,交互实例用于表示瞬间的事件或任何其他不适合用持久的属性状态来表示的信息。

第二,receiveInteraction()。receiveInteraction()是在FederateAmbassador中定义的回调函数,用来通知联邦成员所订购的交互实例已被发送。 2.3 仿真中的数据传输