云朵朵 的个人资料弥漫的味道照片日志列表更多 工具 帮助

日志


《计算机仿真中的HLA技术》读书笔记--第3章(2)

 

《计算机仿真中的HLA技术》读书笔记--第3章(2) 

――――――――――――――――蓝乾艺―――――――――――――――――――

3.2.4HLA的信息模型-OMT

OMT(对象模型模板)规定了所有FOM的结构,每一个联邦有一个作为这个特定联邦词汇表的FOM模型,联邦的每一次运行都使用联邦的FOM。也就是说,FOMRTI的一个参数,在联邦运行的开始,FOM作为数据提供给RTIFOM定义了联邦成员相互传递的事情和事件的名字,FOM只描述联邦成员的内部事情,FOM是联邦运行时通过RTI交换数据的词汇表。

这样,FOM的改变不影响到RTIHLA标准。

OMT的主要组件有:对象类和交互类。

 

3.2.4.1交互:通过RTI的数据集

交互是在一个时刻通过RTI传送到其它联邦成员的数据集。一个交互可以用来表示仿真模型中多于一个联邦成员感兴趣的一个事件,它在仿真时间的一个点上发生。每个交互传送一组参数,一个交互被接受后,其不再继续存在。

FOM定义了交互类,一个联邦成员发送一个交互是一个特定类的交互。交互类是一个单向继承的层次结构,这个层次结构的根叫交互根(InteractionRoot)。在缺省情况下,交互根不定义参数。每一个交互类定义由它一起发送的参数,每一个类继承它所有父类定义的参数。一个类的完整有效的名字是通过连接由根到类的名字构成,中间又用“.”分隔。在FOM中完整有效的类名必须是唯一的。如图所示。

 

3.2.4.2对象:持续的仿真实体

RTI中的对象是如下仿真实体:

l         和多个联邦成员有关,并由RTI来处理。

l         在仿真时间的某些期间持续存在。

OMT定义了对象类,每个类有一个名字,每个类定义(可能是空的)一个称为属性的数据集。联邦成员产生这些类的实例。在联邦中,每一个实例都有自己的标识,都有独特的实例属性。仿真时,联邦成员通过给属性提供新的值来更新对象实例的状态。

对象类形成一个层次结构。每一个对象类一定有一个直接的父类[Mu1] ,对象类形成一个单向继承树。根类叫对象根(ObjectRoot),一个类的完整有效的名字是通过连接由根到类的名字构成,中间又用“.”分隔。在FOM中完整有效的类名必须是唯一的。

那些为一个类声明的属性值和那些从其父类继承来的属性称为有效属性,根类有一个必须的属性,即删除对象的特权(PrivilegeToDeleteObject,因此每一个类至少有一个有效属性。如图所示。

 

当属性是RTI操作主体时,它们要么是一个对象类的属性,要么是一个特定对象实例的属性。

l         一个对象类的属性称为类属性(Class Attribute

l         一个特定对象实例的属性称为实例属性(Instance Attribute

 

注意:HLA的对象不是完全面向对象的,那么它们的相同点在于:

1HLA的对象是对象类的实例,拥有唯一标识;

2)对象类形成一个层次结构,从父类继承属性。

不同在于:

1)在FOM中,HLA对象没有和它相联系的行为

2)“类属性”的概念不对应于Smalltalk中的“类变量(Class Variable)”或C++和Java中的“静态成员(Static Member)”。在HLA中,类属性是一个类的属性,它不考虑实例,被认为是一个类,没有值的概念。

关于RTI的实现:

1)术语“对象”并没有要求RTI或任何联邦成员必须用面向对象的语言来实现。

2)术语“对象”并没有要求HLA对象要作为对象结构存在于面向对象语言的任何API中。事实上,HLA对象在API中不是“语言对象”。

 

3.2.4.3交互和对象

在某种意义上,对象和交互之间是可以相互转化的,因此任何联邦模型可以全部采用对象或全部采用交互来实现。对象属性状态的变化是瞬间发生的(当属性值被更新时),所以联邦设计者总能用对象来实现交互的效果:通过产生其状态改变被当作交互的对象属性;同样,一个对象状态的变化可以表示为属性值变化的一系列交互。

下面是使用对象还是交互建模的基本规则:

l         任何发生的事情或事件用交互来建模。

l         如果要建模的实体有持续的状态,这个实体应该表示为对象。

3.2.4.4类的层次结构保护联邦成员免于变化

    在对象模型中继承的主要目的是保护联邦成员免于变化。简单地说,使用确定对象类和交互类的联邦成员,即使通过添加子类扩展FOM后,它仍能继续使用。

