MCM520 ← 资料站首页 搜寻潜水器(一):位置预测与不确定性量化模型 打开交互阅读器 →

搜寻潜水器(一):位置预测与不确定性量化模型

摘要

希腊 MCMS 公司拟用迷你潜艇带游客探索爱奥尼亚海(Ionian Sea)海底沉船,须建立一套安全程序以通过监管审批:当潜水器与主船失联、可能发生机械故障(含失去推进)时,必须能预测其随时间的位置并量化不确定性。本文以密度分层中性浮力 + 中尺度流场 + 海底地形为物理基础,构建确定性位置预测模型。关键结论:① 失联潜艇的归宿由平均密度决定——正浮力(ρ=1024 kg/m³)上浮至海面(z*=0 m),密度匹配(ρ=1026.2 kg/m³)悬停于中性浮力深度 z≈283.8 m*,负浮力(ρ=1029 kg/m³)沉至海床(本例 z≈2120 m);② 在表观流场(涡心 (15,−10) km、峰值 0.8 km/h 的中尺度涡 + 周期 12.4 h 的潮汐)驱动下,中性场景 6/12/24/48 h 漂移 1.06/3.81/7.48/14.23 km;③ 无上报时位置不确定性 R_unc 随流场估计偏差累积发散,中性场景 6/12/24 h 达 0.867/1.581/3.099 km,48 h 升至 6.47 km;④ 若装备周期声学上报,不确定性可在每次上报(每 2 h)后塌缩至 σ_ping=0.30 km。模型为后续"准备—搜寻—推断"三问提供可检验的位置与不确定度输入,全部数字在正文、配图、附录与工具四路严格一致。

一、问题重述

本题要求针对潜水器失联场景建立并检验位置预测模型,并回答四组问题:

  1. 定位 Locate:预测失联后潜水器的位置随时间变化,给出不确定性范围,并说明可向搜救提供哪些信息或设备以缩小不确定度;
  2. 准备 Prepare:主船应额外携带哪些搜寻设备,评估其成本;
  3. 搜寻 Search:给出初始部署点、搜寻样式,以及随时间累积的"找到"概率;
  4. 推断 Infer:将模型推广到加勒比海(更强海流、更深温跃层、更浅地形),并讨论多潜水器同区作业时的变化。

本篇聚焦第一问(定位):在物理机制上把"潜水器会停在哪里、漂向何方、误差有多大"说清楚,这是后三问可信的前提。

二、模型假设

  1. 失联瞬间位置近似等于主船部署点(东向、北向坐标为 0,深度 200 m),初始水平位置误差服从 σ₀=0.5 km 的高斯分布;
  2. 海水密度随深度按 tanh 温跃层过渡:ρ(z)=ρ_surf+(ρ_deep−ρ_surf)·½(1+tanh((z−Z_pyc)/D_z)),参数取 ρ_surf=1025、ρ_deep=1028、Z_pyc=300 m、D_z=80 m;
  3. 失联后浮力状态恒定:潜艇平均密度 ρ_s 决定其垂向归宿(上浮/中性悬停/沉底),中性场景悬停于中性浮力深度 z*=ρ⁻¹(ρ_s);
  4. 水平流场由中尺度涡(旋转、近中心最强)与潮汐(周期 12.4 h 振荡)叠加,且垂向按近底无滑边界 cos 衰减:表层流速强、近海床趋于零;
  5. 流场估计存在系统性偏差(每位集合成员携带一个恒定偏差,量级 CUR_BIAS=0.12 km/h),这是位置不确定性随时间发散的主因;
  6. 海底地形为确定性高斯海山/海沟叠加缓坡,沉底场景停驻于地形表面而非穿透。

三、符号说明

符号 含义
ρ(z) 深度 z 处海水密度 (kg/m³)
z* 中性浮力深度,ρ(z*)=ρ_s (m)
u,v 水平流速的东向、北向分量 (km/h)
Z0=200 m 失联时部署深度
R_unc(t) t 时刻位置散布标准差(不确定性半径,km)
σ_ping=0.30 km 单次声学上报后位置误差
PING_TAU=2 h 声学上报间隔
H_MAX=2500 m 本地最大水深

四、模型建立

4.1 密度分层与中性浮力深度

海水密度在温跃层(约 300 m)附近由 1025 迅速增至 1028 kg/m³。给定潜艇平均密度 ρ_s,反解 ρ(z*)=ρ_s 得中性浮力深度:

z∗=Zpyc+Dz⋅atanh ⁣(2ρs−ρsurfρdeep−ρsurf−1)z^* = Z_{pyc} + D_z\cdot \mathrm{atanh}\!\left(2\frac{\rho_s-\rho_{surf}}{\rho_{deep}-\rho_{surf}}-1\right)

代入三场景密度:正浮力 ρ=1024<ρ_surf ⇒ z*=0(上浮海面);密度匹配 ρ=1026.2 ⇒ *z*≈283.8 m**;负浮力 ρ=1029>ρ_deep ⇒ z=H_MAX=2500 m(沉底)。

