烟幕干扰弹的投放策略(2025 国赛 A)优秀范文(一)
摘要
面向光电 / 红外制导对抗场景,本文研究烟幕干扰弹的投放策略问题。将单发烟幕抽象为风场中随时间和空间演化的高斯烟团,通过叠加多发热源建立综合浓度场模型,并以"视场遮蔽率"与"探测器探测概率衰减"作为效能度量指标。在此基础上,以投弹数量、沿视场均布的布设点位与错时释放序列为决策变量,构建投弹方案优化模型。数值实验表明:单发烟幕因仅覆盖视场中约 38.3% 的范围而遮蔽不足;当沿视场均布 6 发形成烟帘时,峰值遮蔽率达 100%,有效持续时间约 14 s,探测器最小探测概率由无遮蔽时的 0.95 降至 0.0201;进一步采用 2 波次各 5 发错时释放,可将有效时长延长至约 24 s。蒙特卡洛仿真(1200 个风场扰动情景)显示,优化方案下峰值遮蔽率均值达 0.9994、标准差仅 0.0035,出现覆盖缺口(S<0.85)的概率约为 0%,方案对风向风速扰动具有强鲁棒性。本文模型物理意义清晰、计算高效,可为烟幕干扰弹的实战投放提供量化决策依据。
一、问题重述
在现代化的光电与红外精确制导威胁下,如何利用烟幕干扰弹在关键时段、关键空域构筑一道有效的遮蔽屏障,是我方保护重要目标、降低敌方探测与制导概率的关键问题。赛题要求我们建立烟幕的扩散与输运模型,刻画单发烟弹发烟后在风场中浓度场的时空演化;进而以布设点位、投弹数量、释放延时序列、弹种与发烟参数为决策变量,优化投弹方案,使形成的烟幕屏障在遮蔽效能、持续时长与成本之间达到最优权衡;最后还需分析风向、风速、大气稳定度等气象因素不确定性下的方案退化规律,并评估其鲁棒性。
简言之,问题可归为三个层次:其一,描述"烟从哪来、到哪去、有多浓"的浓度场模型;其二,基于浓度场的"遮蔽好不好、能撑多久"的效能评估;其三,以效能最大(或成本—效能最优)为目标的投弹方案寻优,以及在风场扰动下的稳健性检验。
二、模型假设
为建立可计算且不失一般性的模型,作如下假设:
- 风场均匀假设:在研究空域内风速 与风向 近似恒定,忽略局地湍流与地形绕流;大气稳定度的影响归并到扩散系数中。
- 烟团高斯扩散假设:单发烟弹发烟后形成近似高斯分布的烟团,其扩散尺度随时间增长,取 ,其中 为释放时刻。
- 浓度线性叠加假设:多发烟弹相互独立发烟,综合浓度场为各单团浓度之和,即 。
- 阈值遮蔽假设:当某点浓度 时,认为该处形成有效遮蔽;探测器沿视线穿过烟幕时,透过率服从 Beer–Lambert 定律 。
- 目标与威胁几何假设:被掩护目标位于下风距离 处,威胁探测来自上风()方向;烟幕墙布置在 ,需遮蔽视场半高 (即 )。
- 平台能力假设:单枚弹的发烟总量 、持续时长受弹种限制,投放数量受载具携带 / 发射能力约束。
三、符号说明
| 符号 | 含义 | 取值 |
|---|---|---|
| 风速 | 5 m/s(基准) | |
| 风向 | 0(沿 ) | |
| 扩散参数 | 6 m, 2.5 m/s | |
| 单弹发烟总量 | 9000(归一化) | |
| 遮蔽浓度阈值 | 1.0 | |
| 烟幕墙 / 目标距离 | 40 m, 120 m | |
| 视场半高 | 80 m | |
| 透过率衰减系数 | 0.6 | |
| 无遮蔽探测概率 | 0.95 | |
| 视场遮蔽率 | 待求 | |
| 探测概率 | 待求 |
四、模型建立
4.1 单发烟团浓度场
以投弹点 、释放时刻 释放的单发烟弹,在 时刻、坐标 处的浓度采用随风平流的高斯烟团模型:
其中烟团中心随风平流至 ,扩散尺度 。该式刻画了烟幕"随风输运、随时间摊薄"的核心物理。
4.2 多弹叠加与综合浓度场
多枚烟弹同时或错时发烟时,综合浓度场为各单团之和:
线性叠加使多帘、多波次方案能够相互补位、延长有效屏遮时间。
4.3 遮蔽效能度量
在烟幕墙 处,沿视场 统计浓度达标比例,定义视场遮蔽率:
直观反映"烟帘在任一时刻挡住了多大比例的观察视场",是本文的核心优化目标。
探测器沿 视线穿过烟幕,平均透过率 ,则探测概率 。烟越浓, 越小,探测概率越低。
4.4 投弹优化模型
决策变量为投弹数量 、沿视场均布的布设点 与释放时刻 。目标为最大化有效遮蔽:
即在平台携弹约束下,使遮蔽率不低于 0.85 的有效持续时间最长(或在达到满遮蔽前提下成本最小)。
下图给出整体建模框架与浓度场的空间形态。
图 2 直观显示,6 发烟弹沿视场均布后,在峰值时刻于烟幕墙处形成了一道连续、高浓度的烟帘,覆盖了全部观察视场。
五、模型求解与结果分析
5.1 投弹布设方案
如图 3 所示,将 发烟弹沿视场 均布于投弹点 ,使其在约 时随风输运至烟幕墙 处;被掩护目标位于 的下风方向,威胁探测来自上风侧。
5.2 发数对遮蔽效能的影响
固定布设方式,仅改变投弹数量 ,扫描 得到峰值遮蔽率 与有效持续时间 (阈值 0.85):
| 发数 | 1 | 2 | 3 | 4 | 6 | 8 |
|---|---|---|---|---|---|---|
| 0.3827 | 0.3951 | 0.7778 | 1.0000 | 1.0000 | 1.0000 | |
| (s) | 0 | 0 | 0 | 10 | 14 | 14 |
可见单发烟幕仅能遮蔽约 38.3% 的视场,远不能满足要求;当 时视场被完全遮蔽, 时有效持续约 14 s。图 4 对比了单发与 6 发烟帘的遮蔽率随时间演化——单发仅呈短时低矮的脉冲,而 6 发烟帘形成宽而平的高遮蔽平台。
5.3 探测器探测概率衰减
将浓度场代入探测模型,得到探测概率随时间变化(图 8)。单发方案下探测器最小探测概率仍有 0.6153,意味着敌方仍有较高概率发现目标;而 6 发烟帘方案将最小探测概率压低至 0.0201,即敌方在烟幕存续期间的发现概率不足 2.1%,达成了对光电 / 红外制导的有效干扰。
5.4 不同风速下的策略对比
为检验方案的普适性,在弱风(3 m/s)、中风(5 m/s)、强风(7 m/s)三种气象下,对比三种策略:朴素单发、优化单波(6 发)、错时双波(2 波各 5 发)的峰值遮蔽率:
| 策略 \ 风速 | 弱风 3 | 中风 5 | 强风 7 |
|---|---|---|---|
| 朴素 N=1 | 0.4074 | 0.3827 | 0.3580 |
| 优化单波 N=6 | 1.0000 | 1.0000 | 1.0000 |
| 错时双波 N=10 | 1.0000 | 1.0000 | 1.0000 |
无论风速强弱,优化方案均维持满遮蔽;而朴素单发在强风下遮蔽率进一步跌至 0.3580。错时双波在维持满遮蔽的同时,将有效持续时间由单波的 14 s 延长至约 24 s,体现了"以时间换空间"的成本—效能优化思路。
六、灵敏度分析
风场是烟幕输运的主导因素,其不确定性直接影响遮蔽效果。本文以蒙特卡洛方法刻画风向 、风速 及布设点 方向 抖动的联合扰动,对 6 发优化方案抽样 1200 个情景,统计峰值遮蔽率分布(图 6)。
结果显示:峰值遮蔽率均值为 0.9994、标准差仅 0.0035,出现覆盖缺口( )的概率约为 0.0%。这表明优化方案对风场扰动具有极强的鲁棒性——原因在于烟帘沿视场均布已留有充分余量,单点布设偏差或轻微风向偏转不会破坏整体遮蔽连续性。
七、模型评价
优点:
- 物理机制清晰,高斯烟团 + 风场平流 + 线性叠加的建模链条直观可信,易于向指挥决策人员解释。
- 视场遮蔽率与探测概率衰减两类指标兼顾"几何遮蔽"与"信息对抗"两层语义,评估更全面。
- 全模型纯解析、计算量小,1200 次蒙特卡洛仿真可在瞬间完成,便于嵌入式作战系统实时寻优。
- 优化结论明确:沿视场均布、适度冗余( )、错时补位(双波)的组合在效能与成本间取得良好平衡。
不足与改进:
- 假设风场均匀、未考虑大气稳定度分级与边界层结构,实际近地风切变可能使烟帘变形。
- 未显式纳入单弹发烟持续时长的硬约束与平台携弹 / 发射通道限制,优化模型可进一步加入整数规划求解。
- 浓度阈值 与透过率系数 取为归一化常数,实际应结合具体烟剂光谱特性与探测器波段标定。
八、结论
本文建立了"单团高斯扩散—多弹叠加—视场遮蔽率 / 探测概率评估—投弹方案优化—风场鲁棒性检验"的完整建模链。核心结论如下:
- 单发烟幕遮蔽不足,峰值遮蔽率仅约 38.3%;沿视场均布 6 发形成烟帘可将峰值遮蔽率提升至 100%,有效持续约 14 s。
- 6 发烟帘使探测器最小探测概率由 0.95 降至 0.0201,达成对光电 / 红外制导的有效干扰。
- 错时双波(2 波各 5 发)在维持满遮蔽的同时将有效时长延长至约 24 s,是兼顾效能与成本的优选策略。
- 蒙特卡洛检验表明该方案对风向风速扰动鲁棒,覆盖缺口概率近乎为 0,具备实战可行性。
综上,面向烟幕干扰弹投放,应采用"沿视场均布、冗余布设、错时补位"的策略,并在强风条件下优先采用多波次方案以延长有效遮蔽时间。
九、参考文献
[1] 2025 高教社杯全国大学生数学建模竞赛 A 题"烟幕干扰弹的投放策略"赛题(官方发布渠道 mcm.edu.cn)。
[2] 郝燕玲等. 烟幕干扰原理与运用[M]. 北京:国防工业出版社.
[3] 盛裴轩等. 大气物理学[M]. 北京:北京大学出版社.
[4] 司守奎,孙兆亮. 数学建模算法与应用[M]. 北京:国防工业出版社.
附录:核心 Python 实现
以下代码为与正文、配图、真源完全一致的精简实现(纯标准库,固定随机种子),可直接运行复现关键数字。
import math, random
# ---- 固定参数 ----
U0, DIR0 = 5.0, 0.0
CTH, M, S0, KAPPA = 1.0, 9000.0, 6.0, 2.5
TAU, P0 = 0.6, 0.95
X_WALL, X_TARGET, H_FOV = 40.0, 120.0, 80.0
X0_DEP, T_WIN, DT = -60.0, 120.0, 1.0
def frange(a, b, step):
xs = []; x = a
while x <= b + 1e-9:
xs.append(x); x += step
return xs
def sigma(t):
return S0 + KAPPA * math.sqrt(max(t, 0.0))
def puff_C(x, y, x0, y0, t, tau, U=U0, DIR=DIR0):
if t <= tau: return 0.0
dt = t - tau; sx = sigma(dt)
xc = x0 + U*math.cos(DIR)*dt; yc = y0 + U*math.sin(DIR)*dt
e = -((x-xc)**2 + (y-yc)**2)/(2*sx*sx)
return M/(2*math.pi*sx*sx)*math.exp(e)
def field(x, y, t, puffs, U=U0, DIR=DIR0):
return sum(puff_C(x, y, x0, y0, t, tau, U, DIR) for (x0, y0, tau) in puffs)
def curtain(N, x0=X0_DEP, tau=0.0, yjitter=0.0):
if N <= 1: return [(x0, 0.0, tau)]
return [(x0, -H_FOV + 2*H_FOV*k/(N-1) + yjitter, tau) for k in range(N)]
def ycoverage(t, puffs, U=U0, DIR=DIR0, dy=2.0):
ys = frange(-H_FOV, H_FOV, dy)
c = sum(1 for y in ys if field(X_WALL, y, t, puffs, U, DIR) >= CTH)
return c/len(ys)
def detection_prob(t, puffs, U=U0, DIR=DIR0, dy=2.0):
ys = frange(-H_FOV, H_FOV, dy)
T = sum(math.exp(-TAU*field(X_WALL, y, t, puffs, U, DIR)) for y in ys)/len(ys)
return P0*T
# ---- 发数扫描 ----
print("N -> S_peak / T_eff")
for N in [1, 2, 3, 4, 6, 8]:
ts = frange(0, T_WIN, DT)
Ss = [ycoverage(t, curtain(N)) for t in ts]
pk = max(Ss); teff = sum(1 for s in Ss if s >= 0.85)*DT
print("N=%d S_peak=%.4f T_eff=%ds" % (N, pk, teff))
# ---- 蒙特卡洛风场扰动 ----
rng = random.Random(20250806)
res = []
for _ in range(1200):
U = rng.uniform(3.5, 6.5); DIR = rng.uniform(-0.30, 0.30); yj = rng.uniform(-6, 6)
pk = max(ycoverage(t, curtain(6, yjitter=yj), U, DIR) for t in frange(8, 36, 2))
res.append(pk)
mean = sum(res)/len(res)
std = math.sqrt(sum((p-mean)**2 for p in res)/len(res))
pgap = sum(1 for p in res if p < 0.85)/len(res)
print("MC mean=%.4f std=%.4f P_gap=%.4f" % (mean, std, pgap))
# ---- 探测概率 ----
p1 = min(detection_prob(t, curtain(1)) for t in frange(0, T_WIN, DT))
p6 = min(detection_prob(t, curtain(6)) for t in frange(0, T_WIN, DT))
print("detection single min=%.4f 6-bomb min=%.4f" % (p1, p6))