3.2.5HLA规则

HLA规则是构成HLA标准的3个组成部分之一,它表达了对HLA兼容的联邦成员和联邦的设计目标和限制,总结了HLA如何应用的方式。

 

联邦规则

规则1 联邦应该有一个联邦对象模型即FOMFOM遵循HLA的对象模板即MOT

规则2在联邦中,所有和仿真有关的对象实例的描述应该在联邦成员中,而不在RTI中。

规则3在联邦执行过程中,联邦成员间所有FOM数据的交换都应该通过RTI来实现。

规则4在联邦执行过程中,联邦成员和RTI之间遵循HLA接口规范进行交互。

规则5在联邦执行过程的任何时刻,一个实例属性最多能由一个联邦成员拥有。

 

 

联邦成员规则

规则6联邦成员应该有一个仿真对象模型SOMSOM遵循HLA的对象模型模板即MOT

规则7联邦成员应该能更新和/或反射其SOM中规定的任何属性、发送和/或接收其SOM中规定的交互。

规则8 在联邦执行过程中,联邦成员应该能够按SOM中的规定,动态地转移和/或接收属性的所有权。

规则9联邦成员应该能够按SOM中的规定,改变更新属性的条件(例如阈值)。

规则10联邦成员应该能管理局部时间,从而允许它和联邦中其它成员协调数据交互。

 

3.2.6管理对象模型-RTI描述联邦

3.3HLA提供了6个领域的服务

3.3.1联邦管理

联邦管理服务通过下列2种方式管理联邦。

l         根据存在和成员资格定义联邦的执行

l         完成联邦范围内的操作

3.3.2声明管理

声明管理服务是联邦成员用来声明它们产生(发布)或消费(订阅)数据意图的方式,RTI使用这些声明来安排数据的路由转换数据管理兴趣

关于路由,RTI使用订阅来决定当实体产生或更新时通知哪个联邦成员。

声明被用来转换联邦成员收到的数据。在使用前,收到的数据要根据联邦成员的订阅完成修剪和推销(重新贴标签)。它用来保护联邦成员免受FOM扩展的影响和鼓励联邦成员重用。

最后,RTI使用声明来表明对发布联邦成员的兴趣,RTI能告诉一个联邦成员是否有任何其它的联邦成员订阅了它打算产生的数据,以便在其它联邦成员不需要这个信息时,该联邦成员能停止产生数据。

3.3.3对象管理

    对象管理服务是用于实现数据实际交换的那些服务。联邦成员使用这些服务来发送和接收交互,这些服务也用于登记一个对象类的新实例和更新其属性。其它联邦成员将调用这组中的服务来接收交互、发现新实例和接收实例属性的更新值。

3.3.4所有权管理

HLA的规则5和规则8要求联邦成员在更新实例属性前必须先拥有它,RTI保证在一个时刻最多只能有一个联邦成员能拥有一个给定实例的属性,该联邦成员负责更新它。仿真一个实体的职责能以下两种方式在联邦成员实现分享:

首先,一个实体的完整建模可以由多个联邦成员分享。如果这个实体由带有几个属性的一个实例表示,不同的联邦成员可以拥有这个实例的不同属性,并负责更新它们各自拥有的属性。属性管理服务允许这样做。

其次,实体的仿真在联邦执行过程中能从一个联邦成员转移到另一个联邦成员,也就是一个实例属性的所有权可以从一个联邦成员转移到另一个联邦成员,所有权的转移可以由当前的拥有者启动,也可以由将来的拥有者启动。

如果一个联邦不需要所有权管理,则可以忽略它,但一般情况下应该考虑对象所有权的管理服务。

3.3.5时间管理

联邦成员在它们自己的线程控制下执行,因此联邦成员间事件的正确顺序是需要解决的重要问题。在HLA中,事件的排序用“仿真时间”来表达。仿真时间是一个抽象的概念,没有必要把它和任何时间表示或时间单位相联系。RTI的时间管理服务负责下列2件事情。

(1)       允许每个联邦成员和其它联邦成员协调起来推进它自己的仿真时间。

(2)       控制时间戳事件的发送,保证联邦成员永远不会接收来自其它联邦成员的“过去”事件,“过去”事件就是事件的仿真时间小于该联邦成员的仿真时间。

RTI允许联邦成员选择参与时间管理的程度。联邦成员可以是时间受限的,在这种情况下,它的仿真时间推进受其它联邦成员的控制;联邦成员可以是时间调节的,在这种情况下,它的仿真时间推进将调节其它联邦成员的仿真时间推进;联邦成员还可以即受时间受限的又是时间调节的,也可以两种都不是。联邦成员将根据它的目标和联邦的需求做出不同的选择,RTI允许联邦执行中联邦成员有不同的选择。

