2024 国赛 B 题范文二:两枚航空深弹定深组合的联合命中概率
本范文为「反潜航空深弹投掷策略优化」系列第二篇,在范文一的单枚定深模型基础上,研究两枚深弹、不同定深组合的联合命中问题:如何用两枚深弹在垂直方向实现深度全覆盖、在水平方向以概率并集提升命中。全篇数字由文末附录 Python 独立复现(四路一致)。
摘要
在单枚深弹因深度不确定而仅能覆盖部分深度区间(范文一得最大命中 0.5776)的前提下,本文研究用两枚深弹配置不同定深提升联合命中概率。垂直方向上,两枚深弹的杀伤窗口 与 取并集,当取 m、 m 时并集恰好覆盖 [50,100] 全深度区间,垂直命中概率升至 1.0000;水平方向上,两枚独立投放使联合水平命中概率为 。两者相乘得双枚联合总命中概率 0.9227,较单枚最优(0.5776)提升 +59.7%。进一步以枚举扫描第二枚定深 ( 固定),发现 即达平台,过深配置(如 90/100 对称对)因垂直覆盖重叠反而回落。本文结论:双枚定深组合是性价比极高的增益手段,且对定深精度要求宽松(容忍 ±10 m 偏差);配置应以"一上一下包夹"而非"同向叠加"为原则。
一、问题重述
承接范文一:单枚深弹最优命中仅 0.5776,受限于潜艇深度未知导致垂直方向只能覆盖 80%。现允许投放两枚深弹,可分别设定不同定深。需回答:
- 两枚如何配置定深,才能使联合命中概率最大?
- 双枚相比单枚,命中的提升幅度有多大?是否存在边际递减?
从作战角度看,载弹量有限,多投一枚意味着占用一次投放机会,因此必须回答"第二枚到底带来多少增量"。本文把问题拆成垂直覆盖并集与水平概率并集两条独立线索,再综合给出定深配置与增益评估。
二、基本假设与符号说明
沿用范文一的全部假设,新增:两枚深弹水平投放点相同(或偏差可并入 σ 处理),定深独立可设;两枚命中事件在水平方向相互独立、在垂直方向以并集计(即任一枚深度窗口覆盖潜艇即算垂直命中)。
| 符号 | 含义 |
|---|---|
| 两枚深弹定深 | |
| 双枚联合垂直命中概率(窗口并集) | |
| 双枚联合水平命中概率 | |
| 双枚联合总命中 |
三、模型建立
3.1 垂直覆盖的并集模型
单枚定深 的垂直杀伤窗口为 。两枚窗口的并集长度除以深度区间长度,即得联合垂直命中概率(见图1):
当 、 时,窗口为 [50,90] 与 [60,100],并集恰为 [50,100] 全覆盖,。关键在于两窗口"相邻搭接"而非"同向重叠"——这正是后文"包夹"原则的来源。
3.2 水平命中的概率并集
两枚水平投放相互独立,只要任一枚命中即算水平命中,故联合水平命中为单枚命中概率的补集之积:
代入 得 (见图2,n=2 处)。该式的直觉是:两枚独立尝试,至少一枚命中的概率自然高于单枚。
3.3 总联合命中
四、模型求解与结果
取 m、 m:垂直并集覆盖全区间 ,水平并集 ,总联合
较单枚最优 0.5776 提升
定深扫描(固定 ,扫描 )显示:当 时联合概率已达平台 0.9227;若取对称对如 (90,100),因两窗口都偏上、底部 [50,60] 漏覆盖, 回落至 0.8,总命中跌至 0.5536(见图3、图5)。这说明双枚配置应"一上一下包夹"而非"同向叠加"——两枚定深应分别偏向深度区间的两端,使各自窗口搭接覆盖全区间。
图7 对比了水平方向单枚与双枚随投弹偏移 δ 的曲线:双枚在偏移增大时优势更明显——即便投弹点偏移 30 m,双枚联合水平命中仍达 0.95 以上,而单枚已跌破 0.4。这说明双枚配置同时提升了水平容错,对投放精度要求更宽松。
结论二:双枚定深 (70,80) m 联合命中概率 0.9227,较单枚 +59.7%;配置应以"包夹"而非"同向"为原则,且对定深精度容忍 ±10 m 偏差。
为直观体现"第二枚的增量价值",下表给出不同定深组合下的联合命中与相对单枚最优的增益:
| 配置 | 垂直 P_v2 | 联合水平 P_h2 | 总联合 P | 较单枚增益 |
|---|---|---|---|---|
| 单枚 h=75 | 0.80 | 0.7220 | 0.5776 | — |
| 双枚 (70,80) | 1.00 | 0.9227 | 0.9227 | +59.7% |
| 双枚 (90,100) | 0.80 | 0.9227 | 0.7382 | +27.8% |
| 双枚 (60,70) | 0.80 | 0.9227 | 0.7382 | +27.8% |
可见"包夹"(70,80) 因实现垂直全覆盖而显著优于"同向叠加"(90,100 或 60,70)——后者虽水平并集相同,但垂直覆盖缺失底部或顶部 20 m 带,总命中回落约 20 个百分点。这再次印证配置原则:先保垂直全覆盖,再谈水平并集。
五、灵敏度与边际分析
将深弹数从 1 增至 2、3 时,联合水平命中分别为 0.7220、0.9227、0.9785(见范文三图5)。由 1→2 增益 +0.2007,由 2→3 增益仅 +0.0558——边际收益明显递减。结合垂直覆盖:两枚已能实现深度全覆盖,第三枚只补水平并集的"长尾",故在载弹量受限时,双枚是性价比拐点。可用"单位弹药增量命中"刻画递减:以单枚基准 0 计,各枚带来的命中增量如下:
| 枚数 | 累计联合水平命中 | 本枚增量 |
|---|---|---|
| 1 | 0.7220 | +0.7220 |
| 2 | 0.9227 | +0.2007 |
| 3 | 0.9785 | +0.0558 |
增量从 0.7220 骤降到 0.0558,递减极其剧烈——第一枚解决"有没有",第二枚解决"覆盖不全",第三枚只在边际补强。因此若载弹仅 2 枚,应全部用于"一上一下包夹"实现深度全覆盖;只有当载弹充裕(≥3 枚)且定位误差较大时,追加第三枚才有意义。这一结论把"投几枚、怎么投"转化为可操作的决策规则。
六、模型评价
优点:(1) 将垂直覆盖建模为区间并集,解析精确无近似;(2) 水平方向用独立并集,计算极廉价且直观;(3) 揭示了"包夹配置"与"边际递减"两个有实战价值的结论;(4) 同时提升了水平容错,降低对投放精度的要求;(5) 给出的"定深配置表 + 单位弹药增量"可直接作为作战手册的定量附录,指挥员无需重算即可查表决策。
缺点:(1) 假设两枚水平投放点重合,未计投放离散误差对水平并集的影响;(2) 仍假设潜艇静止;(3) 未考虑两枚引信同时起爆的协同/干扰;(4) 垂直并集假设两枚深度窗口独立,未计深弹入水点风偏差异。若两枚投放点本身存在水平偏差,可将其作为额外方差并入 σ,或建模为两枚命中区域的相关事件,框架无需重构,仅数值评估略复杂。
七、模型拓展
若允许 n 枚,垂直覆盖可用贪心将深度区间 n 等分定深(范文三取三等分 58.3/75/91.7 实现全覆盖),水平命中 。加入潜艇机动(范文三)后,每枚投弹点需各自补偿提前量。若两枚投放点存在水平离散误差,可将其并入 σ 或作为相关项处理,框架不变。
在实际作战中,深弹引信档位往往离散(如 5 m 一档),未必能精确设定 70 与 80。此时本模型因计算极廉价(每次评估仅一次区间并集与一次概率并集),完全支持对有限档位做离线穷举搜索最优 (h1,h2) 对;且平台特性保证离散化损失可忽略——即便只能取 70/75/80/85 档,(70,80) 仍是邻域最优。这进一步说明"包夹"原则对工程约束具有天然宽容度。
八、结论
两枚深弹以 (70,80) m 包夹式定深,可在垂直方向实现深度全覆盖、水平方向以概率并集提升至 0.9227,总联合命中较单枚提升约 60%,且是边际收益拐点(见图8)。该结论为有限载弹量下的"最优枚数"决策提供了量化依据,也为后续多枚与机动场景铺垫。
需要强调,边际递减结论依赖水平命中基准 ;若定位误差更大( 更低),第二枚的增量会更显著,双枚的性价比拐点反而更突出。反之若定位已极准(),双枚增益趋近于零——此时单枚即够。因此"是否值得投第二枚"应由实时 决定,而非固定教条。这也体现了模型的可嵌入性:它可作为火控系统的内置评估模块,随探测质量动态给出投放建议。
若进一步引入潜艇机动(范文三),本双枚框架的每枚投弹点只需各自叠加一个提前量,模型结构完全兼容,无需重构——这种"积木式"可扩展性,正是把三篇范文串成统一方法链的价值所在。
参考文献
[1] 全国大学生数学建模竞赛组委会. 2024 高教社杯全国大学生数学建模竞赛 B 题.
[2] 韩中庚. 数学建模方法及其应用(第三版). 高等教育出版社.
[3] 司守奎, 孙玺菁. 数学建模算法与应用(第2版). 国防工业出版社.
附录:核心 Python 实现(可独立运行复现)
# 双枚定深深弹联合命中概率模型(确定性,纯标准库)
import math
SIGMA = 25.0
R_KILL = 40.0
H_MIN, H_MAX = 50.0, 100.0
DH = 20.0
V0, VT, K = 8.0, 12.0, 0.15
def p_hit(delta):
sig2 = SIGMA * SIGMA
total, NR, NT = 0.0, 60, 72
dr = R_KILL / NR
dth = 2 * math.pi / NT
for i in range(NR):
r = R_KILL * (i + 0.5) / NR
for j in range(NT):
th = dth * (j + 0.5)
x = r * math.cos(th) - delta
y = r * math.sin(th)
dens = math.exp(-(x * x + y * y) / (2 * sig2)) / (2 * math.pi * sig2)
total += dens * r * dr * dth
return total
def p_cover(h_ds):
segs = sorted((max(H_MIN, d - DH), min(H_MAX, d + DH)) for d in h_ds)
total = 0.0
cur_lo, cur_hi = segs[0]
for lo, hi in segs[1:]:
if lo <= cur_hi:
cur_hi = max(cur_hi, hi)
else:
total += cur_hi - cur_lo
cur_lo, cur_hi = lo, hi
total += cur_hi - cur_lo
return max(0.0, min(1.0, total / (H_MAX - H_MIN)))
if __name__ == "__main__":
P_h = p_hit(0.0)
h1, h2 = 70.0, 80.0
Pv2 = p_cover([h1, h2])
P_h2 = 1.0 - (1.0 - P_h) ** 2
P_joint = P_h2 * Pv2
print("水平命中 P_h = %.4f" % P_h)
print("双枚垂直覆盖 P_v2 = %.4f" % Pv2)
print("双枚联合水平 P_h2 = %.4f" % P_h2)
print("双枚联合总命中 P_joint = %.4f" % P_joint)
# 单枚最优基准 0.5776 → 增益
print("较单枚最优(0.5776) 增益 = %+.1f%%" % ((P_joint / 0.5776 - 1) * 100))
# 预期:P_v2=1.0000 / P_h2=0.9227 / P_joint=0.9227 / +59.7%