4.2 流场构建

水平流速由中尺度涡与潮汐合成:涡在涡心 (15,−10) km 附近呈旋转结构、峰值 0.8 km/h;潮汐以振幅 0.3 km/h、角频率 ω=2π/12.4 h⁻¹ 振荡。垂向因子 f(z)=cos(½π·z/bathy) 使表层流速强、近底归零(无滑边界)。

上述流场分解兼顾了中尺度背景环流与天文潮两类真实主导因子:涡提供持续的大尺度输运,潮汐提供周期性的往复分量,二者叠加后失联点的漂流方向并非单调,而是随潮汐相位摆动着前进(见图3、图4)。垂向无滑边界来自海底粘性边界层——贴近海床的流速必须为零,否则违反无穿透条件;这一因子使“沉底”场景一旦触底便几乎不再水平移动,与“中性”“上浮”随流远漂形成鲜明对比。

4.3 三失效场景轨迹

  • 上浮 rise:正浮力,以 60 m/h 速率上浮至海面(z→0);
  • 中性 neutral:密度匹配,恒悬于 z*≈283.8 m,纯随流漂移;
  • 沉底 sink:负浮力,以 40 m/h 下沉,触及地形 z=bathy(x,y) 后停驻。

对每场景以步长 Δt=0.1 h 积分 48 h,得到 (t,x,y,z) 轨迹。

4.4 不确定性集合

以 n=400 个集合成员量化位置散布:每个成员从 σ₀=0.5 km 初始误差出发,并携带一个恒定的流场估计偏差 (Δu,Δv)∼N(0,CUR_BIAS²)。各成员独立积分后,在目标时刻取水平散布的均方根半径 R_unc(t)=√(Var/2)。取每位成员"恒定"偏差而非每步重采样,是为了让轨迹随时间真实发散——这正是失联后越拖越难找的物理本质。

五、模型求解(第一问:定位)

5.1 中性浮力深度与归宿分层

由 4.1 计算得 z*_rise=0 m、z*_neutral=283.8 m、z*_sink=2500 m,构成"海面—中层—海床"三层归宿,对应搜寻时的垂直分区策略。

5.2 漂移预测

中性场景在 48 h 内随流漂移:6 h 已离部署点 1.06 km,12 h 3.81 km,24 h 7.48 km,48 h 达 14.23 km(末态 z≈283.8 m)。上浮场景因全程在海面、受同样流场驱动,漂移略远(48 h 14.51 km,z=0);沉底场景下沉耗时、且停驻后不再随流(受地形阻挡),48 h 仅漂移 8.87 km(z≈2120 m)。

5.3 不确定性量化

无上报时 R_unc 随时间单调发散(图6):中性场景 1/3/6/12/24/48 h 分别为 0.51/0.62/0.87/1.58/3.10/6.47 km。若装备周期声学上报(每 2 h 一次),每次上报后位置被重新锚定,R_unc 塌缩至 σ_ping=0.30 km(图6、图8),把 24 h 的不确定度从 3.10 km 压到 0.30 km,缩小逾 10 倍。

六、结果分析与配图

图1 建模流程:从物理机制到位置预测与不确定性量化

图1 给出"密度·流场·地形 → 三场景轨迹 → 集合不确定性 → 上报降不确定 → 贝叶斯搜寻"的建模链路,定位是其中前两环。

图2 海水密度分层与中性浮力深度:潜艇密度匹配处即悬停层 (z*≈284 m)

图2 显示温跃层下方密度升至 1028,密度匹配潜艇悬停于 z*≈284 m 一层,这是中性场景"卡"在中层、搜寻须扫该深度的根本原因。

图3 失联深度 z=200 m 处表层流场速率 |u| (km/h):涡心附近最强

图3 的流场热力图表明,失联深度处的流速在涡心附近最大(约 0.8 km/h),向边缘衰减;位置预测对流场结构高度敏感。

图4 三场景水平漂移轨迹(失联后 0–48 h):上浮至海面、中性悬停随流、沉底停驻

图4 直观呈现三种归宿:上浮轨迹抵达海面后沿表面漂流,中性轨迹在中层划出大弧,沉底轨迹早早"钉"在海床。

图5 三场景漂移距离随时间(km):上浮/中性漂移最远,沉底最早停驻

图5 定量给出 6/12/24/48 h 的漂移距离,中性与上浮在 24 h 后均已漂移 7–8 km 量级,说明"失联当天即须动员"。

图6 位置不确定性 R_unc(t):随流场偏差累积发散,周期上报可塌缩到 σ_ping

图6 是定位问的核心:红实线(无上报)随时间发散,绿线(周期上报)在每次上报后回落到 0.30 km,凸显"能上报就能锁定"。

图7 海底地形 bathy(x,y) (m):海山抬升、海沟下陷,决定沉底停驻点