3.3.6数据分发管理

数据分发管理(Data Distribution ManagementDDM)服务控制着联邦成员间生产者与消费者的关系。尽管声明管理服务根据交互类和对象类管理这些关系,但是DMM根据对象实例和抽象的路由空间进行管理。DMM提供了强大的工具来改善生产者与消费者的关系。

3.3.7服务组尽可能独立

HLACORBA的关系

Corba是一个用作“中间件”的体系结构,“中间件”是应用和操作系统之间的一层软件,Corba允许对象的计算分布在多台计算机上。Corba标准是软件供应商和用户组成协会OMG的一个产品,Corba是这类标准中应用得最广泛的一个,还有具有类似功能得其它中间产品,如:DCOMDistributed Common Object Model)。

Corba定义了一个对象请求代理ORBObject Request Broker),它是实现Corba功能的支撑框架。对HLA得初学者来说,RTI有点想ORB。它们确实有相似的地方:ORB是分布式对象间实现交互得媒体;RTI是联邦成员间实现交互的媒体。但是这种相似性是表明的,其体系结构区别:

(1)               在体系结构的意义上,Corba是用于建立面向对象系统的,这样,其所有的元素是显式交互的;而在HLA中,联邦成员隐式地进行交互。

(2)               RTI支持联邦成员层次得组件模型,而Corba不支持,Corba只是一个能定义组件模型的平台,OMG目前正在为基于Corba的组件模型制定标准。

联系:

(1)       联邦成员和RTI之间得接口可以充当Corba接口。OMG IDL是一种API,使用这种API RTIambassador FederateAmbassador能被当作Corba对象。事实上接口规范的1.3版本和IDL API都已经被OMG接受为其“用于分布式系统的工具”。

(2)       ORBCorba服务是实现RTI的可选工具,它们在RTI中的应用被有效地隐藏在RTI接口的后面;同样地,联邦成员能在它们的实现中自由地使用Corba,有使用ORB实现的RTI和联邦成员。


 [Mu1]

《计算机仿真中的HLA技术》第3章读书笔记(1)

《计算机仿真中的HLA技术》读书笔记--第3章(1)

――――――――――――――――蓝乾艺―――――――――――――――――――

3HLA综述

3.2HLA定义了一种软件体系结构

3.2.1HLA的目标-由组件构建仿真系统

HLA定义了一种软件体系结构,它的主要目标是允许通过联合其它仿真来实现仿真应用,因此HLA支持基于组件的仿真开发,这里的组件是指联邦成员而不是被仿真的实体,联邦成员是一个仿真系统或工具,是重用的基本单位,它们能应用于原始联邦以外的其它联邦中。联邦由联邦成员构成。

一般,联邦成员比通常的软件组件大,联邦成员是完整的运行程序,而不是库里的例程或对象。  在联邦运行联邦设计的时候,HLA支持仿真组件的交互,但是它不是模型构造环境。

HLA设计者要遵循下列目标:(要点:组件化联合集成

1)应该能将一个大的仿真问题分解为多个小仿真问题,它们可以容易、准确地被定义、建立和验证。

2)应该能将由此产生的小仿真系统联合成为较大的仿真系统。

3)应该能将小仿真系统和其它的或未知的仿真系统联合起来形成新的仿真系统。

4)对于基于组件的仿真系统,通用的功能应该和特定的仿真分离开,由此产生的通用支撑结构应该能在仿真之间重用。

5)仿真和通用支撑结构间的接口应该能把仿真和现实支撑结构的技术隔离开,并将能把支撑结构和仿真中的技术隔离开。

3.2.2HLA定义的一种软件体系结构

3.3.2.1体系结构包含的元素、交互和模式

 

ShawGarlan对软件体系结构做出如下定义:理论上,软件体系结构包括建立系统的元素描述、元素间的交互、指导元素合成的模式和对这些模式的限制。

HLA联邦中的软件元素是RTI的一个实现和一些联邦成员,RTI是允许联邦一起执行的软件。

HLA标准和元素、交互、模式之间的映射关系如下:

l         元素:规则和接口规范中定义了HLA联邦的元素,它们是联邦成员、RTI和公共对象模型。

l         交互:规则和接口规范中定义了联邦成员和RTI间的交互、联邦成员间(总是通过RTI)的交互。对于一个给定的联邦,联邦对象模型定义了联邦成员和RTI间交互所传递的数据。对象模型模板(Object Model TemplateOMT)是所有联邦对象模型——FOM的元模型,也就是说,它定义了每一个合法的FOM的结构,这种结构是接口规范中的假设条件。

