高级模拟架构 - 时间管理

概述

• 为什么我们需要时间管理?

• 消息排序

• HLA 时间管理服务

• 总结

为什么我们需要时间管理?

• 消息延迟可能导致错误的解释

• C 见到目标被摧毁在开火之前

• 时间异常 - 可通过延迟传递“被摧毁”事件给 C 来消除

消息排序 - 因果顺序

• 基于 Lamport 的“发生在前”关系(1978)

• 将模拟器的执行视为一系列有序的动作

• 例如,发送/接收消息 规则:

  • 如果动作 A 和 B 发生在同一模拟器中,且 A 在该模拟器内的动作序列中出现在 B 之前,则 A → B(即 A 发生在 B 之前)
  • 如果 A 是消息发送,B 是接收同一消息,则 A → B
  • 如果 A → B,且 B → C,则 A → C(传递性)

因果顺序

• 两个事件如果没有“发生在前”的关系,则被认为是并发的

 • 因果顺序交付服务保证,如果 E1 → E2,则接收两条消息的每个模拟器都会先接收到 E1,再接收到 E2

• 并发事件可能以任何顺序交付给模拟器

• “发生在前”可以扩展到消息:

  • 如果一个模拟器在发送另一条消息 M2 之前发送了消息 M1,则 M1 → M2
  • 如果 M1 在模拟器发送另一条消息 M2 之前被交付给模拟器,则 M1 → M2
  • 如果 M1 → M2,且 M2 → M3,则 M1 → M3

• 因此,对于坦克示例,因为坦克开火事件发生在目标被摧毁事件之前,分布式模拟执行将延迟传递目标被摧毁事件,直到它已经传递了坦克开火事件 因果顺序

• 如何实现因果排序? 在多播组中使用向量时钟

• 考虑一个由 N 个模拟器组成的组

• 每个模拟器 i 维护一个计数器向量 Ci,其中

  • Ci[i] = 模拟器 i 发送到该组的消息数量
  • Ci[j](j ≠ i)表示已经交付给模拟器 i 的来自 j 发送的组消息的数量

• 当模拟器 i 发送消息 M 时,它将 Ci[i] 增加 1,并在消息上放置一个带有新时钟值的向量时钟时间戳

• 向量时钟时间戳表明发送者接收到了哪些消息以及在发送 M 之前发送者已发送了哪些其他消息

• 时间戳因此提供了一个摘要,说明在因果上先于(→)M 的每个模拟器发送的消息数量

• 例如,模拟器 1 发送的消息 M 上的向量时钟时间戳(5, 9, 6)意味着在发送 M 之前:

  • 模拟器 1 已经向该组发送了 4 条消息
  • 模拟器 2 发送的 9 条消息已经交付给 1
  • 模拟器 3 发送的 6 条消息已经交付给 1

• 因此,19 条消息在因果上先于(→)M,因此对于属于该组的任何模拟器来说,所有 19 条消息都必须在 M 交付之前被交付,以维持因果排序属性

因果和完全有序

  • 因果顺序不保证关于并发事件的任何顺序
  • 两个不同的模拟器可以看到相同的事件集在不同的顺序中,导致其他时间异常

两架蓝色飞机攻击红色 2

两个模拟器看到相同的事件集以不同的顺序导致的时间异常

• 如果因果顺序交付服务得到加强,不仅事件按因果顺序交付,所有模拟器也保证以相同顺序接收一组共同事件的消息,则可以解决问题

• 必须定义事件的完全顺序

• 因果与完全有序通信服务(CATOCS)确保:

  • 如果 E1 → E2 且模拟器接收到 E1 和 E2 的消息,则 E1 将在 E2 之前被交付
  • 如果两个模拟器都接收到任何两个事件 E1 和 E2 的消息,两者都将按相同顺序接收它们

时间戳顺序

  • 在时间戳顺序(TSO)中,每个事件都被分配一个时间戳
  • 消息按非递减时间戳的顺序交付给每个模拟器
  • TSO 消除了可能发生的因果顺序和 CATOCS 产生的时间异常
  • 假设包含相同时间戳的事件被所有模拟器以相同的顺序处理,TSO 确保适当地建模了事件的前后关系,并确保所有模拟器看到事件的相同排序

