【2024数模国赛赛题思路公开】国赛D题思路丨附可运行代码丨无偿自提

2024年国赛D题解题思路

问题一

【题目】

投射一枚深弹,潜艇中心位置的深度定位没有误差,两个水平坐标定位均服从正态分布。分析投弹最大命中概率与投弹落点平面坐标及定深引信引爆深度之间的关系,并给出使得投弹命中概率最大的投弹方案,及相应的最大命中概率表达式。

针对以下参数值给出最大命中概率:潜艇长 100 m,宽20 m,高 25 m,潜艇航向方位角为 90∘,深弹杀伤半径为20 m,潜艇中心位置的水平定位标准差 𝜎 = 120 m,潜艇中心位置的深度定位值为 150 m.

【题目分析】

模型构建

  • 潜艇的水平位置误差均服从正态分布 N(0,σ2),无深度误差。
  • 需分析深弹的投射落点坐标和定深引信引爆深度对命中概率的影响。
  • 潜艇的几何尺寸和航向角已知(潜艇长100 m,宽20 m,高25 m,航向方位角为90°)。
  • 利用深弹杀伤半径(20 m)以及潜艇的形状和尺寸,通过积分计算投弹落点坐标的概率密度函数并结合杀伤判定条件(落在潜艇的不同位置及引爆深度)。

· 思路

  • 计算不同投弹落点下的命中概率。
  • 最大化命中概率的投弹方案,可以通过优化投弹坐标(平面上的期望值)和引爆深度来实现。

· 计算

  • 根据给定的潜艇尺寸、航向、和误差分布,设定目标平面及其误差范围,计算积分得到命中概率的表达式。
  • 使用优化方法(如拉格朗日乘数法或数值优化算法)来求解最大命中概率和最优投弹方案。

【解题思路】

1. 问题描述和建模目标

分析单枚深弹在潜艇中心深度定位没有误差的情况下,投弹的最大命中概率与投弹落点平面坐标及定深引信引爆深度之间的关系,并找出使得投弹命中概率最大的投弹方案和相应的最大命中概率表达式。

2. 坐标系和变量定义

潜艇中心在海平面上的投影为原点O

X轴正向为正东方向,Y轴正向为正南方向,Z轴正向为垂直向下。

潜艇的水平位置误差:,无深度误差。

潜艇的尺寸为100*20*25m³,航向角为90°(正东方向),杀伤半径为20m,水平定位标准差为σ=120m,深度定位值为150m。

3. 命中判定条件

深弹满足以下任意一个条件即为命中潜艇:

  1. 深弹落点在潜艇平面范围内,且引爆深度位于潜艇上表面的下方,由触发引信引爆。
  2. 深弹落点在潜艇平面范围内,且引爆深度位于潜艇上表面的上方,同时潜艇在深弹的杀伤范围内,由定深引信引爆。
  3. 弹落点在潜艇平面范围外,但到达引爆深度时,由定深引信引爆,且此时潜艇在深弹的杀伤范围内。

4. 命中概率模型

潜艇的水平位置X和Y坐标均服从正态分布,概率密度函数为:

为了计算命中概率,需要对投弹落点的概率进行积分。

  1. 命中条件 1 和 2(深弹落点在潜艇平面范围内)

潜艇在水平面上的范围为:

命中概率为:

化简为:

引爆深度Zd与潜艇上表面z=137.5m的关系:

若zd<137.5m,由触发引信引爆。

若zd>137.5m且zd-137.5m≤20m,由定深引信引爆。

结合条件:

2. 命中条件 3(深弹落点在潜艇平面范围外)

如果落点在平面范围外,则计算深弹在杀伤范围内命中的概率:

其中,潜艇中心与落点的距离,且需满足d≤20。

概率表达为

总命中概率为:

5. 智能优化算法的引入

可以使用智能优化算法(如遗传算法、粒子群优化或梯度下降)来最大化Ptotal。设定目标函数为:

  • 遗传算法:将投弹坐标(x,y) 和引爆深度Zd 编码为个体,通过选择、交叉和变异操作迭代优化。
  • 粒子群优化:粒子的位置表示投弹坐标和引爆深度,利用速度和位置的更新规则进行优化。
  • 梯度下降:在命中概率表达式足够光滑时,通过计算梯度优化(x,y,Zd) 以最大化命中概率。

【Python参考代码】

import numpy as np
from scipy.optimize import minimize
from scipy.stats import norm

