KY-RTI分布仿真技术:第十二章 HLA联邦保存与恢复——仿真中的热恢复与冷恢复

📅 发布时间:2026/7/12 20:19:00
KY-RTI分布仿真技术:第十二章 HLA联邦保存与恢复——仿真中的热恢复与冷恢复 HLA联邦保存与恢复Save/Restore用于在仿真运行过程中保存整个联邦的状态并在随后的仿真运行中或仿真重启之后再恢复至之前保存点时刻的状态继续或重复试验对于长时仿真运维、故障与调试回滚、断点续跑、多样本重复仿真以及在线/离线模式下的试验恢复迭代有着非常重要的意义。一个缺乏标准Save/Restore能力的RTI则无法保证仿真状态的一致性回滚具有很大的局限性。本章介绍一个由大屏程序与多个卡车程序构成的物流仿真系统说明该系统如何基于KY-RTI实现的HLA联邦保存与恢复机制进行保存、热恢复和冷恢复功能。12.1 保存与恢复的重要性HLA联邦Save/Restore在仿真系统中发挥着非常重要的作用。KY-RTI遵循HLA规范完整地实现了该功能。本章在后面给出了一个基于KY-RTI保存与恢复机制的演示视频。下表是KY-RTI实现该机制后可在联合仿真中支撑的典型应用。应用领域含义与典型做法本演示断点续跑长时仿真运行至某一时刻进行联邦状态保存因计划停机、异常退出或资源调度中断后重新启动各仿真成员并恢复到之前的保存点(savepoint)接着推进无需从T0重新仿真。支持热恢复/冷恢复热恢复在线回滚各仿真成员在不退出/不重启的情形下将仿真回滚到之前的状态即所谓的在线回滚可用于在线调试和演示等快速从错误路径撤回。支持热恢复冷恢复离线回滚各仿真成员全部退出仿真后重新加入仿真,再将仿真回滚到之前的状态即所谓的离线回滚。适用于跨会话、换机器、在保存点之后新修改仿真成员程序后从已知状态起跑。支持冷恢复多样本 / 重复试验仿真蒙特卡洛Monte Carlo、批处理试验等场景多次恢复到一个保存点时的状态仅改变某仿真成员策略或随机种子后再次推进避免每次从 T0完整暖机。Save/Restore提供可重复的试验起点提高样本吞吐、保证初始条件一致。支持在仿真过程中可随时回滚至任何保存点在重启仿真成员后可回滚至任何保存点调试与故障恢复运行至可疑时刻前Save出现问题后Restore 复现现场或反复Restore定位缺陷。进程崩溃后若存在最近savepoint可通过冷恢复减少重算量。演示了运行时的热回滚方法以及重启仿真后的冷回滚方法多保存点/多配置管理以不同标签label保存不同阶段的联邦快照。恢复时选择对应label相当于在不同方案或不同进度之间切换。在本例中把label称之为保存点savepoint。演示了标签或保存点为savepoint1的两车仿真以及savepoint2的三车仿真长时仿真运维对运行数小时乃至数天的联邦在关键节点周期性Save形成保存点链结合断点续跑与故障恢复可有效降低单次失败的全局代价。演示时长虽短但原理与长时场景相同试验对比与复盘同一保存点恢复后可分别采用不同控制律或参数跑后续时段进而对比不同仿真结果或在复盘仿真时恢复至典型态势供分析汇报。支持热恢复/冷恢复 Web大屏可视化仿真如果一个RTI软件缺少HLA保存与恢复功能则会有很大的缺陷所有上述应用均难以实现——仿真程序退出即丢失联邦上下文无法精确回滚至中间时刻多样本试验只能反复初始化并从头仿真多个仿真成员中若只部分重启则易导致时间与对象不一致。因此HLA保存与恢复功能是联合仿真从“演示原型”走向“可运维、可重复试验”的最基础能力。12.1.1 Save/Restore协议内容在HLA标准中Save由一个仿真成员调用requestFederationSave(label)服务发起本例在大屏中用savepoint表示label各仿真成员在收到initiateFederateSave回调服务后即开始保存自己的状态本示例写入 JSON文件之后调用federateSaveComplete服务。RTI汇总后回调federationSaved服务成功或federationNotSaved服务失败。仅当收到 federationSaved回调服务后本次Save操作才视为有效各仿真成员可继续运行。Restore由一个仿真成员调用requestFederationRestore(label)服务发起各仿真成员在收到initiateFederateRestore回调服务后即开始恢复自己的状态之后调用 federateRestoreComplete服务。RTI汇总后回调federationRestored服务成功或federationNotRestored服务失败。仅当收到 federationRestored回调服务后本次Restore操作才视为有效各仿真成员可继续运行。12.1.1.1 Save接口类型名称方向语义服务requestFederationSave(label)仿真成员→RTI请求联邦保存回调initiateFederateSave(label)RTI→仿真成员通知进入保存流程服务federateSaveBegun / federateSaveComplete仿真成员→RTI本地开始保存/保存完成回调federationSaved / federationNotSavedRTI→仿真成员联邦保存成功/成败12.1.1.2 Restore接口类型名称方向语义服务requestFederationRestore(label)仿真成员→RTI请求联邦恢复回调initiateFederateRestore(label, handle)RTI→仿真成员通知进入恢复流程服务federateRestoreComplete仿真成员→RTI本地恢复完成回调federationRestored / federationNotRestoredRTI→仿真成员联邦恢复成功/成败12.1.2热恢复与冷恢复两种恢复路径热恢复与冷恢复的差异在于仿真成员进程是否连续运行。1热恢复——大屏与全部卡车保持运行。在启动卡车时不使用参数--wait-restore。2冷恢复——大屏与全部卡车CtrlC退出后重启先启动WebDashboard再带--wait-restore参数启动卡车。12.1.3多样本仿真与Save/Restore的关系多样本仿真要求能在相同联邦初始或中间状态上重复启动后续试验。保存时将该状态固化为savepoint每次恢复到同一起点仿真成员再注入不同样本参数或随机种子并推进即构成一个样本。本示例通过savepoint1两车与savepoint2三车来展示多保存点管理可通过批处理脚本文件很容易地改成多样本自动循环仿真“Restore → 改参数 → 跑N步 → 记录 → 再Restore”。12.2实战示例物流仿真本例是一个由大屏程序与卡车程序组成的简易物流仿真系统足以说明HLA保存与恢复功能。借鉴该仿真系统的设计思想用户可以编写形式多样的更复杂可回滚的仿真系统。如图12.1所示态势显示在浏览器中图中显示了2个卡车。图12.1 基于KY-RTI的物流仿真(1) 系统构成与仿真对象仿真成员包括Web态势大屏WebDashboard与若干物流卡车TruckDriver如Truck-1、Truck-2。卡车仿真成员向联邦注册 truck 对象发布里程、燃油、运行状态等属性并负责联邦时间推进大屏仿真成员订阅卡车属性在浏览器http://127.0.0.1:8767中显示态势并发起联邦保存与恢复请求。仿真场景为两个卡车从起点仓库至目的地仓库的干线运输线路总长3600km含耗油、停车加油等逻辑。当油量为0时卡车停留5秒加油之后再继续前进。(2) 浏览器主界面功能态势图标题栏显示系统名称及当前联邦仿真时间如 T200程序用Python语言编写。线路态势区在起终点之间展示3600km线路并按各车已行驶里程比例标绘Truck-1、Truck-2 的当前位置。车辆状态区每车一张状态卡含里程如2248.4km、燃油/货重如303/500 kg及运行状态如运输中。数据来自RTI属性反射随仿真推进实时更新。(3) 控制与日志区右侧栏联邦保存(SAVE)输入savepoint标签如 savepoint1点击“保存”按钮触发KY-RTI写入联邦保存文件各仿真成员同步写入本地JSON文件。联邦恢复(RESTORE)指定savepoint标签如 savepoint1点击“恢复”按钮将联邦时间、对象属性及应用变量等回滚至该savepoint处时的值支持热恢复程序不退出与冷恢复重启程序加--wait-restore参数后续跑。事件日志记录大屏上线、车辆发现、保存/恢复请求及结果等操作与HLA事件便于对照终端输出验证流程。12.3演示实验热恢复、冷恢复与多savepoint下面按照视频播放时间介绍整个仿真的启动和运行过程既有运行过程中的保存和恢复热恢复也有程序重启后的恢复冷恢复。整个过程大致为启动KY-RTI-启动大屏和2个卡车-保存(savepoint1)-热恢复-启动第3个卡车-保存(savepoint2)-热恢复重启大屏和2个卡车-冷恢复savepoint1时的仿真重启大屏和3个卡车-冷恢复savepoint2时的仿真。播放视频KY-RTI保存和恢复0:00 启动KY-RTI控制台0:05 启动大屏0:09 CSDN博客地址https://blog.csdn.net/sillysunny0:19 浏览器显示态势访问地址: http://127.0.0.1:87670:25 启动第1个卡车1:04 启动第2个卡车1:41 在大屏上点击“保存”按钮保存点时的标签label设置为savepoint1。KY-RTI和联邦成员都需要保存自己的状态因为之前已经操作过这里会弹出对话框问是否需要覆盖之前的保存内容。2:04 在大屏上点击“恢复”按钮仿真回滚到savepoint1处的状态2:16 启动第3个卡车2:47在大屏上点击“保存”按钮保存点时的标签label设置为savepoint23:16 在大屏上点击“恢复”按钮仿真回滚到savepoint2处的状态3:27 ctrl-c关掉大屏和3个卡车程序3:40 重启大屏3:51 重启第1个卡车3:58 重启第2个卡车4:18 在大屏上点击“恢复”按钮仿真回滚到savepoint1处的状态4:31 ctrl-c关掉大屏和2个卡车程序4:39 重启大屏4:43重启第1个卡车4:48 重启第2个卡车4:55 重启第3个卡车5:13 在大屏上点击“恢复”按钮仿真回滚到savepoint2处的状态5:38 卡车1燃油耗尽等5秒后燃油加满后继续前进12.4总结HLA联邦Save/Restore服务支撑断点续跑、热/冷恢复、多样本重复试验、调试回滚、多保存点管理与长时仿真运维等应用对联合仿真由“一次性运行”升级为“可保存、可回滚、可重复”具有重要意义。本文以物流联合仿真演示验证了KY-RTI仿真系统所具备的热恢复、冷恢复及 savepoint1/savepoint2等多保存点场景。KY-RTI的Linux、Windows版本和源码请联系作者:walt_lbq163.comKY-RTI分布仿真技术前 言KY-RTI分布仿真技术第一章 简介KY-RTI分布仿真技术第二章 系统安装KY-RTI分布仿真技术第三章 KY-OMT对象模型模板工具KY-RTI分布仿真技术第四章 C程序设计KY-RTI分布仿真技术第五章 Qt程序设计KY-RTI分布仿真技术第六章 Java程序设计KY-RTI分布仿真技术第七章 Visual C程序设计KY-RTI分布仿真技术第八章 Visual C#程序设计KY-RTI分布仿真技术第九章 综合演示KY-RTI分布仿真技术第十章 Python程序设计KY-RTI分布仿真技术第十一章 人工智能大模型仿真--低空无人机巡逻实战示例KY-RTI分布仿真技术第十二章 HLA联邦保存与恢复--仿真中的热恢复与冷恢复KY-RTI分布仿真技术附录1 分组聊天HLA数据分发管理的应用KY-RTI分布仿真技术附录2 大联邦构建1000个成员的HLA/RTI仿真系统KY-RTI分布仿真技术附录3 国产化操作系统CPUs