HLA 消息排序服务

HLA 提供两种类型的消息排序:

  • 接收顺序(无序):消息以任意顺序传递给联邦
  • 时间戳顺序(TSO):发送者为消息分配时间戳;连续消息以非递减时间戳传递给每个联邦

  • 接收顺序最小化延迟,不防止时间异常
  • TSO 防止时间异常,但延迟稍高

时间同步交付

考虑连接两个顺序的离散事件模拟器

在 HLA 中,逻辑时间与模拟时间同义

必须适当管理每个模拟器的逻辑时间推进,以确保没有模拟器接收到其过去的消息

HLA 时间管理(TM)服务定义了联邦推进其逻辑时间的协议;RTI 将确保不在联邦的过去交付 TSO 消息

HLA时间管理服务

推进逻辑时间

HLA TM 服务为联邦定义了推进逻辑时间的协议;逻辑时间仅在联邦明确请求推进时推进

  • 时间推进请求:时间步进联邦
  • 下一个事件请求:事件步进联邦
  • 时间推进授权:RTI 调用以确认逻辑时间推进

如果联邦的逻辑时间为 T,RTI 保证不会将时间戳 < T 的 TSO 消息传递给联邦

联邦负责将逻辑时间推进与实时执行中的实际时间同步

时间推进请求(TAR)

  • 通常由时间步进联邦使用
  • 联邦调用时间推进请求(T)请求将其逻辑时间(LT)推进到 T RTI 交付所有时间戳 ≤ T 的 TSO 消息
  • RTI 将联邦的时间推进到 T,当可以保证交付所有时间戳 ≤ T 的 TSO 消息时,调用时间推进授权(T)
  • 授权时间始终与请求时间匹配

同步消息交付

目标:按时间戳顺序处理所有事件(本地和传入消息);为支持此目标,RTI 将:

  • 按时间戳顺序交付消息
  • 将交付与模拟时间推进同步

联邦:下一个本地事件的时间戳为 T

  • 如果没有时间戳 < T 的 TSO 消息,推进到 T,处理本地事件
  • 如果有时间戳 T’ ≤ T 的 TSO 消息,推进到 T’ 并处理 TSO 消息

下一个事件请求(NER)

• 联邦调用下一个事件请求(T)请求将其逻辑时间推进到下一个 TSO 消息的时间戳或 T,取较小者

• 如果下一个 TSO 消息的时间戳 T’ ≤ T

  • RTI 交付下一个 TSO 消息,以及所有时间戳为 T’ 的其他消息
  • RTI 发出时间推进授权(T’)

• 否则

  • RTI 将联邦的时间推进到 T,调用时间推进授权(T)

HLA 中的乐观时间管理

HLA 对乐观联邦的支持

  • 联盟可能包括保守和/或乐观联邦
  • 联邦不知道其他联邦的本地时间管理机制(乐观或保守)
  • 可能稍后取消的乐观事件不会交付给无法回滚的保守联邦
  • 乐观事件可以交付给其他乐观联邦
  • 各个联邦可能是顺序或并行模拟

刷新队列请求:类似于 NER,但

(1) 交付 RTI 的本地消息队列中的所有消息,

(2) 在发出时间推进授权前,不需要等待其他联邦

总结:HLA 时间管理

功能:

• 允许具有不同时间管理要求(及本地 TM 机制)的联邦在单一联盟执行中结合

  • DIS 风格的训练模拟
  • 具有严格实时约束的模拟
  • 事件驱动的模拟
  • 时间步进的模拟
  • 乐观模拟

HLA 时间管理服务:

• 事件顺序

  • 接收顺序交付
  • 时间戳顺序交付

• 逻辑时间推进机制

  • TAR
  • NER

分布式虚拟环境:总结

• 或许是迄今为止分布式模拟技术的最主要应用

  • 人在环中:训练、互动、多玩家视频游戏
  • 硬件在环中

• 管理处理器间通信是关键

  • 死亡推测技术
  • 数据分发管理

• 实时执行是必须的

• 许多其他问题

  • 地形数据库,一致的动态地形
  • 实时建模和显示物理现象
  • 硬件时钟的同步
  • 人为因素
  • 10
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值