# 定义潜艇和深弹的参数
submarine_length = 100  # 潜艇长度 (m)
submarine_width = 20  # 潜艇宽度 (m)
submarine_height = 25  # 潜艇高度 (m)
submarine_depth = 150  # 潜艇中心位置的深度 (m)
sigma = 120  # 水平定位标准差 (m)
kill_radius = 20  # 深弹杀伤半径 (m)

# 潜艇上表面深度
z_top = submarine_depth - submarine_height / 2


# 水平位置概率密度函数
def horizontal_pdf(x, y, sigma):
    return (1 / (2 * np.pi * sigma ** 2)) * np.exp(- (x ** 2 + y ** 2) / (2 * sigma ** 2))


# 计算命中概率
def hit_probability(throw_point, detonation_depth):
    x, y = throw_point

    # 计算水平命中概率
    def p_in():
        return (norm.cdf(submarine_length / 2, loc=x, scale=sigma) - norm.cdf(-submarine_length / 2, loc=x,
                                                                              scale=sigma)) * \
            (norm.cdf(submarine_width / 2, loc=y, scale=sigma) - norm.cdf(-submarine_width / 2, loc=y, scale=sigma))

    # 垂直命中概率
    p_z1 = norm.cdf(z_top, loc=detonation_depth, scale=0) if detonation_depth < z_top else 0
    p_z2 = norm.cdf(z_top + kill_radius, loc=detonation_depth, scale=0) - norm.cdf(z_top, loc=detonation_depth,
                                                                                   scale=0) if z_top < detonation_depth <= z_top + kill_radius else 0

    p_hit1 = p_in() * (p_z1 + p_z2)

    # 外部命中概率(落点在潜艇平面范围外)
    p_out = 1 - p_in()
    distance = np.sqrt(x ** 2 + y ** 2 + (detonation_depth - 
submarine_depth) ** 2)
    p_hit2 = p_out * (1 if distance <= kill_radius else 0)

    # 总命中概率
    p_total = p_hit1 + p_hit2
    return p_total


# 优化目标函数
def objective(params):
    throw_point = params[:2]
    detonation_depth = params[2]
    # 我们的目标是最大化命中概率,因此这里取负值进行最小化
    return -hit_probability(throw_point, detonation_depth)


# 初始猜测的投弹点 (x, y) 和引爆深度
initial_guess = [0, 0, submarine_depth]

# 进行优化,约束引爆深度为正数
result = minimize(objective, initial_guess,
                  bounds=[(-submarine_length, submarine_length), (-submarine_width, submarine_width), (0, None)])

# 输出结果
optimal_throw_point = result.x[:2]
optimal_detonation_depth = result.x[2]
max_hit_probability = -result.fun

print(f"Optimal Throw Point (x, y): {optimal_throw_point}")
print(f"Optimal Detonation Depth: {optimal_detonation_depth}")
print(f"Maximum Hit Probability: {max_hit_probability}")
相关推荐
2401_882727577 小时前
BY组态-低代码web可视化组件
前端·后端·物联网·低代码·数学建模·前端框架
smppbzyc11 小时前
2024亚太杯数学建模C题【Development Analyses and Strategies for Pet Industry 】思路详解
数学建模·数学建模竞赛·亚太杯·2024亚太杯数学建模·apmcm亚太杯·2024亚太地区数学建模竞赛·亚太杯c题
热心网友俣先生11 小时前
2024年亚太C题第二版本二问题1求解过程+代码运行以及问题2-4超详细思路分析
数学建模
小何数模11 小时前
24 年第十四届APMCM亚太数模竞赛浅析
数学建模
川川菜鸟14 小时前
2024年亚太地区数学建模C题完整思路
数学建模
2023数学建模国赛比赛资料分享15 小时前
2024亚太杯国际赛C题宠物预测1234问完整解题思路代码+成品参考文章
人工智能·数学建模·宠物·2024亚太杯国际赛数学建模·2024亚太杯国际赛a题·2024亚太杯国际赛数模abc·2024亚太杯数学建模
subject625Ruben2 天前
随机森林(Random Forest, RF)筛选回归数据(处理异常值)
算法·随机森林·数学建模·回归
数维学长9862 天前
《译文》2024年11月数维杯国际大学生数学建模挑战赛题目
数学建模
2023数学建模国赛比赛资料分享2 天前
2024年第十四届APMCM亚太杯数学建模A题B题C题思路+代码解析汇总
数学建模·2024第十四届亚太杯数模·2024亚太杯数学建模国际上·2024亚太杯数学建模国际赛
张焚雪2 天前
关于图论建模的一份介绍
python·数学建模·图论