l         模式:HLA中允许的合成模式由规则进行限制并在接口规范中详细说明。

   

3.3.3.2HLA定义了一个体系结构(不是实现)

 

特别指出的是,RTI由它的接口定义的,有多种不同的RTI软件能满足指定的接口,对应联邦成员也是这样的。接口规范不仅定义了RTI提供给联邦成员的接口,而且定义了联邦成员提供给RTI的接口,因此每一个联邦成员也是这个接口的另一个实现。

接口规范是抽象的概念。服务(双向的)通过调用的前提条件、后续条件和异常被定义为获得和返回参数的过程调用,服务的定义中没有提到任何编程语言。只有在定义了服务之后,接口规范针对不同的编程语言定义了API

 

3.3.3.3HLA展示的几种体系结构的类型

   

HLA混合了层次化系统、数据抽象系统和基于事件(隐含调用)系统的特征,并利用这些系统各自的优点。

1HLA是一个层次化的体系结构。

 从联邦成员的角度看,RTI表现为一个层次,在它的下面完整地封装了RTI的功能。

 RTI的功能和联邦成员分离实现了两方面的功能。第一,将仿真互操作的通用功能从联邦成员中去掉,联邦成员的代码不需要重复那些用于实现互操作的服务。第二,将联邦成员从反映在RTI中的技术变化隔离开,如果必须修改RTI来适应新型网络,联邦成员不受影响。

2HLA是一个数据抽象的体系结构

 HLA中的层次原理实际上是有2个方向的:从联邦成员看RTI和从RTI看联邦成员,这构成了数据抽象RTI为其后面所有的状态都被隐藏的联邦成员提供接口,每一个联邦成员也为其后面所有状态都被隐藏的RTI提供接口。从RTI的角度看,有多个联邦成员,每一个都有同样的接口,单标识不同,这就是数据抽象或面向对象组织的本质。另一个角度,联邦成员的变化不会影响RTI,相同的RTI软件能用于不同的联邦成员,并且联邦成员本身可能还包括复杂系统或被连接到其它系统上。

3HLA是一个基于事件的体系结构

 基于事件的体系结构也称为隐含调用、反应集成或选择性广播。

 隐含调用是用于取代直接调用,一个组件可以宣布(或广播)一件或多件事件,系统中的其它组件通过一个过程与事件连接起来用于登记对这个事件的兴趣。当事件被宣布,系统自己将调用所有已经登记过这个事件的过程,这样一个事件的发生隐含地引发了在其它组件的调用。

 基于事件体系结构的优点是支持重用和容易实现系统进化,这些正是HLA使用这种体系结构类型的目的:针对确定FOM开发的联邦成员能和其它拥有同样FOM的联邦成员联合,而不需要关心那些联邦成员的数量和标识。

另外,隐含调用的主要缺点是组件放弃对系统计算的控制,特别是它们对事情发生的顺序不做任何假设。因此一个开发良好的联邦成员要避免对顺序做假设,除非通过RTI的服务来实现顺序,应避免对其它严格遵循FOM的联邦成员做出假设。

3.2.3体系结构将仿真和支撑框架的功能分离

HLA将联邦功能分为特定的仿真功能和支撑框架功能,这样做的目的是将模型或仿真的特殊行为放在实现它的联邦成员中,支撑框架中只包含仿真互操作的通用功能。因此,同样一个RTI软件可以用来支持许多不同的仿真应用,这样联邦成员的开发者就不必再为支撑框架的事情担忧了。

如图所示,RTI提供给每个联邦成员的接口称为RIT大使(RTI ambassador),联邦成员调用这个接口的操作来请求RTI服务,如:请求更新一个对象的一个属性值,称为联邦成员启动(Federate-initiated)服务。每个联邦成员也对RTI提供一个称为联邦成员大使(Federate Ambassador)的接口,当RTI必须通知联邦成员时,RTI通过调用联邦成员大使的操作来实现,例如:传给联邦成员一个属性值的新值,称为RTI启动(RTI-initiated)服务。这样RTI服务有些被定义为RTI大使接口的一部分,有些被定义为联邦成员大使接口的一部分。

这里注意的是:(1)联邦成员间通过服务来实现相互通信,不能直接对话。(2)联邦成员可以是多种多样的。(3)每个联邦成员和RTI之间只有唯一的连接点,对于RTI来说,这个唯一的连接点就是联邦成员的定义。