马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
概要
– 命名空间
– 爱好管理
– 基于类的过滤
– 基于值的过滤
– 基于区域的
– 基于网格的
引言
- 基本题目:当一个模仿器生成大概对其他模仿器有爱好的信息(例如状态更新)时,谁应该吸收消息?
- 例子:在假造情况中移动的车辆 – 移动车辆发送“更新”消息,指示新位置
– 每个能“看见”移动车辆的车辆应该吸收消息
– 发送者/RTI怎样知道哪些其他团结体应该吸收消息?
• 数据分发本质上是一个消息路由题目
基本概念
通信原语
• 单播 :一个发送者,消息被一个目的地吸收
• 广播 :一个发送者,消息被所有目的地吸收
• 组播:一个发送者,消息被多个(但不肯定全部)目的地吸收
– 操纵(类似于新闻组)
• 参加群组
• 离开群组
• 向群组发送消息
– 可以通过单播或网络组播实现
在SIMNET和DIS中的数据分发
- 题目:谁吸收发送的每条消息?
- 方法:广播每条消息,吸收者负责过滤(删除)不需要的消息
- 有N个团结体时,会有O(N^2)条消息;大概利用大量的通信带宽
- 花时间吸收和过滤不需要的消息成为瓶颈
数据分发
目标:将一个模仿器生产的数据路由给那些对吸收它感爱好的模仿器(理想情况下,不给那些不感爱好的模仿器)
这意味着有
- 模仿器指定其感爱好吸收的数据的方式(爱好表达)
- 描述产生的数据的方式(描述表达)
- 指定描述和爱好表达的通用语言(命名空间)
类比:互联网新闻组
• 描述表达
- 消息发布到的新闻组名称
- 在reddit“r/Minecraft”发布通告
• 爱好表达
- 用户订阅的新闻组聚集
- 订阅“r/Minecraft”和“r/gaming”
• 命名空间
命名空间
• 用于创建数据描述表达式和爱好表达式的“词汇”
• 名称空间是一组元组(V1, V2, … VN),其中 Vi 是基本类型或另一个元组
– 类别:罗列类型 <坦克, 飞机, 舰船>
– 位置:元组(int: X坐标, int: Y坐标),其中 0 < X < 1000 且 0 < Y < 1000名称空间中的值:(坦克,(30,200)); (飞机,(10,20))
– 模仿的状态变量(例如,对象属性的值),或
– 仅为路由数据而界说的新构造(HLA:路由空间区域)
- 可包罗对象的静态属性(例如,类别名称、属性名称)或动态属性(属性值)
爱好管理
爱好与描述表达式
• 爱好表达式:名称空间的子集
- 对所有飞机感爱好 • (飞机, (X, Y)) 对任何 X 和 Y
- 对“附近”的坦克感爱好 • (坦克, (X, Y)) 其中 10 < X < 20 且 130 < Y < 150
• 描述表达式:名称空间的子集
- (坦克, (15, 135))
- (飞机, (X, Y)) 其中 35 < X < 38 且 98 < Y < 100
• 数据路由
- 假如消息的描述表达式与模仿器的爱好表达式重叠,则模仿器吸收消息
静态与动态数据分发
• 静态数据分发
- 名称空间仅包罗在实行过程中不变的静态属性
- 基于类别的数据分发 --->根据数据类型过滤 ---> “给我所有坦克类对象的位置属性更新”
- 不能基于动态计算的量进行过滤 --->不能说:“给我靠近我的坦克对象的更新”
- 例子:HLA 中的声明管理
• 动态数据分发
- 名称空间包罗大概在实行过程中变化的动态量
- 基于值的数据分发 ---> “给我靠近我的坦克对象的更新”
- 例子:HLA 中的数据分发管理 ---> 路由空间 ---> 订阅我战场区域内坦克对象的位置属性
静态数据分发(基于类)
• HLA 中的声明管理服务
• 联盟对象模型(FOM)界说了描述联邦间交换的所有数据的对象类层次结构
• 描述表达式和爱好表达式指定对象类层次结构中的点
基于类的数据分发(静态)
• 联盟对象模型(FOM)界说了联邦间传输的信息类型
- 对象类(例如,坦克)
- 属性(例如,位置,炮塔方向)
• 一些关键原语(联邦/RTI 接口)
- 发布对象类属性:由联邦调用以声明其能够更新的对象类和属性
- 订阅对象类属性:声明联邦有爱好吸收的对象类和属性
- 注册对象实例:通知 RTI 联邦内已创建一个对象的实例
- 发现对象实例*:通知联邦已注册订阅类的一个对象实例
- 更新属性值:通知 RTI 已修改一个或多个对象的属性
- 反映属性值*:通知联邦已订阅的属性已被修改
- 每个类从父类继承属性
- 名称空间:<类别, 属性> <Vehicle,position>, <Aircraft,position>, <Aircraft,altitude>, <Tank,position>, <Tank,turret>, <B-17,position>, <B-17,altitude>, <B17,bombs>, <Spitfire,position>, <Spitfire,altitude>, <Spitfire, bullets>
• 发布对象类属性 [类别, 属性]
• 描述表达式:对象实例的一个属性
- 名称空间中的单一 <类别, 属性> 点
- 例子:<Spitfire, 位置> 或 <Aircraft, 高度>
• 订阅对象类属性 [类别, 属性]
• 爱好表达式:以订阅点为根的子树
- 订阅(飞机,高度):吸收关于飞机、B-17 和喷火战斗机对象的高度属性的更新
- <飞机, 高度>, <B-17 轰炸机, 高度>, <喷火战斗机, 高度>
动态 DDM(基于值)
• 动态(基于值的)数据分发:HLA 数据分发管理
• DDM 实施
HLA 数据分发管理(DDM)
• HLA DDM 提供了一个更通用的机制 • 区域 – 由范围指定的矩形 • 名称空间
- 路由空间:从 0 到 1 的 N 维坐标系统
- 与模仿状态分开,仅用于路由
• 爱好表达式
- 订阅区域:路由空间中的 N 维矩形
- 将区域与订阅请求关联
• 描述表达式
- 更新(发布)区域:路由空间中的 N 维矩形
- 与每个对象实例关联
• 假如更新属性的更新区域与该类/属性的联邦订阅区域重叠,更新属性的对象实例的消息将被路由到该联邦
HLA DDM
- N 维标准化路由空间(假造情况中的游戏区)
- 爱好表达是路由空间中的区域(S1=[0.1,0.5], [0.2,0.5])
- 描述表达式:每次更新都与路由空间中的更新区域(U)相干联
- 假如联邦已订阅正在更新的属性且其订阅区域与更新区域重叠,则联邦会收到消息
- 更新点:传感器未被通知车辆
- 更新区域:传感器被通知车辆 过滤精度
总体来说,DDM 是
• 过滤精度
• 实施思量(映射到多播组)
• 易用性之间的折衷
HLA DDM 服务
路由空间(名称空间)和区域
• 在联盟初始化文件中界说路由空间
• 创建区域,修改区域,删除区域
- 用于订阅和更新区域 订阅区域(爱好表达式)
- • 利用区域订阅/取消订阅对象类属性
- 除了基于类的过滤外还利用
- 更新区域(描述表达式)
- • 利用区域注册对象实例或将区域与更新关联
- • 取消与更新的区域关联 • 更新属性值 基于区域的方法
基于区域的方法
基于网格的方法
• 将路由空间划分为网格单位,将每个单位映射到一个多播组
• 订阅区域:参加与订阅区域重叠的每个组
• 属性更新:将更新发送到与更新区域重叠的每个组
• 需要额外的过滤以避免不需要的消息,重复消息
更改订阅区域
• 对于(旧区域中的单位 - 新区域中的单位),实行离开操纵
• 对于(新区域中的单位 - 旧区域中的单位),实行参加操纵
总结(DDM)
• 声明管理(静态)
• 数据分发管理提供基于值的数据过滤
- 动态爱好,描述表达式
- 设计涉及多个衡量 : 过滤效率 ,易用性 , 实施复杂性
• 实施
- 将名称空间映射到多播组
- 将爱好表达式映射到多播组参加
- 将描述表达式映射到多播组发送
• DDM
- 基于区域
- 基于网格
- 其他(基于排序的方法 - 见 tomacs.pdf)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |