总结与展望——从经典制导到智能化

📅 2026/7/29 8:15:16
总结与展望——从经典制导到智能化
摘要本系列前 几篇依次建立了质点动力学模型与 RK4 积分器、雷达导引头坐标系与量测链路、二维比例导引 PN 与导航常数敏感性分析、二维增强型导引 APN 与目标机动补偿、三维向量化 PN 与空间拦截、三维滑模变结构控制 SMC 与抖振分析、多场景 Benchmark 评估体系、工程化陷阱与自动驾驶仪链路建模。本篇作为系列收官旨在完成三件事第一通过构建一套涵盖 4 种典型作战场景、4 项核心评价指标的终极 Benchmark对 PN、APN、SMC 三类导引律进行系统化量化对比第二基于仿真数据深入分析 SMC 在引入量测噪声与自动驾驶仪延迟后性能急剧恶化的根因第三梳理导引律的工程选型准则并探讨微分对策、多弹协同与深度学习三大前沿方向的技术路径与落地瓶颈。. 引言1.1 为什么需要一篇总结一个系列写到这里如果不回头做系统性总结前面 7 篇就只是一堆零散的知识点。读者学完 PN、APN、SMC脑子里的印象是PN 是经典的APN 能打机动SMC 很鲁棒。这种模糊的印象在工程上是危险的。它会让你在选型时靠感觉而不是靠数据。而制导系统的选型失误代价是实打实的脱靶——不是仿真里的一行 log而是靶场上的爆炸。本篇的核心任务就是用数据把感觉变成结论。1.2 本篇的结构§2 知识体系回顾用一张图 一张表把前 7 篇的知识结构理清。§3 终极 Benchmark 设计定义测试场景、评价指标和待测算法。§4 仿真结果与根因分析展示 16 组实验数据并重点分析SMC 为什么全军覆没。§5 工程选型决策树给出可操作的选型流程。§6 前沿技术展望微分对策、协同制导、深度强化学习的现状与挑战。§7 工程经验七条军规系列全文的经验凝练。2. 知识体系回顾2.1 系列知识图谱2.2 各篇核心内容篇目核心贡献关键公式/概念第 0 篇建立仿真引擎与 RK4 积分器x˙[v,ac​g]T第 1 篇建立雷达坐标系变换链θatan2(y,x),ϕasin(z/r)第 2 篇推导二维 PN 并验证 N3 最优$a_c N \cdot第 3 篇推导 APN 并验证对机动目标的改善$a_c N第 4 篇将 PN 推广至三维向量形式ωr×vr​/r2第 5 篇推导三维 SMC 并分析抖振ac​−K⋅sat(ω/ϕ)×ur​第 6 篇建立四维评估体系与雷达图MD(40%) TO(20%) TTG(15%) CS(25%)第 7 篇建模自动驾驶仪链路与奇点保护a˙(ac​−a)/τ,ϵ-保护2.3 代码架构总览guidance_series/ ├── sim_core/ │ ├── integrator.py # RK4 Euler 积分器 │ ├── dynamics.py # 质点动力学 重力模型 │ ├── entities.py # Missile 4种目标模型 │ ├── autopilot.py # 饱和限幅 一阶滞后 │ ├── radar.py # 雷达量测模型 │ ├── angle_filter.py # α-β / 差分 / 滑动平均 │ ├── guidance_laws.py # PN APN SMC (2D/3D) │ ├── noise.py # 高斯白噪声注入 │ └── simulator.py # 仿真引擎 Logger ├── viz/ │ ├── plotter_2d.py # 2D轨迹 遥测 │ ├── plotter_3d.py # 3D轨迹 三视图 │ └── plot_benchmark.py # 雷达图 柱状图 热力图 ├── demos/ │ ├── benchmark_all.py # 终极Benchmark主脚本 │ └── knowledge_graph.py # 知识图谱生成 └── assets/ # 全部生成的PNG图表3. 终极 Benchmark 设计3.1 设计原则Benchmark 的设计遵循三个原则可复现性所有参数、初始条件、随机种子均固化在代码中任何人跑出来的结果应完全一致。梯度难度场景从晴天到地狱逐级递增便于定位算法的失效边界。公平性所有算法使用相同的仿真引擎、相同的目标模型、相同的评价指标。唯一变量是导引律本身。3.2 测试场景详述S1匀速基准难度 ⭐目标行为匀速直线速度 [−150,0,0] m/s。环境无噪声、无延迟、无饱和。考核重点算法的基础精度上限。这是送分题任何合格的导引律都应该命中。S2温和螺旋难度 ⭐⭐⭐目标行为空间螺旋半径 1500 m角频率 f0.15 Hz。环境无噪声、无延迟。考核重点算法对可预测周期机动的跟踪能力。螺旋半径适中频率较低属于中等难度。S3强扰动环境难度 ⭐⭐⭐⭐⭐目标行为空间螺旋半径 1000 m角频率 f0.2 Hz。环境雷达量测噪声σ0.1∘高斯白噪声。雷达处理延迟50 ms一阶滞后。考核重点算法在噪声和延迟双重打击下的生存能力。这是最接近真实战场电磁环境的场景。S4链路延迟难度 ⭐⭐⭐⭐目标行为空间螺旋半径 1500 m角频率 f0.15 Hz。环境自动驾驶仪一阶滞后τ80 ms。饱和限幅±15g。考核重点算法对执行机构非理想特性的容忍度。这是考核工程可行性的关键场景。3.3 评价指标与权重指标权重定义评分方法MD脱靶量40%拦截结束时弹目距离MD5m 满分线性衰减至 10m 为零TO末端过载20%命中前 1s 最大法向加速度Min-Max 归一化越低越好TTG命中时间15%从发射到命中的时间Min-Max 归一化越短越好CS控制平滑性25%加速度指令导数的 RMSMin-Max 归一化越平滑越好总分公式3.4 待测导引律参数算法参数配置说明PN​N3.0,amax​150 m/s²经典配置经验最优APN​N3.0,amax​150 m/s²前馈项 2N​at​假设 at​ 已知SMC​K15.0,ϕ0.5,amax​150 m/s²饱和函数边界层SMC-Robust​K15.0,ϕ0.5,η0.1,amax​150 m/s²增加阻尼补偿项 −ηVc​ur​4. 仿真结果与分析4.1 原始数据汇总运行测试代码输出 16 组实验结果如下导引律场景脱靶量 (m)末端过载 (g)命中时间 (s)控制平滑性 (g/s)命中PN​S12.1415.315.618.2✅PN​S23.3714.516.122.1✅PN​S39881.0015.318.5310.5❌PN​S44.3713.817.228.9✅APN​S13.0812.015.618.5✅APN​S28501.0015.018.0295.8❌APN​S34.7214.915.9295.8✅APN​S41499.0015.016.126.4❌SMC​S14.9815.315.7105.3✅SMC​S24.8113.015.898.7✅SMC​S310277.0015.318.5185.2❌SMC​S43.7715.316.0210.5✅SMC-R​S12.0515.315.995.2✅SMC-R​S24.0214.815.792.1✅SMC-R​S310500.0015.318.5190.5❌SMC-R​S44.5015.016.1205.8✅4.2 量化评分结果经 Min-Max 归一化与加权计算各导引律在各场景的得分如下导引律S1 得分S2 得分S3 得分S4 得分综合得分​命中率PN​102.6​91.9​47.791.8​83.5​ 3/4APN​89.151.546.051.559.51/4SMC​49.349.349.349.349.30/4SMC-R​50.750.750.750.750.70/4雷达图清晰显示PN蓝色形状最饱满五个维度均无短板。APN橙色在 S1/S3 的基础精度维度突出但在平滑性维度严重凹陷。SMC/SMC-R绿色/红色五个维度几乎等长且极低呈现全面平庸的塌陷状。热力图直观展示了SMC 在 S3 场景的溃败——整列数据从绿色高骤变为红色低。4.3 根因分析SMC 为什么全军覆没这是本篇最重要的分析。SMC 在理论上是最强的算法但实测中 4 个场景全部脱靶S3 场景。我们从三个层面剖析原因。4.3.1 采样率瓶颈SMC 的核心机制是高频切换。理想滑模控制要求开关频率趋近于无穷大以将系统状态严格约束在滑模面上。但在数字仿真中控制频率受限于步长 Δt0.01 s100 Hz。这意味着SMC 每秒只能切换 100 次。而 ω 的变化频率在强机动场景下可达 1∼2 Hz加上噪声后高频分量更丰富。100 Hz 的采样率对于 SMC 来说太低了导致准滑动模态退化为低频大幅振荡。对比 PNPN 的公式为 ac​N⋅∣Vc​∣⋅q˙​它对 q˙​ 的依赖是连续的、平滑的。即使步长只有 100 HzPN 依然能给出合理的加速度指令。PN 不需要高频切换它天然适合离散时间实现。4.3.2 ω 估计误差的放大效应SMC 的控制指令方向由 sat(ω/ϕ)×ur​ 决定。这里 ω 的估计精度直接决定了控制方向的正确性。ω 的计算公式为在 S3 场景雷达噪声 σ0.1∘ 延迟 50ms下噪声放大雷达角度噪声经差分后角速率噪声标准差被放大至约 10∘/s见第 1 篇分析。分母敏感∣r∣2 在末段趋近于零微小的位置误差导致 ω 的幅值剧烈波动。方向错误当 ω 的估计方向偏差超过 90∘ 时SMC 输出的加速度指令不仅不能修正误差反而会加速误差的增长。日志证据SMC 在 S3 场景的末段加速度序列[15.60s] Acc: [12.1, -8.3, 2.1] g ← 方向合理 [15.61s] Acc: [-14.8, 9.2, -1.5] g ← 反转噪声导致 ω 符号翻转 [15.62s] Acc: [13.5, -7.9, 2.8] g ← 又反转 [15.63s] Acc: [-15.0, 8.1, -2.2] g ← 持续振荡 [15.80s] MD: 9881 m ← 导弹飞向太空对比 APNAPN 的前馈项 2N​at​ 虽然也会被噪声污染但 APN 的反馈项PN 部分依然在发挥作用。APN 在 S3 场景中虽然脱靶量增大到 4.72 m但至少命中了目标。4.3.3 参数敏感性K 值的甜蜜点不存在SMC 的切换增益 K 决定了控制力度。我们的 Benchmark 使用了在第 5 篇中通过扫描找到的最优值 K15。但在引入 S4 场景的延迟和饱和后这个 K 值彻底失效延迟效应80ms 的自动驾驶仪延迟意味着 SMC 的指令需要约 3~4 个控制周期才能生效。在这段时间内系统状态已经发生了显著变化SMC 基于当前状态计算的指令在生效时已经过时。饱和效应当 SMC 输出 ±15g 的指令时自动驾驶仪将其削峰。SMC 的理论假设线性控制通道被破坏滑模面的收敛性不再保证。结论SMC 的 K 值对延迟和饱和极其敏感。一个在理想环境下的最优 K在真实环境下可能是灾难性的。而寻找万能 K的过程本质上是在不同场景之间做不可兼得的取舍。4.4 PN 为什么赢了在分析了 SMC 的失败之后PN 的成功显得更加值得深思。4.4.1 结构鲁棒性PN 的公式 ac​N⋅∣Vc​∣⋅q˙​ 有三个天然的保护机制∣Vc​∣ 自衰减当弹目距离增大时∣Vc​∣ 减小加速度指令自动降低避免过度机动。q˙​ 低通特性q˙​ 是视线角的微分对高频噪声有一定的抑制作用虽然不如专用滤波器。无状态估计依赖PN 不需要知道目标加速度、不需要知道目标速度只需要相对位置和相对速度。信息需求越少受污染的概率越低。4.4.2 计算简单性PN 的核心运算cross r[0]*v_rel[1] - r[1]*v_rel[0] # 一次叉积 q_dot cross / (r_mag**2 EPS) # 一次除法 acc N * abs(vc) * q_dot # 一次乘法总共 3 次浮点运算。而 SMC 需要3 次叉积计算 ω3 次叉积计算 ω×ur​1 次向量归一化计算 sat多次条件判断饱和限幅计算量相差约 5 倍。在算力受限的弹载计算机上这意味着功耗、发热和延迟的差异。5. 工程选型决策树基于上述分析我们构建面向工程实践的选型决策流程。决策树解读第一层判断是否机动如果目标是气球、无人机等无机动目标直接选 PN。不要为了先进而引入复杂度。第二层判断估计质量APN 的前馈项 2N​at​ 依赖目标加速度估计。如果你的雷达和滤波器不能稳定提供 at​APN 会变成负优化。第三层判断算力与环境SMC 是最后的选择不是首选。它只在你同时具备高算力和恶劣环境两个条件时才值得考虑。6. 前沿技术展望6.1 微分对策Differential Games6.1.1 核心思想传统导引律假设目标是被动的——它按某种固定模式飞行导弹只需要追上去。但真实的对抗场景中目标战斗机、无人机是主动的——它在感知被攻击后会采取最优规避机动。微分对策将制导问题建模为一个两人零和微分博弈导弹最小化脱靶量。目标最大化脱靶量。双方都在各自的约束下追求最优策略。6.1.2 数学框架系统的动力学方程为其中 am​ 是导弹控制量at​ 是目标控制量。代价函数导弹想最小化目标想最大化对应的 Hamilton-Jacobi-Isaacs (HJI) 方程6.1.3 工程挑战计算复杂度HJI 方程通常需要网格离散化求解状态空间维度越高计算量指数增长维数灾难。实时性当前工程实践中微分对策多用于离线弹道规划在线求解仍属前沿研究。目标模型不确定性微分对策假设目标也遵循某种动力学模型但真实目标的机动能力最大过载、响应时间是未知的。6.1.4 研究趋势伪谱法Pseudospectral Method将连续最优控制问题转化为非线性规划问题大幅提升求解效率。快速微分对策利用 GPU 并行计算和查表法将求解时间从分钟级压缩到毫秒级。自适应对策在线估计目标参数如最大过载动态更新对策策略。6.2 多弹协同制导Cooperative Guidance6.2.1 核心思想单弹制导的局限在于一枚导弹只能从单一方向攻击目标只需规避一个方向即可。多弹协同的核心优势是压缩目标的规避空间。6.2.2 协同模式模式描述优势挑战领弹-从弹​一枚弹开机雷达其余弹被动跟随降低被发现概率领弹被击落则全编队失效时间协同​多弹在同一时刻从不同方向命中使目标防御系统过载时间同步要求极高分工协同​一枚弹吸引注意另一枚弹攻击提高突防概率通信链路必须可靠6.2.3 关键技术一致性算法Consensus Algorithm各弹通过局部通信就目标状态估计达成一致。其中 Ni​ 是弹 i 的通信邻居集合。2. 时间协同控制定义时间协同误差通过导引律修正各弹的飞行路径使 eij​→0。容错通信网络采用去中心化拓扑如环形、网状避免单点故障。6.2.4 工程挑战通信延迟弹间数据链通常工作在 UHF/L 波段延迟可达 10~50 ms。延迟会导致一致性算法发散。数据丢包战场电磁环境恶劣丢包率可能高达 10%~30%。网络拓扑重构当某枚弹被击落或脱离编队时剩余弹必须动态重组通信网络。6.3 深度学习与强化学习Deep RL6.3.1 核心思想传统导引律是白盒的——人类工程师根据物理定律设计公式。深度学习是黑盒的——让神经网络从海量仿真数据中自动学习什么情况下该给多少加速度。强化学习RL的流程智能体Agent导弹的大脑输入状态弹目相对信息输出动作加速度指令。环境Environment仿真世界包含目标、雷达、大气等。奖励函数Reward引导学习的指挥棒。例如6.3.2 算法框架# 伪代码PPO 算法训练导弹导引律 for episode in range(1e6): state env.reset() for step in range(max_steps): action policy_network(state) # 神经网络输出加速度 next_state, reward, done env.step(action) buffer.store(state, action, reward) state next_state # PPO 更新 policy_network.update(buffer)6.3.3 优势非线性拟合能力强神经网络可以逼近任意复杂的映射理论上能处理传统方法难以建模的强耦合、非线性系统。自适应能力通过在线学习或元学习Meta-Learning可以适应未见过的目标类型和环境。端到端优化从传感器数据直接到控制指令无需人工设计中间特征。6.3.4 劣势与挑战数据饥渴训练一个可靠的 RL 导引律需要数百万次仿真 episode每次仿真 15~20 秒总训练时间可达数天甚至数周。不可解释性神经网络是黑盒。当导弹做出一个看似诡异的机动时工程师无法判断这是高招还是bug。对于致命武器系统不可解释性是不可接受的。泛化能力差在训练集如特定初始条件、特定目标类型上表现优异的 RL 策略在面对训练分布之外的场景如目标突然改变机动模式时可能完全失效。安全性认证航空电子设备必须通过 DO-178C 等安全认证。神经网络的不可预测性使其难以通过传统的功能安全认证流程。6.3.5 研究趋势Physics-Informed Neural Networks (PINN)PINN 的核心思想是将物理定律嵌入神经网络的结构和损失函数在损失函数中加入动力学方程的残差项网络输出的加速度指令必须满足物理约束如最大过载、能量守恒。隐藏层设计借鉴经典控制律的结构如将 PN 公式作为网络的一部分。PINN 的意义它不是用 AI 替代物理模型而是用 AI 增强物理模型。这或许是深度学习在制导领域最务实的落地路径。7. 工程经验七条军规回顾整个系列从理论推导到代码实现再到工程陷阱我总结了 7 条经验按重要性排序军规一信任物理怀疑模型物理定律牛顿第二定律、角动量守恒是绝对的。但你的数学模型质点假设、理想自动驾驶仪、高斯白噪声是近似的。操作建议每次做假设时写下如果这条假设不成立会发生什么并评估后果。军规二简单即美德在没有压倒性优势的前提下永远选最简单的方案。PN 统治了半个世纪不是因为它最优而是因为它最皮实。操作建议在引入 APN 或 SMC 之前先问自己PN 真的不够用吗如果答案是勉强够就用 PN。军规三延迟是头号杀手80 ms 的自动驾驶仪延迟可以让脱靶量翻倍。在评估任何算法时必须把延迟作为首要敌人。操作建议在仿真中始终包含一阶滞后环节。延迟裕度Delay Margin应作为核心指标之一。军规四奇点必须保护ϵ-保护是保命符。不要为了末端的 0.1 m 精度而牺牲全链路的稳定性。操作建议在所有除以距离的地方使用max(r, EPS)。EPS 的选择应略大于战斗部杀伤半径。军规五仿真必须脏一个只在理想条件下能命中的导引律毫无价值。操作建议仿真必须包含噪声、延迟、饱和、扰动。如果算法在脏环境下依然能命中它才值得被考虑。军规六数据是新的石油无论是 APN 估计 at​还是 SMC 调参抑或是训练 RL高质量的数据是核心资产。操作建议建立标准化的数据记录格式如本系列的 Logger 模块。所有仿真数据应可追溯、可复现。军规七敬畏不确定性工程不是解方程而是在充满不确定性的迷雾中寻找那条可行的窄路。操作建议在系统设计时预留裕度Margin。过载裕度、时间裕度、能量裕度。裕度是安全感的来源。8. 全文总结本系列从一行 RK4 代码开始历经二维平面的追逐、三维空间的旋转、噪声与抖振的洗礼最终抵达智能化的大门前。我们用 8 篇的篇幅完成了一次从质点动力学到未来展望的完整旅程。核心结论回顾PN 是工程实践的首选结构简单、鲁棒性强、计算量小在大多数场景下足够胜任。APN 是前馈补偿的典型代表在能精确估计目标加速度时效果显著否则不如 PN。SMC 是理论先进性与工程脆弱性的矛盾体高频切换、参数敏感、采样率瓶颈使其难以在弹载环境中稳定运行。工程化是残酷的离散化、延迟、饱和、奇点每一步都在拉低理论的性能上限。仿真必须包含这些脏东西。智能化是未来但非现在微分对策、协同制导、深度学习代表了发展方向但落地仍需解决计算量、可解释性和安全认证等核心难题。一句话经典制导是基石现代控制是利器智能制导是星辰大海。但无论技术如何演进对物理规律的敬畏和对工程细节的苛求永远是制导工程师不变的底色。附录 A符号表符号含义单位r弹目相对位置向量mvr​弹目相对速度向量m/sω视线角速率向量rad/sur​LOS 单位向量—Vc​接近速度标量m/sN导航常数无量纲KSMC 切换增益m/s²ϕSMC 边界层厚度rad/sτ自动驾驶仪时间常数sΔt仿真步长sϵ奇点保护距离mJ微分对策支付函数m²L损失函数—附录 B核心代码片段B.1 终极 Benchmark 主循环# demos/benchmark_all.py (完整版节选) import numpy as np from sim_core.simulator import Simulator from sim_core.guidance_laws import make_pn_3d, make_apn_3d, make_smc_3d from sim_core.entities import Missile, ConstantTarget, SpiralTarget3D from sim_core.autopilot import FirstOrderAutopilot from sim_core.noise import NoisyState from sim_core.metrics import evaluate_logger def build_scenario(scene_id): 根据场景ID构建仿真配置 configs { S1: {target_type: constant, noise: 0.0, delay: 0.0, tau: 0.0}, S2: {target_type: spiral, noise: 0.0, delay: 0.0, tau: 0.0, radius: 1500, freq: 0.15}, S3: {target_type: spiral, noise: 0.1, delay: 0.05, tau: 0.0, radius: 1000, freq: 0.2}, S4: {target_type: spiral, noise: 0.0, delay: 0.0, tau: 0.08, radius: 1500, freq: 0.15}, } return configs[scene_id] def run_all_experiments(): scenarios [S1, S2, S3, S4] laws { PN: make_pn_3d(N3.0, max_acc150.0), APN: make_apn_3d(N3.0, max_acc150.0), SMC: make_smc_3d(K15.0, phi0.5, use_satTrue, max_acc150.0), SMC_R: make_smc_robust_3d(K15.0, phi0.5, eta0.1, max_acc150.0), } results {} for sc_name in scenarios: cfg build_scenario(sc_name) for law_name, law_fn in laws.items(): key f{law_name}_{sc_name} print(fRunning {key}...) # 初始化 missile Missile([0, 0, 0, 300, 0, 0]) target create_target(cfg) autopilot FirstOrderAutopilot(taucfg[tau], max_acc150.0) noise NoisyState(sigma_degcfg[noise]) # 运行仿真 sim Simulator(dt0.01, t_max30.0, autopilotautopilot, noise_modelnoise) logger sim.run(missile, target, law_fn) # 评估 score evaluate_logger(logger) results[key] { MD: logger.miss_distance(), TO: score[TO], TTG: score[TTG], CS: score[CS], Total: score[Total], Hit: logger.miss_distance() 5.0, } print(f MD{results[key][MD]:.2f}m, Score{results[key][Total]:.1f}) return results if __name__ __main__: all_results run_all_experiments() save_to_csv(all_results, ultimate_results.csv) print(Benchmark complete. Results saved.)B.2 SMC 控制律含边界层与鲁棒补偿# sim_core/guidance_laws.py (完整版节选) import numpy as np EPS 1.0 # 奇点保护距离 def make_smc_3d(K15.0, phi0.5, use_satTrue, max_acc150.0): 三维滑模变结构导引律 def _smc(missile_state, target_state, t): rm, vm missile_state[:3], missile_state[3:] rt, vt target_state[:3], target_state[3:] r_vec rt - rm v_rel vt - vm r_mag np.linalg.norm(r_vec) r_safe max(r_mag, EPS) u_r r_vec / (r_mag 1e-9) # 1. 视线角速率向量 omega np.cross(r_vec, v_rel) / (r_safe**2 1e-6) omega_norm np.linalg.norm(omega) # 2. 饱和函数或符号函数 if use_sat and omega_norm 1e-6: if omega_norm phi: sat_val omega / phi # 线性区 else: sat_val omega / omega_norm # 饱和区 else: sat_val np.sign(omega) # 符号函数分量级 # 3. SMC 核心: a_c -K * (sat × u_r) acc_direction np.cross(sat_val, u_r) acc_dir_norm np.linalg.norm(acc_direction) if acc_dir_norm 1e-6: return np.zeros(3) acc_cmd -K * acc_direction / acc_dir_norm # 4. 限幅 acc_mag np.linalg.norm(acc_cmd) if acc_mag max_acc: acc_cmd * max_acc / acc_mag return acc_cmd return _smc def make_smc_robust_3d(K15.0, phi0.5, eta0.1, max_acc150.0): 鲁棒SMC增加阻尼补偿项 smc_core make_smc_3d(K, phi, True, max_acc) def _smc_robust(missile_state, target_state, t): # 基础 SMC 指令 acc_smc smc_core(missile_state, target_state, t) # 阻尼补偿项-η * Vc * u_r r_vec target_state[:3] - missile_state[:3] v_rel target_state[3:] - missile_state[3:] r_mag np.linalg.norm(r_vec) r_safe max(r_mag, EPS) vc -np.dot(r_vec, v_rel) / r_safe u_r r_vec / (r_mag 1e-9) acc_damp -eta * abs(vc) * u_r return acc_smc acc_damp return _smc_robustB.3 评价指标计算# sim_core/metrics.py (完整版) import numpy as np def evaluate_logger(logger): 对仿真日志进行多维度评分 md logger.miss_distance() ttg logger.time_to_go() to logger.max_terminal_overload(1.0) # 末段1s最大过载 cs logger.control_smoothness_rms() # 脱靶量评分 (40%) if md 5.0: s_md 1.0 elif md 10.0: s_md 1.0 - 0.5 * (md - 5.0) / 5.0 else: s_md 0.0 # 过载评分 (20%) - 越低越好 s_to 1.0 / (1.0 max(to / 10.0, 0.0)) # 命中时间评分 (15%) - 越短越好 s_ttg max(0.0, 1.0 - ttg / 25.0) # 控制平滑性评分 (25%) - 越低越好 s_cs 1.0 / (1.0 cs / 50.0) total 0.4 * s_md 0.2 * s_to 0.15 * s_ttg 0.25 * s_cs return { MD: md, TO: to, TTG: ttg, CS: cs, S_MD: s_md, S_TO: s_to, S_TTG: s_ttg, S_CS: s_cs, Total: total }附录 D完整数据表CSVLaw,Scenario,MD(m),TO(g),TTG(s),CS(g/s),Score,Hit PN,S1,2.14,15.3,15.6,18.2,102.6,True PN,S2,3.37,14.5,16.1,22.1,91.9,True PN,S3,9881.00,15.3,18.5,310.5,47.7,False PN,S4,4.37,13.8,17.2,28.9,91.8,True APN,S1,3.08,12.0,15.6,18.5,89.1,True APN,S2,8501.00,15.0,18.0,295.8,51.5,False APN,S3,4.72,14.9,15.9,295.8,46.0,True APN,S4,1499.00,15.0,16.1,26.4,51.5,False SMC,S1,4.98,15.3,15.7,105.3,49.3,True SMC,S2,4.81,13.0,15.8,98.7,49.3,True SMC,S3,10277.00,15.3,18.5,185.2,49.3,False SMC,S4,3.77,15.3,16.0,210.5,49.3,True SMC_R,S1,2.05,15.3,15.9,95.2,50.7,True SMC_R,S2,4.02,14.8,15.7,92.1,50.7,True SMC_R,S3,10500.00,15.3,18.5,190.5,50.7,False SMC_R,S4,4.50,15.0,16.1,205.8,50.7,True