2025年高教社杯全国大学生数学建模竞赛-【A题】烟幕干扰弹的投放策略 论文+可运行代码+结果
接着,分析烟幕云团的有效状态:起爆后形成球状云团,以3m/s匀速下沉,中心10m范围内20s内有效,因此需明确云团在不同时刻的空间范围(中心坐标随时间变化,半径 10m)3。变量包括每枚弹对应的无人机飞行方向(可相同或不同,但无人机航向一旦确定不再调整,因此需统一飞行方向)、速度 v(全程不变)、投放时刻 t1、t2、t3(t2≥t1+1,t3≥t2+1)、各弹起爆延迟时间 Δt1、Δt2、Δt3
1.1 问题背景
本文研究围绕烟幕干扰弹的投放策略展开,利用无人机挂载烟幕干扰弹,在来袭导弹和保护目标之间形成烟幕遮蔽以干扰敌方导弹。烟幕干扰弹起爆后形成球状烟幕云团,以 3m/s 速度匀速下沉,其中心 10m 范围内在起爆 20s 内可提供有效遮蔽。来袭武器为 3 枚空地导弹(M1、M2、M3),飞行速度 300m/s,分别位于特定初始位置;另有 5 架无人机(FY1-FY5),受领任务后可调整飞行方向,以 70-140m/s 的速度等高度匀速直线飞行,每架无人机投放两枚烟幕干扰弹至少间隔 1s。真目标为半径 7m、高 10m 的圆柱形固定目标,其下底面圆心为 (0, 200, 0),假目标为原点(xy 平面)。
2 问题分析
2.1 问题1分析
问题 1 是在给定具体投放条件下计算有效遮蔽时长,核心在于明确烟幕云团、导弹及真目标的时空关系。首先,需确定无人机 FY1 的运动轨迹:受领任务后以 120m/s 朝假目标(原点)飞行,1.5s 后的投放点坐标可通过初始位置(17800, 0,1800)与匀速直线运动公式计算得出12。其次,烟幕干扰弹从投放至起爆间隔3.6s,此阶段仅受重力作用(题目未提及水平速度,默认投放后无水平运动),需确定起爆时的位置(投放点垂直下方,下落距离由重力加速度计算,若简化可忽略下落高度或按自由落体公式推导)3。接着,分析烟幕云团的有效状态:起爆后形成球状云团,以3m/s匀速下沉,中心10m范围内20s内有效,因此需明确云团在不同时刻的空间范围(中心坐标随时间变化,半径 10m)3。同时,追踪导弹 M1 的飞行轨迹:初始位置(20000, 0, 2000),速度 300m/s 直指假目标(原点),需计算其在不同时刻的位置1。有效遮蔽的判定标准为:某一时刻,烟幕云团的范围同时覆盖真目标(0, 200, 0)及导弹 M1 的位置,且该时刻处于云团起爆后的 20s 内。通过建立时间与各物体位置的函数关系,求解满足上述条件的时间区间,区间长度即为有效遮蔽时长。
2.2 问题2分析
问题 2 需优化 FY1 的各项参数以最大化对 M1 的遮蔽时间,属于单变量优化问题。首先明确优化变量:无人机的飞行方向(可设为与 x轴正向夹角 θ)、飞行速度 v(70≤v≤140m/s)、投放时刻 t1(受领任务后经过的时间)、起爆延迟时间 Δt(投放后至起爆的时间)4。投放点坐标由无人机初始位置、飞行方向、速度及 t1 共同决定;起爆点坐标需考虑干扰弹投放后的运动(重力作用下的下落,可设竖直方向加速度为 g,水平方向速度为 0)。目标函数为有效遮蔽时间,其计算逻辑同问题 1,即烟幕云团有效范围内同时覆盖真目标与导弹 M1 的时间区间长度,且需在云团起爆后 20s 内3。约束条件包括无人机速度范围、导弹与无人机的运动学规律。求解可采用数值优化方法:先建立各变量与目标函数的数学关系,再通过遍历或梯度下降等算法搜索最优参数组合,使目标函数(遮蔽时间)达到最大值。
2.3 问题3分析
问题 3 扩展为 FY1 投放 3 枚干扰弹,需协调多枚弹的投放策略以延长总遮蔽时间(遮蔽可不连续)。核心在于合理分配各枚弹的投放与起爆参数,避免时间重叠浪费或出现遮蔽空白。首先,需满足无人机投放间隔要求:任意两枚弹投放时间至少相差 1s3。变量包括每枚弹对应的无人机飞行方向(可相同或不同,但无人机航向一旦确定不再调整,因此需统一飞行方向)、速度 v(全程不变)、投放时刻 t1、t2、t3(t2≥t1+1,t3≥t2+1)、各弹起爆延迟时间 Δt1、Δt2、Δt34。每枚弹的有效遮蔽时间计算同单枚弹逻辑,总遮蔽时间为各枚弹有效遮蔽区间的并集长度。优化目标是最大化该并集长度,需考虑各枚弹的遮蔽时段互补性,例如通过调整投放与起爆时间,使前一枚弹的有效遮蔽结束后,后一枚弹的有效遮蔽及时开始。求解时可先固定无人机速度与方向,优化各枚弹的投放与起爆时间;再遍历不同速度与方向,寻找全局最优策略。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
# 强制设置中文字体(确保显示)
plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]
plt.rcParams["axes.unicode_minus"] = False
# 核心参数
fy1_init = np.array([17800, 0, 1800]) # 无人机初始位置
m1_init = np.array([20000, 0, 2000]) # 导弹初始位置
target = np.array([0, 200, 0]) # 真目标位置
v_fy = 120 # 无人机速度(m/s)
v_m = 300 # 导弹速度(m/s)
v_smoke = 3 # 烟幕下沉速度(m/s)
t_release = 1.5 # 投放时间(s)
t_delay = 3.6 # 起爆延迟(s)
t_detonate = t_release + t_delay # 起爆时间(s)
smoke_valid = 20 # 有效时长(s)
g = 9.8 # 重力加速度(m/s²)
# 计算投放点和起爆点
fy_direction = np.array([-1, 0, 0]) # 指向原点
release_pos = fy1_init + v_fy * t_release * fy_direction
fall_dist = 0.5 * g * t_delay**2
detonate_pos = np.array([release_pos[0], release_pos[1], release_pos[2] - fall_dist])
# 位置函数
def get_fy_pos(t):
return fy1_init + v_fy * min(t, t_release) * fy_direction
def get_missile_pos(t):
.....................
..............
通过网盘分享的文件:2025国赛资料
链接: https://pan.baidu.com/s/1WvuRcI341Tr9bwc154LTkQ 提取码: jwrj
更多推荐
所有评论(0)