图7 的海底地形决定沉底场景的停驻点——潜艇并非沉到 2500 m 均匀平原,而是卡在海山/海沟起伏的某一深度(本例约 2120 m)。

图8 48 h 末位置(点)与水平不确定性半径 R_unc:沉底最聚集、中性最分散

图8 对比三场景末位散布:沉底最聚集(受地形约束),中性最分散(随流自由漂移且不确定度最大),直接提示搜寻难度的差异。

七、可上报信息 / 设备建议(回答第一问的"信息"部分)

由 5.3 可知,最廉价的"降不确定"手段是周期性声学上报:一旦潜水器能每 2 h 发出一次 ping(被动探测半径 3 km),R_unc 即被锚定在 0.30 km。

此外,深度遥测与声学上报可协同增效:上报锚定水平位置,深度遥测锚定垂直层位,二者共同把三维搜寻压成“点状”确认,是性价比最高的情报组合。监管审批时应将“潜水器须具备周期上报 + 深度回传能力”写入强制性安全规范,从源头把搜寻从“两天级”拉回“小时级”。配合 USBL 超短基线定位可进一步压低初始误差 σ₀。因此第一问建议:潜水器标配声学信标,并在可行时回传深度遥测(见第二篇的"深度情报价值")。

八、灵敏度分析

位置预测对流场强度极敏感。将中尺度涡峰值流速 E0 在 0.4–1.6 km/h 间扫描,中性场景 48 h 漂移近似线性增长(见图6 敏感性讨论与第三篇图6);而温跃层深度 Z_pyc 的改变会平移 z*,从而改变中性场景悬停层与流场垂向因子。这提示:部署前用 ADCP 实测流场、用 CTD 实测密度剖面,可显著降低预测偏差。

九、模型优缺点

优点:物理机制清晰(密度/流场/地形三要素),确定性可复现,集合方法自然给出不确定性半径,与后续贝叶斯搜寻直接衔接。缺点:流场用解析涡+潮汐近似,未接入真实再分析流场;未考虑潜艇自身动力残余机动;地形为合成高斯,未用真实海图。这些可在工程化版本中以实测数据替换。

在数值实现上,集合成员采用“每位成员恒定流场偏差”而非每步重采样,这是让不确定性真实发散的关键技巧;若每步重采样,成员误差会被随机抵消,R_unc 将长期保持平坦,严重低估实际搜寻难度。该设计已在附录工具中固化,保证正文、配图、附录与工具四路数字严格一致。

十、结论

第一问(定位)的答案是分层的:先由密度判定归宿(海面/中层/海床),再依流场积分得漂移轨迹,最后用集合量化 R_unc(t)。核心数字为中性场景 z*≈284 m、48 h 漂移 14.23 km、无上报 R_unc 达 6.47 km、周期上报可压至 0.30 km。这既给出了"潜水器最可能在哪里",也给出了"误差有多大、靠什么设备能缩小"——为第二至四问奠定了可检验的基础。

参考文献

[1] COMAP. 2024 MCM Problem B: Searching for Submersibles.
[2] Gill A. E. Atmosphere–Ocean Dynamics. Academic Press, 1982.
[3] Koopmans L. H. The Spectral Analysis of Time Series. 1995.
[4] 本模型配套真源 tools/gen_mcm2024b.py(确定性、SEED=2024)。

附录:核心 Python 实现(可独立运行复现上述数字)

import os, sys
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", "..", "tools"))
import gen_mcm2024b as G

D = G.gen_mcm2024b()
print("== 中性浮力深度 z* (m) ==")
print("rise/neutral/sink =", round(D["zstar_rise"], 2), round(D["zstar_neutral"], 2), round(D["zstar_sink"], 2))

print("\n== 三场景漂移距离 (km) @ 6/12/24/48h ==")
for sc in ("rise", "neutral", "sink"):
    d = D["drift_" + sc]
    print(sc, [round(d["dist_%.0f" % t], 2) for t in (6, 12, 24, 48)],
          "| z48=%.1f m" % d["z_48"])

print("\n== 无上报不确定性 R_unc(t) (km) @ 1/3/6/12/24/48h ==")
for sc in ("rise", "neutral", "sink"):
    R = D["R_noping"][sc]
    print(sc, [round(R[t], 3) for t in (1, 3, 6, 12, 24, 48)])

print("\n== 有周期上报 R_unc(t) neutral (km) ==")
Rw = D["R_with_ping"]
print([round(Rw["%.0f" % t], 3) for t in (1, 3, 6, 12, 24, 48)], "-> 塌缩至 sigma_ping=0.30 km")

print("\n== 第一问结论 ==")
print("中性场景: z*=%.2f m, 48h 漂移 %.2f km, 无上报 R_unc(48h)=%.2f km" %
      (D["zstar_neutral"], D["drift_neutral"]["dist_48"], D["R_noping"]["neutral"][48.0]))