云朵朵's profile弥漫的味道PhotosBlogListsMore ![]() | Help |
弥漫的味道
|
《计算机仿真中的HLA技术》读书笔记--第3章(2)《计算机仿真中的HLA技术》读书笔记--第3章(2)――――――――――――――――蓝乾艺―――――――――――――――――――
OMT(对象模型模板)规定了所有FOM的结构,每一个联邦有一个作为这个特定联邦词汇表的FOM模型,联邦的每一次运行都使用联邦的FOM。也就是说,FOM是RTI的一个参数,在联邦运行的开始,FOM作为数据提供给RTI。FOM定义了联邦成员相互传递的事情和事件的名字,FOM只描述联邦成员的内部事情,FOM是联邦运行时通过RTI交换数据的词汇表。
这样,FOM的改变不影响到RTI和HLA标准。
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的对象不是完全面向对象的,那么它们的相同点在于:
(1)HLA的对象是对象类的实例,拥有唯一标识;
(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后,它仍能继续使用。
HLA规则是构成HLA标准的3个组成部分之一,它表达了对HLA兼容的联邦成员和联邦的设计目标和限制,总结了HLA如何应用的方式。
联邦规则
规则1 联邦应该有一个联邦对象模型即FOM,FOM遵循HLA的对象模板即MOT。
规则2在联邦中,所有和仿真有关的对象实例的描述应该在联邦成员中,而不在RTI中。
规则3在联邦执行过程中,联邦成员间所有FOM数据的交换都应该通过RTI来实现。
规则4在联邦执行过程中,联邦成员和RTI之间遵循HLA接口规范进行交互。
规则5在联邦执行过程的任何时刻,一个实例属性最多能由一个联邦成员拥有。
联邦成员规则
规则6联邦成员应该有一个仿真对象模型SOM,SOM遵循HLA的对象模型模板即MOT。
规则7联邦成员应该能更新和/或反射其SOM中规定的任何属性、发送和/或接收其SOM中规定的交互。
规则8 在联邦执行过程中,联邦成员应该能够按SOM中的规定,动态地转移和/或接收属性的所有权。
规则9联邦成员应该能够按SOM中的规定,改变更新属性的条件(例如阈值)。
规则10联邦成员应该能管理局部时间,从而允许它和联邦中其它成员协调数据交互。
联邦管理服务通过下列2种方式管理联邦。
l 根据存在和成员资格定义联邦的执行。
l 完成联邦范围内的操作。
声明管理服务是联邦成员用来声明它们产生(发布)或消费(订阅)数据意图的方式,RTI使用这些声明来安排数据的路由、转换数据和管理兴趣。
关于路由,RTI使用订阅来决定当实体产生或更新时通知哪个联邦成员。
声明被用来转换联邦成员收到的数据。在使用前,收到的数据要根据联邦成员的订阅完成修剪和推销(重新贴标签)。它用来保护联邦成员免受FOM扩展的影响和鼓励联邦成员重用。
最后,RTI使用声明来表明对发布联邦成员的兴趣,RTI能告诉一个联邦成员是否有任何其它的联邦成员订阅了它打算产生的数据,以便在其它联邦成员不需要这个信息时,该联邦成员能停止产生数据。
对象管理服务是用于实现数据实际交换的那些服务。联邦成员使用这些服务来发送和接收交互,这些服务也用于登记一个对象类的新实例和更新其属性。其它联邦成员将调用这组中的服务来接收交互、发现新实例和接收实例属性的更新值。
在HLA的规则5和规则8要求联邦成员在更新实例属性前必须先拥有它,RTI保证在一个时刻最多只能有一个联邦成员能拥有一个给定实例的属性,该联邦成员负责更新它。仿真一个实体的职责能以下两种方式在联邦成员实现分享:
首先,一个实体的完整建模可以由多个联邦成员分享。如果这个实体由带有几个属性的一个实例表示,不同的联邦成员可以拥有这个实例的不同属性,并负责更新它们各自拥有的属性。属性管理服务允许这样做。
其次,实体的仿真在联邦执行过程中能从一个联邦成员转移到另一个联邦成员,也就是一个实例属性的所有权可以从一个联邦成员转移到另一个联邦成员,所有权的转移可以由当前的拥有者启动,也可以由将来的拥有者启动。
如果一个联邦不需要所有权管理,则可以忽略它,但一般情况下应该考虑对象所有权的管理服务。
联邦成员在它们自己的线程控制下执行,因此联邦成员间事件的正确顺序是需要解决的重要问题。在HLA中,事件的排序用“仿真时间”来表达。仿真时间是一个抽象的概念,没有必要把它和任何时间表示或时间单位相联系。RTI的时间管理服务负责下列2件事情。
(1) 允许每个联邦成员和其它联邦成员协调起来推进它自己的仿真时间。
(2) 控制时间戳事件的发送,保证联邦成员永远不会接收来自其它联邦成员的“过去”事件,“过去”事件就是事件的仿真时间小于该联邦成员的仿真时间。
RTI允许联邦成员选择参与时间管理的程度。联邦成员可以是时间受限的,在这种情况下,它的仿真时间推进受其它联邦成员的控制;联邦成员可以是时间调节的,在这种情况下,它的仿真时间推进将调节其它联邦成员的仿真时间推进;联邦成员还可以即受时间受限的又是时间调节的,也可以两种都不是。联邦成员将根据它的目标和联邦的需求做出不同的选择,RTI允许联邦执行中联邦成员有不同的选择。
数据分发管理(Data Distribution Management,DDM)服务控制着联邦成员间生产者与消费者的关系。尽管声明管理服务根据交互类和对象类管理这些关系,但是DMM根据对象实例和抽象的路由空间进行管理。DMM提供了强大的工具来改善生产者与消费者的关系。
Corba是一个用作“中间件”的体系结构,“中间件”是应用和操作系统之间的一层软件,Corba允许对象的计算分布在多台计算机上。Corba标准是软件供应商和用户组成协会OMG的一个产品,Corba是这类标准中应用得最广泛的一个,还有具有类似功能得其它中间产品,如:DCOM(Distributed Common Object Model)。
Corba定义了一个对象请求代理ORB(Object 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) ORB和Corba服务是实现RTI的可选工具,它们在RTI中的应用被有效地隐藏在RTI接口的后面;同样地,联邦成员能在它们的实现中自由地使用Corba,有使用ORB实现的RTI和联邦成员。
《计算机仿真中的HLA技术》第3章读书笔记(1)
|
|||||||||||||||||
语言是由句子组成的集合,是由一组符号所构成的集合。 汉语--所有符合汉语语法的句子的全体 英语--所有符合英语语法的句子的全体 程序设计语言--所有该语言的程序的全体
语义 -- 表示按照各种表示方法所表示的各个记号的特定含义。(各个记号和记号所表示的对象之间的关系) 语用 -- 表示在各个记号所出现的行为中,它们的来源、使用和影响。 每种语言具有两个可识别的特性,即语言的形式和该形式相关联的意义。 语言的实例若在语法上是正确的,其相关联的意义可以从两个观点来看,其一是该句子的创立者所想要表示的意义,另一是接收者所检验到的意义。这两个意义并非总是一样的,前者称为语言的语义,后者是其语用意义。幽默、双关语和谜语就是利用这两方面意义间的差异。 如果不考虑语义和语用,即只从语法这一侧面来看语言,这种意义下的语言称作形式语言。形式语言抽象地定义为一个数学系统。“形式”是指这样的事实:语言的所有规则只以什麽符号串能出现的方式来陈述。形式语言理论是对符号串集合的表示法、结构及其特性的研究。是程序设计语言语法分析研究的基础。 |
|
|