2024年全国大学生数学建模竞赛(D题) 建模解析|反潜航空深弹命中概率问题|小鹿学长带队指引全代码文章与思路
我是鹿鹿学长,就读于上海交通大学,截至目前已经帮200+人完成了建模与思路的构建的处理了~本篇文章是鹿鹿学长经过深度思考,独辟蹊径,实现综合建模。独创复杂系统视角,帮助你解决国赛的难关呀。完整内容可以在文章末尾领取!问题一第一个问题是:“分析投弹最大命中概率与投弹落点平面坐标及定深引信引爆深度之间的关系,并给出使得投弹命中概率最大的投弹方案,及相应的最大命中概率表达式。”同时,要求针对给定的参数值
我是鹿鹿学长,就读于上海交通大学,截至目前已经帮200+人完成了建模与思路的构建的处理了~
本篇文章是鹿鹿学长经过深度思考,独辟蹊径,实现综合建模。独创复杂系统视角,帮助你解决国赛的难关呀。
完整内容可以在文章末尾领取!
问题一
第一个问题是:“分析投弹最大命中概率与投弹落点平面坐标及定深引信引爆深度之间的关系,并给出使得投弹命中概率最大的投弹方案,及相应的最大命中概率表达式。”
同时,要求针对给定的参数值(潜艇长 100 m,宽 20 m,高 25 m,潜艇航向方位角为 90°,深弹杀伤半径为 20 m,潜艇中心位置的水平定位标准差 𝜎 = 120 m,潜艇中心位置的深度定位值为 150 m)计算最大命中概率。
为了分析投弹最大命中概率与投弹落点平面坐标及定深引信引爆深度之间的关系,我们将按照以下步骤进行建模:
1. 建立模型的基本参数
-
潜艇的几何尺寸:
- 长度 L = 100 m L = 100 \text{ m} L=100 m
- 宽度 W = 20 m W = 20 \text{ m} W=20 m
- 高度 H = 25 m H = 25 \text{ m} H=25 m
-
深弹的相关参数:
- 杀伤半径 R = 20 m R = 20 \text{ m} R=20 m
-
潜艇中心位置的定位信息:
- 水平坐标的标准差 σ = 120 m \sigma = 120 \text{ m} σ=120 m
- 深度定位值 h 0 = 150 m h_0 = 150 \text{ m} h0=150 m
-
潜艇航向:
- 航向方位角 β = 9 0 ∘ \beta = 90^\circ β=90∘
2. 水平坐标定位与概率密度函数
潜艇中心位置的水平坐标 X X X 和 Y Y Y 均服从独立的正态分布:
- X ∼ N ( 0 , σ 2 ) X \sim N(0, \sigma^2) X∼N(0,σ2)
- Y ∼ N ( 0 , σ 2 ) Y \sim N(0, \sigma^2) Y∼N(0,σ2)
深度方向的定位 Z Z Z 假设没有误差,因此 Z = h 0 = 150 m Z = h_0 = 150 \text{ m} Z=h0=150 m。
3. 潜艇的命中条件
深弹命中潜艇的条件有以下三种情况:
-
触发引信:
- 深弹落点在潜艇的平面范围内,并且引爆深度在潜艇上表面下方。
- ∣ X ∣ ≤ L 2 \left|X\right| \leq \frac{L}{2} ∣X∣≤2L 和 ∣ Y ∣ ≤ W 2 \left|Y\right| \leq \frac{W}{2} ∣Y∣≤2W 且 Z < h 0 + H 2 Z < h_0 + \frac{H}{2} Z<h0+2H
-
定深引信:
- 深弹落点在潜艇的平面范围内,引爆深度在上方,同时潜艇在深弹的杀伤范围内。
- ∣ X ∣ ≤ L 2 \left|X\right| \leq \frac{L}{2} ∣X∣≤2L 且 ∣ Y ∣ ≤ W 2 \left|Y\right| \leq \frac{W}{2} ∣Y∣≤2W 且 Z > h 0 − H 2 Z > h_0 - \frac{H}{2} Z>h0−2H 且 X 2 + Y 2 ≤ R \sqrt{X^2 + Y^2} \leq R X2+Y2≤R
-
超出范围的引爆:
- 深弹落点在潜艇的平面范围外达到引爆深度,且此时潜艇在深弹的杀伤范围内。
- X 2 + Y 2 > L 2 \sqrt{X^2 + Y^2} > \frac{L}{2} X2+Y2>2L 或 X 2 + Y 2 > W 2 \sqrt{X^2 + Y^2} > \frac{W}{2} X2+Y2>2W 且 Z = h 0 Z = h_0 Z=h0 且 X 2 + Y 2 ≤ R \sqrt{X^2 + Y^2} \leq R X2+Y2≤R
4. 概率计算
根据上述条件,可以分别计算每一种情况下的命中概率,然后将其求和。
-
条件1的概率:
P 1 = P ( ∣ X ∣ ≤ 50 ∩ ∣ Y ∣ ≤ 10 ∩ Z < 162.5 ) P_1 = P\left( \left|X\right| \leq 50 \cap \left|Y\right| \leq 10 \cap Z < 162.5 \right) P1=P(∣X∣≤50∩∣Y∣≤10∩Z<162.5) -
条件2的概率:
P 2 = P ( ∣ X ∣ ≤ 50 ∩ ∣ Y ∣ ≤ 10 ∩ Z > 137.5 ) P ( X 2 + Y 2 ≤ 20 ) P_2 = P\left( \left|X\right| \leq 50 \cap \left|Y\right| \leq 10 \cap Z > 137.5 \right) P(\sqrt{X^2 + Y^2} \leq 20) P2=P(∣X∣≤50∩∣Y∣≤10∩Z>137.5)P(X2+Y2≤20) -
条件3的概率:
P 3 = P ( X 2 + Y 2 > 50 or 10 and Z = 150 m ) P ( X 2 + Y 2 ≤ 20 ) P_3 = P\left( \sqrt{X^2 + Y^2} > 50 \text{ or } 10 \text{ and } Z = 150 \text{ m} \right) P(\sqrt{X^2 + Y^2} \leq 20) P3=P(X2+Y2>50 or 10 and Z=150 m)P(X2+Y2≤20)
5. 最大命中概率的优化
通过调整投弹落点的坐标
(
x
,
y
)
(x, y)
(x,y) 以及定深引信引爆深度,使得总的命中概率
P
1
+
P
2
+
P
3
P_1 + P_2 + P_3
P1+P2+P3 最大化。
6. 计算最大命中概率
对于给定的参数,当我们对模型进行代码实现并进行数值模拟,我们可以得到最大命中概率的近似值。在实际计算中结合 Monte Carlo 方法或者数值积分方法,可以得到准确的结果。
例如,假设得到的最大命中概率为
为了分析投弹最大命中概率与投弹落点平面坐标及定深引信引爆深度之间的关系,我们首先需要建立命中概率的数学模型。假设深弹的落点为
(
X
L
,
Y
L
)
(X_L, Y_L)
(XL,YL),那么我们可以将潜艇的位置表示为
(
X
T
,
Y
T
,
Z
T
)
(X_T, Y_T, Z_T)
(XT,YT,ZT),其中
X
T
X_T
XT 和
Y
T
Y_T
YT 服从
N
(
0
,
σ
2
)
N(0, \sigma^2)
N(0,σ2),
Z
T
Z_T
ZT 则服从单边截尾正态分布
N
(
h
0
,
σ
z
2
,
l
)
N(h_0, \sigma_z^2, l)
N(h0,σz2,l)。
问题分析
-
潜艇的定位误差:
- 潜艇的水平坐标 X T X_T XT 和 Y T Y_T YT 均服从正态分布 N ( 0 , σ 2 ) N(0, \sigma^2) N(0,σ2),其中 σ = 120 m \sigma = 120 \, m σ=120m。
- 深度坐标 Z T Z_T ZT 则服从单边截尾正态分布,包含潜艇实际深度信息。
-
深弹的命中条件:
- 深弹的命中分为三种情形:
- 深弹落点在潜艇的水平范围内 ( ∣ X L ∣ ≤ 50 |X_L| \leq 50 ∣XL∣≤50, ∣ Y L ∣ ≤ 10 |Y_L| \leq 10 ∣YL∣≤10),且引爆深度 Z L Z_L ZL 位于潜艇上表面的下方 ( Z L < Z T + 25 Z_L < Z_T + 25 ZL<ZT+25)。
- 深弹落点在水平范围内,且引爆深度在潜艇上表面的上方,但需要潜艇在杀伤半径内 ( Z L > Z T + 25 Z_L > Z_T + 25 ZL>ZT+25 且 ∣ ∣ ( X T − X L ) 2 + ( Y T − Y L ) 2 ∣ ∣ < R ||\sqrt{(X_T - X_L)^2 + (Y_T - Y_L)^2}|| < R ∣∣(XT−XL)2+(YT−YL)2∣∣<R)。
- 深弹落点在水平范围外,但在达到深度 Z L Z_L ZL 时潜艇要在杀伤半径范围内。
- 深弹的命中分为三种情形:
最大命中概率的求解
设定深弹的引爆深度为 Z L Z_L ZL。我们定义命中事件为 H H H,目标是 P ( H ) = P ( H 1 ) + P ( H 2 ) + P ( H 3 ) P(H) = P(H_1) + P(H_2) + P(H_3) P(H)=P(H1)+P(H2)+P(H3)。
- 第一种情况的命中概率( P ( H 1 ) P(H_1) P(H1))为:
P ( H 1 ) = P ( ∣ X T ∣ ≤ 50 , ∣ Y T ∣ ≤ 10 , Z L < Z T + 25 ) P(H_1) = P(|X_T| \leq 50, |Y_T| \leq 10, Z_L < Z_T + 25) P(H1)=P(∣XT∣≤50,∣YT∣≤10,ZL<ZT+25)
- 由于 X T , Y T X_T, Y_T XT,YT 是独立的正态分布变量,可以通过累积分布函数计算:
P ( ∣ X T ∣ ≤ 50 ) = 2 Φ ( 50 σ ) − 1 和 P ( ∣ Y T ∣ ≤ 10 ) = 2 Φ ( 10 σ ) − 1 P(|X_T| \leq 50) = 2\Phi\left(\frac{50}{\sigma}\right) - 1 \quad \text{和} \quad P(|Y_T| \leq 10) = 2\Phi\left(\frac{10}{\sigma}\right) - 1 P(∣XT∣≤50)=2Φ(σ50)−1和P(∣YT∣≤10)=2Φ(σ10)−1
-
对于深度,综合 Z T Z_T ZT 的分布,我们需要计算 Z L < Z T + 25 Z_L < Z_T + 25 ZL<ZT+25 的概率。
-
第二种情况的命中概率( P ( H 2 ) P(H_2) P(H2))为:
P ( H 2 ) = P ( ∣ X T ∣ ≤ 50 , ∣ Y T ∣ ≤ 10 , Z L > Z T + 25 , ∣ ∣ ( X T − X L ) 2 + ( Y T − Y L ) 2 ∣ ∣ < R ) P(H_2) = P(|X_T| \leq 50, |Y_T| \leq 10, Z_L > Z_T + 25, ||\sqrt{(X_T - X_L)^2 + (Y_T - Y_L)^2}|| < R) P(H2)=P(∣XT∣≤50,∣YT∣≤10,ZL>ZT+25,∣∣(XT−XL)2+(YT−YL)2∣∣<R)
- 第三种情况的命中概率( P ( H 3 ) P(H_3) P(H3))为:
P ( H 3 ) = P ( ∣ ∣ ( X T − X L ) 2 + ( Y T − Y L ) 2 ∣ ∣ ≥ 5 0 2 + 1 0 2 , Z L < Z T ) P(H_3) = P(||\sqrt{(X_T - X_L)^2 + (Y_T - Y_L)^2}|| \geq \sqrt{50^2 + 10^2}, Z_L < Z_T) P(H3)=P(∣∣(XT−XL)2+(YT−YL)2∣∣≥502+102,ZL<ZT)
最佳引爆深度的选择
为了找到最佳的定深引信引爆深度
Z
L
Z_L
ZL,我们需对上述两种情况的命中概率进行最大化。结合潜艇的尺寸与位置对投弹的局限性以及实际概率的计算,选定
Z
L
Z_L
ZL 需要平衡命中条件的深度选择与概率。
计算最大命中概率
现在,根据以下参数计算最大命中概率:
- 潜艇长 L = 100 m L = 100 \, m L=100m
- 宽 W = 20 m W = 20 \, m W=20m
- 高 H = 25 m H = 25 \, m H=25m
- 深弹杀伤半径 R = 20 m R = 20 \, m R=20m
- 潜艇水平定位标准差 σ = 120 m \sigma = 120 \, m σ=120m
假设我们选择的 $Z_L
要分析投弹最大命中概率与投弹落点平面坐标及定深引信引爆深度之间的关系,我们首先需要定义潜艇的相关几何指标以及命中条件。
1. 定义潜艇及投弹落点的相关参数
-
潜艇中心的海平面投影坐标为 ( 0 , 0 ) (0,0) (0,0),潜艇的长宽高分别为:
L = 100 m , W = 20 m , H = 25 m L = 100 \text{ m}, \quad W = 20 \text{ m}, \quad H = 25 \text{ m} L=100 m,W=20 m,H=25 m -
潜艇航向的方位角为 β = 9 0 ∘ \beta = 90^\circ β=90∘。因此,潜艇在 X Y XY XY平面上的占地范围为:
潜艇范围 = [ − L 2 , L 2 ] × [ − W 2 , W 2 ] = [ − 50 , 50 ] × [ − 10 , 10 ] \text{潜艇范围} = \left[-\frac{L}{2}, \frac{L}{2}\right] \times \left[-\frac{W}{2}, \frac{W}{2}\right] = [-50, 50] \times [-10, 10] 潜艇范围=[−2L,2L]×[−2W,2W]=[−50,50]×[−10,10] -
深弹的杀伤半径为 R = 20 m R = 20 \text{ m} R=20 m。
2. 投弹落点的坐标
设定投弹落点的平面坐标为 ( x , y ) (x,y) (x,y),然后考虑潜艇实际水平位置的定位误差:
- 潜艇的水平坐标
(
X
,
Y
)
(X,Y)
(X,Y)是服从正态分布的随机变量:
X ∼ N ( 0 , σ 2 ) , Y ∼ N ( 0 , σ 2 ) , σ = 120 m X \sim N(0, \sigma^2), \quad Y \sim N(0, \sigma^2), \quad \sigma = 120 \text{ m} X∼N(0,σ2),Y∼N(0,σ2),σ=120 m
3. 定深引信引爆深度
假设定深引信的引爆深度为 D D D。根据题目,深弹的命中条件有三个:
- 深弹落点在潜艇范围内,引爆深度 D D D位于潜艇上表面的下方,即 D < 175 m D < 175 \text{ m} D<175 m(潜艇中心深度150m + 高度25m)。
- 深弹落点在潜艇范围内,引爆深度 D D D位于潜艇上表面上方,同时潜艇在杀伤范围内,即 D > 175 m D > 175 \text{ m} D>175 m并且潜艇的实际深度在 [ D − R , D + R ] [D-R, D+R] [D−R,D+R]内。
- 深弹落点在潜艇范围外,此时需要深弹引爆深度 D D D并且潜艇深度在 [ D − R , D + R ] [D-R, D+R] [D−R,D+R]内。
4. 命中概率计算
我们求投弹命中概率,分以下几种情况计算。
(1) 深弹落在潜艇范围内时的命中概率
对于
D
<
175
D < 175
D<175的情况,命中概率为计算在潜艇范围内的
(
X
,
Y
)
(X,Y)
(X,Y)的密度:
P
1
=
∬
[
−
50
,
50
]
×
[
−
10
,
10
]
1
2
π
σ
2
e
−
x
2
+
y
2
2
σ
2
d
x
d
y
P_1 = \iint_{[-50, 50] \times [-10, 10]} \frac{1}{2\pi\sigma^2} e^{-\frac{x^2 + y^2}{2\sigma^2}} \, dx \, dy
P1=∬[−50,50]×[−10,10]2πσ21e−2σ2x2+y2dxdy
这可以通过极坐标转换求得。
(2) 深弹落点在潜艇范围内但深度在上方时的命中概率
对
D
>
175
D > 175
D>175的情况,突出的重点是潜艇的实际深度分布。设潜艇深度
Z
Z
Z为:
Z
∼
N
(
h
0
,
σ
z
2
)
where
h
0
=
150
,
σ
z
=
0
,
lower limit
l
=
120
Z \sim N(h_0, \sigma_z^2) \quad \text{where } h_0=150, \sigma_z=0, \text{ lower limit } l=120
Z∼N(h0,σz2)where h0=150,σz=0, lower limit l=120
设潜艇深度在
[
D
−
R
,
D
+
R
]
[D-R, D+R]
[D−R,D+R]内,结合深度分布计算该区间内的概率。
(3) 落点在潜艇范围外时的命中概率
利用相差的距离定义来计算该情况的概率。
5. 最终最大命中概率的表达式
综合以上几种情况的命中概率,我们得到投弹最大命中概率的整体表达式:
P h i t = P 1 + P 2 + P 3 P_{hit} = P_1 + P_2 + P_3 Phit=P1+P2+P3
接着,我们将具体参数代入,从而计算出最大命中概率值。下面我们只需计算具体的数值即可,综合考虑不同情况的命中概率。
最终的最大命中概率可以表示为:
P m a x = max D ∈ ( h 0 , h 0 + H ) P h i t P_{max} = \max_{D \in (h_0, h_0 + H)} P_{hit} Pmax=D∈(h0,h0+H)maxPhit
在上述参数下代入计算,可以
为了分析投弹最大命中概率与投弹落点平面坐标及定深引信引爆深度之间的关系,我们首先需要定义潜艇及深弹的相关参数。我们将根据问题的逻辑推导出命中概率,并结合numpy和scipy库来计算。
以下是Python代码,它计算了在给定参数下的最大命中概率及相应的投弹方案:
import numpy as np
from scipy.stats import norm
import matplotlib.pyplot as plt
# 定义潜艇的参数
submarine_length = 100 # 潜艇长度 (m)
submarine_width = 20 # 潜艇宽度 (m)
submarine_height = 25 # 潜艇高度 (m)
# 定义深弹的参数
kill_radius = 20 # 杀伤半径 (m)
sigma = 120 # 水平方向定位标准差 (m)
depth_target = 150 # 潜艇中心深度定位值 (m)
# 计算潜艇的命中区域
def submarine_hit_area(x, y, depth_submarine):
# 潜艇的平面范围
return (abs(x) <= submarine_length / 2) and (abs(y) <= submarine_width / 2)
# 定义投弹方案与命中概率计算
def max_hit_probability(bomb_x, bomb_y, depth_setting):
# 计算投弹落点到潜艇的距离
# 设定潜艇上表面深度
depth_submarine_top = depth_target + submarine_height / 2
depth_submarine_bottom = depth_target - submarine_height / 2
# 水平方向的概率
prob_horizontal = norm.pdf(bomb_x, 0, sigma) * norm.pdf(bomb_y, 0, sigma)
# 深度方向的概率
prob_depth_upper = norm.cdf(depth_submarine_top, depth_setting, 0.0001) # 确保上方引爆
prob_depth_lower = norm.cdf(depth_setting, depth_submarine_bottom, 0.0001) # 确保下方引爆
# 计算综合命中概率
total_hit_probability = prob_horizontal * (prob_depth_upper + (1 - prob_depth_lower))
return total_hit_probability
# 定义搜索范围
bomb_x_range = np.linspace(-200, 200, 400) # X方向投弹落点
bomb_y_range = np.linspace(-200, 200, 400) # Y方向投弹落点
depth_settings = np.linspace(140, 160, 20) # 引爆深度设置的范围
max_probability = 0
optimal_x = 0
optimal_y = 0
optimal_depth = 0
# 遍历所有深度设置及落点
for x in bomb_x_range:
for y in bomb_y_range:
for depth in depth_settings:
hit_probability = max_hit_probability(x, y, depth)
if hit_probability > max_probability:
max_probability = hit_probability
optimal_x = x
optimal_y = y
optimal_depth = depth
print(f"最大命中概率: {max_probability:.4f}")
print(f"最佳投弹落点: ({optimal_x}, {optimal_y})")
print(f"最佳引信引爆深度: {optimal_depth}")
代码分析
- 潜艇参数与深弹参数: 我们定义了潜艇的长、宽、高以及深弹的杀伤半径和水平定位标准差。
- 命中区域计算:
submarine_hit_area
函数用于判断深弹落点是否在潜艇目标范围内。 - 命中概率计算:
max_hit_probability
函数计算给定投弹落点和深度引爆设置下的命中概率。 - 全局最优解搜索: 使用三重循环遍历所有可能的投弹落点和引信深度设置,并记录最大命中概率和最优参数。
运行这段代码将输出最大命中概率、最佳投弹落点坐标和最佳引信引爆深度。确保环境中安装了 numpy
、scipy
和 matplotlib
库。
问题二
第二个问题是:在考虑潜艇中心位置各方向的定位均有误差的情况下,需要给出投弹命中概率的表达式。并且基于此,设计一个定深引信引爆深度,以使得投弹的命中概率最大。此问题要求在给定的参数条件下,优化深弹的投射策略。相关的参数包括潜艇中心位置的深度定位值、深度定位标准差、潜艇实际深度的最小值,以及其他与第一个问题相同的参数。
为了解决第二个问题,我们需要首先建立潜艇位置的概率模型,然后利用这些信息计算投弹的命中概率。
假设潜艇在海中的位置为三维坐标 ( X , Y , Z ) (X, Y, Z) (X,Y,Z),其中 X X X和 Y Y Y分别表示潜艇在海平面上的水平位置, Z Z Z表示潜艇的深度。
潜艇位置模型
-
水平位置:
- 假设潜艇中心位置的水平坐标 X X X和 Y Y Y均服从独立的正态分布。
- X ∼ N ( 0 , σ 2 ) X \sim N(0, \sigma^2) X∼N(0,σ2)
- Y ∼ N ( 0 , σ 2 ) Y \sim N(0, \sigma^2) Y∼N(0,σ2)
-
深度位置:
- 潜艇的深度 Z Z Z则服从单边截尾正态分布:
- Z ∼ N ( h 0 , σ z 2 , l ) Z \sim N(h_0, \sigma_z^2, l) Z∼N(h0,σz2,l),其中 h 0 = 150 m h_0 = 150 \text{ m} h0=150 m, σ z = 40 m \sigma_z = 40 \text{ m} σz=40 m, l = 120 m l = 120 \text{ m} l=120 m。
根据题意,设定深引信引爆深度为 d d d,我们需找到使得投弹命中概率最大的 d d d值。
投弹命中条件
对于投弹的命中,考虑以下几种情况:
-
深弹落点在潜艇的水平范围内并且引爆深度 d d d在潜艇上表面下方:
- 触发引信引爆条件。
-
深弹落点在潜艇的水平范围内并且引爆深度 d d d在潜艇上表面上方(即 Z + h > d Z + h > d Z+h>d),同时潜艇在深弹的杀伤范围内:
- 定深引信引爆条件。
-
深弹落点在潜艇面积外,但引爆深度 d d d在潜艇的杀伤范围内(即: ( X 0 ) 2 + ( Y 0 ) 2 ≤ R \sqrt{(X_0)^2 + (Y_0)^2} \leq R (X0)2+(Y0)2≤R,其中 R R R为杀伤半径):
- 定深引信引爆条件。
投弹命中概率表达式
令 L L L为潜艇的长度, W W W为潜艇的宽度, h h h为潜艇深度,高为 H H H,杀伤半径为 R R R,可以得到:
-
潜艇的命中区域可以通过潜艇的平面投影来表示,即 [ − L 2 , L 2 ] [-\frac{L}{2}, \frac{L}{2}] [−2L,2L] 和 [ − W 2 , W 2 ] [-\frac{W}{2}, \frac{W}{2}] [−2W,2W]。
-
对于深度位置的建模,设潜艇的上表面深度为 Z + H Z + H Z+H,则命中的条件为:
- d < Z + H d < Z + H d<Z+H(触发引信)
- 或者 d > Z d > Z d>Z 且 ( X − X 0 ) 2 + ( Y − Y 0 ) 2 ≤ R \sqrt{(X - X_0)^2 + (Y - Y_0)^2} \leq R (X−X0)2+(Y−Y0)2≤R(定深引信)
投弹命中概率计算
因此,可以计算出命中概率 P hit ( d ) P_{\text{hit}}(d) Phit(d)为:
P hit ( d ) = P ( ( X , Y ) 在潜艇范围内 和 Z + H > d ) + P ( ( X , Y ) 在潜艇范围外 和 d < Z + R ) P_{\text{hit}}(d) = P\left( (X, Y) \text{ 在潜艇范围内} \text{ 和 } Z + H > d \right) + P\left( (X, Y) \text{ 在潜艇范围外} \text{ 和 } d < Z + R \right) Phit(d)=P((X,Y) 在潜艇范围内 和 Z+H>d)+P((X,Y) 在潜艇范围外 和 d<Z+R)
结合以上条件,命中概率可表示为:
P
hit
(
d
)
=
P
(
−
L
2
−
X
σ
<
X
σ
<
L
2
−
X
σ
,
−
W
2
−
Y
σ
<
Y
σ
<
W
2
−
Y
σ
∣
Z
+
h
0
>
d
)
+
P
(
d
<
Z
+
R
)
P_{\text{hit}}(d) = P\left(\frac{-\frac{L}{2} - X}{\sigma} < \frac{X}{\sigma} < \frac{\frac{L}{2} - X}{\sigma}, \frac{-\frac{W}{2} - Y}{\sigma} < \frac{Y}{\sigma} < \frac{\frac{W}{2} - Y}{\sigma} | Z+h_0 > d \right) + P\left(d < Z + R\right)
Phit(d)=P(σ−2L−X<σX<σ2L−X,σ−2W−Y<σY<σ2W−Y∣Z+h0>d)+P(d<Z+R)
最优定深引信引爆深度 d d d的优化
通过对上述命中概率 P hit ( d ) P_{\text{hit}}(d) Phit(d)进行优化,可以使用数值方法(如梯度上升法或模拟退火)来找到使得 P hit ( d ) P_{\text{hit}}(d) Phit(d)最大的 d d d值。
通过设定不同的 d d d值来计算概率,并通过该公式进行多次试探计算,最终得出结果。
这便是第二个问题的数学建模过程和命中概率的
为了给出在潜艇中心位置各方向的定位均有误差情况下的投弹命中概率的表达式,并设计一个能使投弹命中概率最大化的定深引信引爆深度,我们先来定义相关参数并推导命中概率的公式。
假设潜艇的长、宽、高分别为 L = 100 L=100 L=100 m、 W = 20 W=20 W=20 m、 H = 25 H=25 H=25 m,海面上潜艇中心点的水平坐标 ( X , Y ) (X, Y) (X,Y)服从独立的正态分布:
- X , Y ∼ N ( 0 , σ 2 ) X, Y \sim N(0, \sigma^2) X,Y∼N(0,σ2) ,其中 σ = 120 \sigma = 120 σ=120 m;
- 潜艇的深度
Z
Z
Z服从单边截尾正态分布
N
(
h
0
,
σ
z
2
,
l
)
N(h_0, \sigma_z^2, l)
N(h0,σz2,l),其密度函数为:
f h 0 , σ z , l ( v ) = 1 σ z ⋅ ϕ ( v − h 0 σ z ) ⋅ 1 1 − Φ ( l − h 0 σ z ) ( l < v < + ∞ ) f_{h_0, \sigma_z, l}(v) = \frac{1}{\sigma_z} \cdot \phi\left(\frac{v - h_0}{\sigma_z}\right) \cdot \frac{1}{1 - \Phi\left(\frac{l - h_0}{\sigma_z}\right)} \quad (l < v < +\infty) fh0,σz,l(v)=σz1⋅ϕ(σzv−h0)⋅1−Φ(σzl−h0)1(l<v<+∞)
其中 l = 120 l = 120 l=120 m, h 0 = 150 h_0 = 150 h0=150 m, σ z = 40 \sigma_z = 40 σz=40 m。
投弹命中概率表达式
根据深弹的命中条件,投弹的命中概率 P h i t P_{hit} Phit可以从以下三部分进行分析:
-
触发引信命中:当投弹落点 ( x , y ) (x, y) (x,y)在潜艇的平面尺度范围内,且其引爆深度 z d e t z_{det} zdet低于潜艇的水面( z d e t < Z t o p = h 0 + H 2 z_{det} < Z_{top} = h_0 + \frac{H}{2} zdet<Ztop=h0+2H)。此时,我们需要满足以下条件:
∣ X ∣ ≤ L 2 且 ∣ Y ∣ ≤ W 2 且 z d e t < h 0 + H 2 |X| \leq \frac{L}{2} \quad \text{且} \quad |Y| \leq \frac{W}{2} \quad \text{且} \quad z_{det} < h_0 + \frac{H}{2} ∣X∣≤2L且∣Y∣≤2W且zdet<h0+2H相应的命中概率为:
P h i t , t r i g g e r = P ( ∣ X ∣ ≤ 50 , ∣ Y ∣ ≤ 10 , z d e t < h 0 + 25 2 ) P_{hit, trigger} = P(|X| \leq 50, |Y| \leq 10, z_{det} < h_0 + \frac{25}{2}) Phit,trigger=P(∣X∣≤50,∣Y∣≤10,zdet<h0+225) -
定深引信命中:当投弹落点在潜艇的平面尺度范围内,且引爆深度 z d e t z_{det} zdet高于潜艇的水面( z d e t ≥ Z t o p z_{det} \geq Z_{top} zdet≥Ztop),同时潜艇在深弹的杀伤范围内($ \sqrt{(X_{true} - x)^2 + (Y_{true} - y)^2} \leq R = 20$ m)。相应的命中概率为:
P h i t , d e p t h = P ( ∣ X ∣ ≤ 50 , ∣ Y ∣ ≤ 10 , z d e t ≥ Z t o p , ( X − x ) 2 + ( Y − y ) 2 ≤ R ) P_{hit, depth} = P(|X| \leq 50, |Y| \leq 10, z_{det} \geq Z_{top}, \sqrt{(X - x)^2 + (Y - y)^2} \leq R) Phit,depth=P(∣X∣≤50,∣Y∣≤10,zdet≥Ztop,(X−x)2+(Y−y)2≤R) -
截尾引信命中:当投弹落点不在潜艇的平面尺度范围内,但 z d e t z_{det} zdet设定为 z d e t z_{det} zdet,并且此时潜艇在深弹杀伤范围内。例如,潜艇的实际深度在其下方、上方击中。此时相应的概率得通过实际的深度分布 Z Z Z来整合。
结合上述三个条件,可以写出总的命中概率:
P
h
i
t
=
P
h
i
t
,
t
r
i
g
g
e
r
+
P
h
i
t
,
d
e
p
t
h
+
P
h
i
t
,
c
u
t
o
f
f
P_{hit} = P_{hit, trigger} + P_{hit, depth} + P_{hit, cutoff}
Phit=Phit,trigger+Phit,depth+Phit,cutoff
最优化定深引信引爆深度
为了最大化投弹命中概率,我们需要选择合适的 z d e t z_{det} zdet。为了做到这一点,可以通过数值方法(例如,蒙特卡洛模拟或数值优化)来寻找 z d e t z_{det} zdet的最优值,即使 P h i t P_{hit} Phit最大化。
妙解
在上述概率计算与优化过程中,我们提出关注三个关键点:
-
定位误差的影响:潜艇定位的误差直接影响了命中概率,尤其是在潜艇采取静默方式后。因此,如何减小这一误差或加强探测能力将是提高命中率的重点。
-
合理的深度设定:定
在考虑潜艇中心位置各方向的定位均有误差的情况下,命中概率表达式的设计可以基于深弹的命中条件。根据问题描述,我们设定以下变量:
- X X X 和 Y Y Y 表示潜艇的水平坐标,其均服从正态分布 N ( 0 , σ 2 ) N(0, \sigma^2) N(0,σ2),这里 σ = 120 m \sigma = 120 m σ=120m。
-
Z
Z
Z 表示潜艇的深度,服从单边截尾正态分布
N
(
h
0
,
σ
z
2
,
l
)
N(h_0, \sigma_z^2, l)
N(h0,σz2,l),其中
h
0
=
150
m
h_0 = 150 m
h0=150m,
σ
z
=
40
m
\sigma_z = 40 m
σz=40m,
l
=
120
m
l = 120 m
l=120m。
命中条件
深弹命中的条件如下:
- 条件1(触发引信):深弹落点在潜艇面内,且引爆深度 D e D_e De 在潜艇上表面的下方。
- 条件2(定深引信):深弹落点在潜艇面内,且引爆深度 D e D_e De 在潜艇上表面的上方,同时潜艇在杀伤范围内。
- 条件3(超出面):深弹落点在潜艇面外,到达引爆深度时,潜艇在杀伤范围内。
参数定义
假设潜艇的上表面深度为 h 0 + H 2 = 150 + 25 2 = 162.5 m h_0 + \frac{H}{2} = 150 + \frac{25}{2} = 162.5 m h0+2H=150+225=162.5m, 其中 H = 25 m H = 25 m H=25m 是潜艇的高度。潜艇的下表面深度为 h 0 − H 2 = 150 − 25 2 = 137.5 m h_0 - \frac{H}{2} = 150 - \frac{25}{2} = 137.5 m h0−2H=150−225=137.5m。
命中概率计算
根据上述条件,我们可以分析每个条件的命中概率。首先对命中概率进行公式化定义:
-
条件1 的命中概率 P 1 P_1 P1:
- 触发引信有效的区域为:
- ∣ X ∣ ≤ W 2 = 10 m |X| \leq \frac{W}{2} = 10 m ∣X∣≤2W=10m, ∣ Y ∣ ≤ L 2 = 50 m |Y| \leq \frac{L}{2} = 50 m ∣Y∣≤2L=50m(其中 W = 20 m W = 20 m W=20m, L = 100 m L = 100 m L=100m)
- 引爆深度 D e < 137.5 m D_e < 137.5 m De<137.5m
因此:
P 1 = P ( ∣ X ∣ ≤ 10 ) P ( ∣ Y ∣ ≤ 50 ) P ( Z < 137.5 ) P_1 = P(|X| \leq 10) P(|Y| \leq 50) P(Z < 137.5) P1=P(∣X∣≤10)P(∣Y∣≤50)P(Z<137.5)计算:
P ( ∣ X ∣ ≤ 10 ) = Φ ( 10 σ ) − Φ ( − 10 σ ) P(|X| \leq 10) = \Phi\left(\frac{10}{\sigma}\right) - \Phi\left(-\frac{10}{\sigma}\right) P(∣X∣≤10)=Φ(σ10)−Φ(−σ10)
P ( ∣ Y ∣ ≤ 50 ) = Φ ( 50 σ ) − Φ ( − 50 σ ) P(|Y| \leq 50) = \Phi\left(\frac{50}{\sigma}\right) - \Phi\left(-\frac{50}{\sigma}\right) P(∣Y∣≤50)=Φ(σ50)−Φ(−σ50)
P ( Z < 137.5 ) = 1 1 − Φ ( l − h 0 σ z ) Φ ( 137.5 − h 0 σ z ) P(Z < 137.5) = \frac{1}{1 - \Phi\left(\frac{l - h_0}{\sigma_z}\right)} \Phi\left(\frac{137.5 - h_0}{\sigma_z}\right) P(Z<137.5)=1−Φ(σzl−h0)1Φ(σz137.5−h0) -
条件2 的命中概率 P 2 P_2 P2:
- ∣ X ∣ ≤ 10 |X| \leq 10 ∣X∣≤10, ∣ Y ∣ ≤ 50 |Y| \leq 50 ∣Y∣≤50,引爆深度 137.5 ≤ D e ≤ 162.5 137.5 \leq D_e \leq 162.5 137.5≤De≤162.5
- 在
D
e
D_e
De 取值范围内,同时潜艇在深弹的杀伤半径内:
P 2 = P ( ∣ X ∣ ≤ 10 ) P ( ∣ Y ∣ ≤ 50 ) ∫ 137.5 162.5 P ( Z = d ) d d P_2 = P(|X| \leq 10) P(|Y| \leq 50) \int_{137.5}^{162.5} P(Z = d) \, dd P2=P(∣X∣≤10)P(∣Y∣≤50)∫137.5162.5P(Z=d)dd
-
条件3 的命中概率 P 3 P_3 P3(视为闭包):
-
∣
X
∣
>
10
|X| > 10
∣X∣>10 或
∣
Y
∣
>
50
|Y| > 50
∣Y∣>50,
Z
Z
Z 在上表面之上(
Z
>
162.5
Z > 162.5
Z>162.5)和在杀伤范围内
P 3 = ∫ l ∞ P ( R ) P ( Z = d ) d d P_3 = \int_{l}^{\infty} P(R) P(Z = d) \, dd P3=∫l∞P(R)P(Z=d)dd
-
∣
X
∣
>
10
|X| > 10
∣X∣>10 或
∣
Y
∣
>
50
|Y| > 50
∣Y∣>50,
Z
Z
Z 在上表面之上(
Z
>
162.5
Z > 162.5
Z>162.5)和在杀伤范围内
综合命中概率表达式
最终,整体命中概率
P
h
i
t
P_{hit}
Phit 可以综合为:
P
h
i
t
=
P
1
+
P
2
+
P
3
P_{hit} = P_1 + P_2 + P_3
Phit=P1+P2+P3
优化引信深度设计
为了优化引信深度
D
e
D_e
De,我们可以通过改变引信深度,最大化
P
h
i
t
P_{hit}
Phit,
根据问题 2 的要求,我们需要给出投弹命中概率的表达式,并设计一个定深引信引爆深度,以使得投弹的命中概率最大。命中概率取决于潜艇及深弹的位置、深度以及尺度等,我们可以通过概率观点建立公式。
假设潜艇在空间中的位置为 (X, Y, Z),我们有以下信息:
- 潜艇的宽度 W = 20 m,长度 L = 100 m,高度 H = 25 m。
- 最大杀伤半径 R = 20 m。
- 水平定位标准差 𝜎 = 120 m。
- 水深定位值 = 150 m,标准差为 𝜎𝑧 = 40 m,最小深度 = 120 m。
投弹命中概率的表达式
我们可以用以下步骤来推导命中概率 P_hit:
-
定义潜艇的几何范围:
- 水平面上的潜艇范围:[X - W/2, X + W/2] 和 [Y - L/2, Y + L/2]。
- 垂直方向上潜艇的深度范围为 [Z, Z + H]。
-
利用正态分布:
- 水平坐标 X 和 Y 的误差服从正态分布,表示为 N(0, 𝜎^2)。
- 深度 Z 的误差(由于截尾正态分布)可以根据觉察到的水深来估算。
-
极限条件:深弹可以通过以下条件命中潜艇:
- 深弹落点在潜艇的水平范围内,并在其深度范围内。
- 根据深度引信设定,考虑定深引信的设定。
-
命中概率公式:
- 决定性命中概率的公式可形式化为:
P hit = P ( H ∩ V ∩ Z ) P_{\text{hit}} = P\left(H \cap V \cap Z \right) Phit=P(H∩V∩Z)
其中 H 是水平命中(深弹落点在潜艇的范围内),V 是深度命中(深弹落点深度在潜艇可接受范围内),Z 是通过定深引信对深度的考虑。
- 决定性命中概率的公式可形式化为:
Python 代码示例
import numpy as np
from scipy.stats import norm
from scipy.integrate import nquad
# 参数设置
L = 100 # 潜艇长度
W = 20 # 潜艇宽度
H = 25 # 潜艇高度
R = 20 # 杀伤半径
sigma_x = 120 # 水平定位标准差
h0 = 150 # 深度定位值
sigma_z = 40 # 深度标准差
l = 120 # 最小实际深度
# 定义潜艇的深度范围
def Z_ranges(z):
return (z >= l) and (z <= h0 + H)
# 命中概率函数
def hit_probability(deep_trigger):
# 潜艇的实际深度
z_min = deep_trigger - H
z_max = deep_trigger
# 水平随机变量的集成
prob_horizontal = (norm.cdf(L/2 + R, loc=0, scale=sigma_x) -
norm.cdf(-L/2 - R, loc=0, scale=sigma_x)) * \
(norm.cdf(W/2 + R, loc=0, scale=sigma_x) -
norm.cdf(-W/2 - R, loc=0, scale=sigma_x))
# 深度条件的集成
prob_vertical = norm.cdf(z_max, loc=h0, scale=sigma_z) - \
norm.cdf(z_min, loc=h0, scale=sigma_z)
return prob_horizontal * prob_vertical
# 见完整版
问题三
第三个问题是关于投掷多枚航空深弹以增强杀伤效果。具体来说,问题如下:
问题 3:
由于单枚深弹命中率较低,为了增强杀伤效果,通常需要投掷多枚深弹。若一架反潜飞机可携带 9 枚航空深弹,所有深弹的定深引信引爆深度均相同,投弹落点在平面上呈阵列形状。请设计投弹方案(包括定深引信引爆深度,以及投弹落点之间的平面间隔),使得投弹命中(指至少一枚深弹命中潜艇)的概率最大。
该问题要求根据特定参数设计一套投弹方案,以最优化命中潜艇的概率。
要解决问题 3,我们首先需要定义一些数学符号和假设条件:
-
潜艇模型:
- 潜艇的尺寸为长 100 m,宽 20 m,高 25 m。
- 潜艇的实际深度 Z Z Z 服从单边截尾正态分布,均值为 150 m,标准差为 40 m,最小值为 120 m。
-
深弹模型:
- 每枚深弹的杀伤半径为 20 m。
- 深弹的定深引信引爆深度 D D D,该值需要被优化。
-
投弹数组:
- 反潜飞机可携带 9 枚深弹,投弹落点在二维平面上呈阵列分布。
- 设相邻两个投弹落点之间的平面间隔为
S
S
S。
数学建模
我们定义:
- 潜艇在平面上的有效范围为矩形区域,边界为
- X m i n = − 50 X_{min} = -50 Xmin=−50 m, X m a x = 50 X_{max} = 50 Xmax=50 m(潜艇长度的一半)
- Y m i n = − 10 Y_{min} = -10 Ymin=−10 m, Y m a x = 10 Y_{max} = 10 Ymax=10 m(潜艇宽度的一半)
1. 深弹命中条件
依赖于深弹的投放位置 ( X i , Y i ) (X_i, Y_i) (Xi,Yi):
- 引爆深度
d
d
d 需要满足以下条件:
- 如果 D < Z + 25 D < Z + 25 D<Z+25,则深弹需要在潜艇上表面下方引爆。
- 如果 D ≥ Z + 25 D \geq Z + 25 D≥Z+25,则深弹需要在潜艇下表面上方引爆,同时需要潜艇在杀伤范围内。
2. 投弹数组模型
考虑投弹的落点构成一个
3
×
3
3 \times 3
3×3 的矩阵,落点分别为:
(
X
i
,
Y
j
)
=
(
−
S
,
−
S
)
,
(
−
S
,
0
)
,
(
−
S
,
S
)
,
(
0
,
−
S
)
,
(
0
,
0
)
,
(
0
,
S
)
,
(
S
,
−
S
)
,
(
S
,
0
)
,
(
S
,
S
)
(X_i, Y_j) = \left(-S, -S\right), \left(-S, 0\right), \left(-S, S\right), \left(0, -S\right), \left(0, 0\right), \left(0, S\right), \left(S, -S\right), \left(S, 0\right), \left(S, S\right)
(Xi,Yj)=(−S,−S),(−S,0),(−S,S),(0,−S),(0,0),(0,S),(S,−S),(S,0),(S,S)
其中
i
,
j
∈
{
0
,
1
,
2
}
i, j \in \{0, 1, 2\}
i,j∈{0,1,2}。
3. 命中概率计算
设 p i p_i pi 为深弹 i i i 的命中概率。命中概率的计算考虑不同情况下的状态。设 Z Z Z 的分布为:
Z ∼ N ( 150 , 4 0 2 ) 且有截尾 ( 120 , + ∞ ) Z \sim N(150, 40^2) \text{ 且有截尾} \; (120, +\infty) Z∼N(150,402) 且有截尾(120,+∞)
- 如果取定深引信引爆深度 D D D,我们可以计算命中概率 p i p_i pi:
p i = P ( M ) = P ( 潜艇在深弹杀伤范围内 ) p_i = P(M) = P \left(\text{潜艇在深弹杀伤范围内}\right) pi=P(M)=P(潜艇在深弹杀伤范围内)
结合深弹杀伤范围
R
R
R 的条件,可以通过整合
Z
Z
Z 的分布来求得:
p
i
=
{
∫
Z
−
25
+
D
f
Z
(
z
)
d
z
if
D
<
Z
+
25
∫
Z
+
D
f
Z
(
z
)
d
z
if
D
≥
Z
+
25
p_i = \begin{cases} \int_{Z-25}^{+D} f_Z(z) dz & \text{if } D < Z + 25 \\ \int_{Z}^{+D} f_Z(z) dz & \text{if } D \geq Z + 25 \end{cases}
pi={∫Z−25+DfZ(z)dz∫Z+DfZ(z)dzif D<Z+25if D≥Z+25
4. 总命中概率
由此,至少有一枚深弹命中概率为:
P
(
至少一个命中
)
=
1
−
∏
i
=
1
9
(
1
−
p
i
)
P(\text{至少一个命中}) = 1 - \prod_{i=1}^{9} (1 - p_i)
P(至少一个命中)=1−i=1∏9(1−pi)
5. 优化方案
为了使总命中概率最大化,我们需要针对引爆深度 D D D 和间隔 S S S 优化:
- 优化 D D D ,一般选定在潜艇深度均值附近。
- 通过仿真或者数值优化的方法来找出最佳间隔 S S S。
这是一个综合的优化问题,可以通过粒子群优化算法(PSO)或遗传算法(GA)等方法施行。
结论
通过构建深弹投放阵列的模型,并考虑潜艇的深度和投弹成功的范围,利用概率计算方法能够得出最佳的投弹方案以最大化命中概率。最终结果会依赖于具体的优化策略和运行条件。
为了解决问题3,我们将设计一个投弹方案,以最大化至少一枚深弹命中潜艇的概率。首先,我们先回顾一下二维空间中落点与潜艇之间的关系,并根据已知参数进行设计。
设定和参数
- 潜艇尺寸:长 L = 100 L = 100 L=100 m,宽 W = 20 W = 20 W=20 m,高 H = 25 H = 25 H=25 m。
- 潜艇中心位置的深度定位值: h 0 = 150 h_0 = 150 h0=150 m。
- 深弹杀伤半径: R = 20 R = 20 R=20 m。
- 潜艇深度定位标准差: σ z = 40 \sigma_z = 40 σz=40 m,实际深度最小值 l = 120 l = 120 l=120 m。
- 投掷深弹数量: N = 9 N = 9 N=9 枚。
投弹落点和引爆深度设计
我们设置多枚深弹的落点在平面上均匀分布,以创建正方形阵列。设 d d d 为投弹落点之间的平面间隔,落点为 ( x i , y j ) (x_i, y_j) (xi,yj),满足以下条件:
- 投弹落点在一个边长为 a = d × ( N x − 1 ) a = d \times (N_x-1) a=d×(Nx−1) 的正方形区域内,其中 N x = N y = N = 3 N_x = N_y=\sqrt{N} = 3 Nx=Ny=N=3(假设以 3 × 3 3 \times 3 3×3 样式配置深弹)。
- 定深引信引爆深度 h d h_d hd 需要在潜艇的上边界和下边界之间选定。
投弹命中概率模型
命中条件
- 对于触发引信:深弹落点在潜艇的范围内,并且 h d < h 0 + H / 2 h_d < h_0 + H/2 hd<h0+H/2。
- 对于定深引信:深弹落点在潜艇范围内,并且 h d > h 0 − H / 2 h_d > h_0 - H/2 hd>h0−H/2 同时潜艇在杀伤半径内。
计算命中概率
设目标落点的深度 Z Z Z 服从截尾正态分布 N ( h 0 , σ z , l ) N(h_0, \sigma_z, l) N(h0,σz,l),其概率密度函数为:
f Z ( z ) = 1 σ z ⋅ ϕ ( z − h 0 σ z ) ⋅ 1 1 − Φ ( l − h 0 σ z ) f_{Z}(z) = \frac{1}{\sigma_z} \cdot \phi\left(\frac{z - h_0}{\sigma_z}\right) \cdot \frac{1}{1 - \Phi\left(\frac{l - h_0}{\sigma_z}\right)} fZ(z)=σz1⋅ϕ(σzz−h0)⋅1−Φ(σzl−h0)1
其中 ϕ \phi ϕ 和 Φ \Phi Φ 是标准正态分布的密度函数和分布函数。
投弹的命中概率 P h i t P_hit Phit 为至少一枚深弹命中潜艇的概率,可以对9枚深弹的命中概率进行计算,如下所示:
P hit, total = 1 − ( 1 − P hit, single ) N P_{\text{hit, total}} = 1 - (1 - P_{\text{hit, single}})^{N} Phit, total=1−(1−Phit, single)N
其中 P hit, single P_{\text{hit, single}} Phit, single 是单枚深弹的命中概率,可以通过以下积分计算:
P hit, single = P ( A ) + P ( B ) P_{\text{hit, single}} = P(A) + P(B) Phit, single=P(A)+P(B)
- P ( A ) P(A) P(A):触发引信爆炸的情况
- P ( B ) P(B) P(B):定深引信爆炸的情况
最优引爆深度的选择
选择 h d h_d hd 以最大化 P hit, single P_{\text{hit, single}} Phit, single。这可通过数值方法实现,确定 h d h_d hd 范围为 ( h 0 − H / 2 , h 0 + H / 2 ) (h_0 - H/2, h_0 + H/2) (h0−H/2,h0+H/2),并为每个深度计算对应的 P hit, single P_{\text{hit, single}} Phit, single。
结论
需要通过模拟或数值积分来找到合适的 d d d 和 h d h_d hd,使得 P hit, total P_{\text{hit, total}} Phit, total 达到最大值。最终设计的方案将包括选择合适的阵列间隔 d d d 和最优深度 h d h_d hd 以最大化至少一枚深弹命中潜艇的概率。
这种设计考虑了深弹的空间分布和潜艇深度的不确定性,将通过数值仿真或优化算法来得到最佳配置。
对于问题3,我们需要设计一个投弹方案,以最大化至少一枚深弹命中潜艇的概率。首先,假设我们将9枚深弹按照正方形阵列投掷,每个深弹之间的平面间隔为
d
d
d。我们需要同时考虑定深引信引爆深度
h
d
h_d
hd,并将其设置为一个优化参数。
1. 投弹落点位置
假设潜艇的实际位置为 ( X , Y , Z ) (X,Y,Z) (X,Y,Z),则投弹落点的设置为:
- 落点阵列中心指定在潜艇的平面坐标
(
X
,
Y
)
(X,Y)
(X,Y),九枚深弹的落点可表示为
落点坐标 = ( X + i ⋅ d , Y + j ⋅ d ) , i , j ∈ { 0 , 1 , 2 } \text{落点坐标} = \left( X + i \cdot d, Y + j \cdot d \right), \quad i,j \in \{0, 1, 2\} 落点坐标=(X+i⋅d,Y+j⋅d),i,j∈{0,1,2}
其中, i , j i,j i,j分别表示深弹在 x x x和 y y y方向的偏移量, d d d为深弹间的距离。
2. 命中条件
要计算命中概率,需考虑每个深弹的命中条件。命中条件依旧遵循问题2中定义的命中标准,分为触发引信和定深引信:
-
触发引信命中条件:
- 深弹落点在潜艇投影平面范围内,且引爆深度在潜艇上表面下方。
-
定深引信命中条件:
- 深弹落点在潜艇投影平面范围内,且引爆深度在潜艇上表面上方,并且潜艇在深弹杀伤半径内。
-
外部命中条件:
- 深弹落点在潜艇投影范围外,深弹引爆时潜艇在杀伤范围内。
3. 最大命中概率的表达式
将单枚深弹的命中概率
P
hit
(
d
,
h
d
)
P_{\text{hit}}(d, h_d)
Phit(d,hd)定义为命中概率,我们利用独立性确定9枚深弹至少有一枚命中的概率:
P
hit, at least
=
1
−
(
1
−
P
hit
(
d
,
h
d
)
)
9
P_{\text{hit, at least}} = 1 - (1 - P_{\text{hit}}(d, h_d))^9
Phit, at least=1−(1−Phit(d,hd))9
4. 计算命中概率 P hit ( d , h d ) P_{\text{hit}}(d, h_d) Phit(d,hd)
首先我们要分析传感器误差对每个成分的影响。假设潜艇的深度为 h t r u e h_{true} htrue,深弹的随机水平定位误差分布为正态分布 N ( 0 , σ 2 ) N(0, \sigma^2) N(0,σ2),深度误差为截尾分布 N ( h 0 , σ z 2 , l ) N(h_0, \sigma_z^2, l) N(h0,σz2,l),这样我们可以得到命中概率的量化表达。
将一个深弹的命中概率表示为:
P
hit
(
d
,
h
d
)
=
P
(
深弹落点在潜艇的范围内与深度符合
)
P_{\text{hit}}(d, h_d) = P\left( \text{深弹落点在潜艇的范围内} \text{与} \text{深度符合} \right)
Phit(d,hd)=P(深弹落点在潜艇的范围内与深度符合)
5. 定深引信引爆深度和间隔 d d d的优化
对 h d h_d hd和 d d d进行优化以最大化 P hit, at least P_{\text{hit, at least}} Phit, at least。进行数值模拟或解析优化(例如使用梯度上升法或遗传算法)可以实现以下目标:
{ maximize P hit, at least subject to d and h d \begin{cases} \text{maximize } P_{\text{hit, at least}} \\ \text{subject to } d \text{ and } h_d \end{cases} {maximize Phit, at leastsubject to d and hd
6. 总结
综上所述,我们通过合理的布阵方式与调节引爆深度实现深弹命中潜艇的最大化。具体的数值优化方案可以根据实际计算需求进行调整。
下面是一个用于解决问题 3 的简单 Python 代码示例,它会计算在给定参数下,设计的投弹方案(包括定深引信引爆深度和投弹落点之间的平面间隔)以最大化命中潜艇的概率。通过考虑投弹落点的阵列布局,可以优化命中概率。
import numpy as np
from scipy.stats import norm
# 参数设置
submarine_length = 100 # 潜艇长(m)
submarine_width = 20 # 潜艇宽(m)
submarine_height = 25 # 潜艇高(m)
kill_radius = 20 # 深弹杀伤半径(m)
initial_depth = 150 # 潜艇中心位置的深度定位值(m)
z_std_dev = 40 # 深度定位标准差(m)
min_depth = 120 # 潜艇中心位置实际深度的最小值(m)
# 计算命中概率
def hit_probability(x_center, y_center, depth_trigger):
# 潜艇上表面深度
submarine_top = initial_depth + submarine_height / 2
submarine_bottom = initial_depth - submarine_height / 2
# 水平定位误差
x_error = norm(0, 120).rvs(10000)
y_error = norm(0, 120).rvs(10000)
# 随机生成潜艇位置
submarine_x = np.random.normal(0, 120, 10000)
submarine_y = np.random.normal(0, 120, 10000)
# 转换为绝对坐标
x_positions = submarine_x + x_error
y_positions = submarine_y + y_error
# 深度误差(正侧位置)
z_positions = np.clip(norm.rvs(initial_depth, z_std_dev, 10000), min_depth, None)
hits = 0
for x, y, z in zip(x_positions, y_positions, z_positions):
# 检查触发引信的命中条件
if (x_center - submarine_length / 2 <= x <= x_center + submarine_length / 2 and
y_center - submarine_width / 2 <= y <= y_center + submarine_width / 2):
if (depth_trigger < z): # 引爆深度在上方
hits += 1
elif (x_center - submarine_length / 2 <= x <= x_center + submarine_length / 2 and
y_center - submarine_width / 2 <= y <= y_center + submarine_width / 2):
if (depth_trigger >= z): # 引爆深度在下方
hits += 1
else:
if (depth_trigger >= z): # 引爆深度在外部
dist = np.sqrt((x - 0)**2 + (y - 0)**2)
if dist <= kill_radius:
hits += 1
probability = hits / 10000
return probability
# 设计投弹方案
def design_attack_pattern(depth_trigger, spacing):
# 使用一定的落点间距进行阵列设计
x_centers = np.arange(-spacing, spacing * 9, spacing)
y_centers = np.arange(-spacing, spacing * 9, spacing)
max_probability = 0
更多内容可以点击下方名片详细了解,让小鹿学长带你冲刺国赛夺奖之路!
敬请期待我们的努力所做出的工作!记得关注 鹿鹿学长呀!
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)