最近因为工作需要,在研究基于仿真体系下的时间管理,自己简单整理,进行梳理实现方案,只是个人梳理笔记。
1.什么是基于仿真体系下的时间管理。
LVC仿真体系是一种广泛应用于军事训练、测试和评估的很合模拟框架。
Live(真实)仿真涉及实际装备和人员。
Virtual(虚拟)仿真使用模拟器由真人操作。
Constructive(构造性)仿真通过计算机模型生成试题和行为。
====》这种体系的集成要求高度精确的时间管理,以确保不同组件之间的同步、事件顺序和时空一致性。
====》时间管理是LVC仿真体系的核心技术之一,主要处理分布式环境中时间同步、事件处理、以及因果关系维护。
2.整理一些概念
了解时间管理是什么,有哪些方案可以支持时间管理(时间管理的核心是为了保持仿真场景下的因果一致性)
3.时间管理是什么
3.1 整理现阶段对时间管理的认知
3.2 HLA下对时间管理的支持(理论理解)
3.3 时间管理是什么
时间管理本质上就是基于集中式节点和非集中式节点的业务控制逻辑:数据结构再配合相关的look-ahead,乐观/悲观策略实现。
传统hla支持的是保守时间推进?协商时间步长,避免违反时间(lookahead),保证因果一致性。
4.4 我们的系统中应该怎么支持时间管理呢?
4.如何基于rtps实现时间管理逻辑呢?
已经对时间管理进行了理解,目的是基于rtps对时间管理进行支持,梳理下基于rpts已有的能力如何支持时间管理?
4.1 考虑rtps对时间管理的支持
4.2 业务场景梳理,怎么支持时间管理
4.2.1 真实的使用业务场景
实际我们的业务场景是基于DDS实现的,外部构造节点是通过适配器的方式进行接入。
4.2.2 本质原理:保证事件的顺序(因果一致)
本质问题是基于时间一致性,如何保证事件的因果一致性。
4.2.3 保证事件顺序的因果管理的部署架构描述
考虑单机版本下的事件处理逻辑,和网络交互场景下事件一致性问题(基于时间一致性)
4.2.4 可以用在哪些事件交互控制逻辑中?业务场景
4.3 基于rtps如何实现时间管理呢?
4.4 如何通过实践对时间管理进行支持
这里主要考虑的是基于rtps2.5对事件管理进行支持,主要目标是了解基于已经支持rtps2.5的fastdds库对时间管理进行支持。
5.总结
最终理解后,仿真体系下的时间管理的本质,实际上是在仿真场景下,保证事件交互顺序,因果一致性的前提下,对具有虚拟构造兵力的节点进行快速推进的管理手段,主要涉及就是乐观推进和悲观推进。
5.1 保守推进和乐观推进
| 策略 | 因果一致性保障方式 | 快速推进能力 | 适用场景 |
|---|---|---|---|
| 保守时间推进 | 严格等待所有可能影响自己的事件(看前 Lookahead) | 较慢(受最慢节点限制) | 要求严格因果、实时性高的仿真(如有人在回路) |
| 乐观时间推进 | 先推进,发现冲突后回滚(Time Warp) | 极快(节点可大胆推进,回滚代价可控) | 大规模虚拟/构造兵力仿真(需要保存历史快照) |
乐观时间推进场景:在虚拟/构造兵力占比高的仿真中,乐观机制允许节点“快速推进”,只在必要时回滚,从而实现整体高性能。
5.2 保守推进和乐观推进的底层原理
| 项目 | LBTS(保守) | GALT(乐观) |
|---|---|---|
| 所属机制 | 保守时间推进 | 乐观时间推进(Time Warp) |
| 含义 | “我最远能安全推进到的时间”(零风险) | “我最多能乐观推进到的时间”(有风险) |
| 计算依据 | 所有节点当前时间 + Lookahead | 未处理事件 + 在途消息的最小时间戳 |
| 推进边界 | 节点推进 ≤ LBTS | 节点推进 ≤ GALT(建议,不强制) |
| 因果保障 | 绝对保证(无回滚) | 通过回滚保障(可能频繁回滚) |
| 性能 | 较慢(受最慢节点限制) | 极快(尤其虚拟兵力多时) |
| 适用场景 | 实时仿真、有人在回路 | 大规模虚拟/构造兵力仿真 |
保守(LBTS):Lookahead 可以设大一些,允许虚拟节点稍快推进,但仍受全局限制。
乐观(GALT):虚拟节点可以大胆推进到 GALT,回滚代价低,但是实际上需要考虑存储快照信息。