2024数学建模国赛高教社杯D题:问题1完整思路代码解析

先查看题目

在这个反潜作战的投弹问题中,我们的目标是最大化深弹命中潜艇的概率。为此,我们需要从几个方面分析和优化投弹方案,包括潜艇的水平误差和引爆深度的设定。

问题拆解

  1. 水平命中概率:因为潜艇在水平面上的位置并不是完全确定的,它的横向(东西方向)和纵向(南北方向)的坐标存在误差,这种误差服从正态分布。我们要计算深弹落在潜艇长宽范围内的概率,即在100米长和20米宽的区域内,深弹击中潜艇的可能性。

    • 由于误差服从正态分布,我们可以利用标准正态分布的累积分布函数(CDF)来计算深弹落点在这个区域的概率。
    • 换句话说,我们要最大化深弹落在潜艇长宽范围内的概率,具体就是让投弹的落点尽可能接近潜艇的中心位置。
# 水平方向命中概率函数
def horiz_hit_prob(length, width, error_xy):
    # 计算X方向命中概率
    x_prob = norm.cdf(length / 2 / error_xy) - norm.cdf(-length / 2 / error_xy)
    # 计算Y方向命中概率
    y_prob = norm.cdf(width / 2 / error_xy) - norm.cdf(-width / 2 / error_xy)
    # 返回水平方向总的命中概率(X方向 * Y方向)
    return x_prob * y_prob
  1. 垂直命中概率:潜艇的深度是已知且没有误差的,所以重点是分析引爆深度的设定。

    • 触发引信引爆:当深弹落在潜艇的上方,且引爆深度比潜艇的上表面更浅时,引信会引爆。
    • 定深引信引爆:如果深弹的落点虽然不在潜艇的正上方,但在一定的杀伤半径(20米)内,且引爆深度在潜艇上方,也会通过定深引信引爆。
# 垂直方向命中概率(假设深度定位没有误差)
def vert_hit_prob(trigger_depth, radius, depth):
    # 如果炸弹引爆深度小于潜艇上表面(触发引信引爆)
    if depth < trigger_depth:
        return 1.0  # 直接命中
    # 如果炸弹在潜艇上方的杀伤半径内(定深引信引爆)
    elif depth < trigger_depth + radius:
        return 1.0  # 仍然命中
    # 否则,超出杀伤半径,无法命中
    else:
        return 0.0  # 没有命中

综合命中概率:我们将水平命中概率和垂直引爆条件结合起来,总的命中概率就是两者的乘积。

# 计算总的命中概率
def total_hit_prob():
    # 计算水平方向的命中概率
    p_horiz = horiz_hit_prob(sub_len, sub_width, error_xy)

    # 计算垂直方向的命中概率(引爆深度在潜艇顶部的上方范围内)
    p_vert = vert_hit_prob(trigger_depth, radius, sub_depth)

    # 返回总的命中概率 = 水平概率 * 垂直概率
    return p_horiz * p_vert

最大化命中概率的关键点

  • 水平投弹的准确性:我们知道,潜艇的水平位置误差服从正态分布,因此最优的策略是让投弹落点的期望值尽量靠近潜艇的中心,这样才能增加深弹落在潜艇范围内的概率。

  • 引爆深度的选择:因为潜艇的深度是确定的,引爆深度应该设定在一个尽量靠近潜艇上方的较小深度。这样可以确保触发引信的有效性,同时还可以保证如果深弹落点不完全准确时,定深引信也能引爆。

直观的解题思路

  1. 水平精准投弹:通过调整投弹的落点坐标,使得它尽量靠近潜艇的中心,从而最大化水平命中概率。
  2. 合适的引爆深度:选择一个合适的引爆深度,既能保证触发引信的工作,又能确保在偏差较大的情况下定深引信也能起作用。
  3. 平衡误差和半径:深弹的杀伤半径为20米,因此即便投弹位置有一定的偏差,只要落点在潜艇附近且引爆深度合适,仍然有可能通过定深引信引爆。

最终,通过综合考虑投弹落点的水平坐标和引爆深度,我们可以找出一个最佳的投弹策略,从而最大化命中概率

这个问题的实质就是在已知潜艇水平位置有误差的情况下,找到一个合理的投弹方案,既保证落点尽量精准,又能通过引爆深度的调整来弥补落点偏差带来的影响

后续代码更新:
https://note.youdao.com/s/YVjtHq80

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值