【数学建模】用代码搞定无人机烟幕:怎么挡导弹最久?

【数学建模】用代码搞定无人机烟幕:怎么挡导弹最久?
前言:欢迎各位光临本博客,这里小编带你直接手撕**,文章并不复杂,愿诸君耐其心性,忘却杂尘,道有所长!!!!

**🔥个人主页:IF’Maxue-ZEEKLOG博客

🎬作者简介:C++研发方向学习者

📖**个人专栏:
《C语言》
《C++深度学习》
《Linux》
《数据结构》
《数学建模》**

⭐️人生格言:生活是默默的坚持,毅力是永久的享受。不破不立,远方请直行!

文章目录

平时看军事片里的烟幕遮蔽,其实背后藏着不少参数讲究——比如无人机往哪个方向飞、飞多快、啥时候投烟幕、烟幕啥时候爆,这些都会影响“能挡住导弹多久”。我写了一段代码专门解决这个问题,能自动算出最优参数,还能直接看结果,今天就用大白话跟大家拆解清楚。

一、先搞懂:我们要解决啥问题?

简单说,我们的目标是:让3架无人机投的烟幕,在导弹飞到假目标前,“有效遮蔽时间”最长

先明确几个关键角色的初始设定(代码里main函数能直接改):

  • 导弹起点:[20000, 0, 2000](可以理解为x/y/z坐标,单位米)
  • 真目标位置:[0, 200, 0](我们要保护的目标)
  • 3架无人机起点:比如“FY1”从[17800, 0, 1800]出发,每架位置都能调

代码里用SmokeObscurationModel这个“模型类”,把这些初始信息装进去,后续所有计算都基于这个基础。

二、核心计算:代码怎么判断“烟幕有没有用”?

烟幕不是投了就有用,得算准“啥时候生效、生效多久、能不能覆盖导弹飞来的关键期”。代码里最核心的是calculate_effective_time方法,我拆成3步说:

1. 先算单个烟幕的“有效时间段”

每架无人机投烟幕,都要算2个时间点:

  • 烟幕生效时间:无人机飞了drop_time秒后投烟,烟幕再等blast_delay秒爆炸,所以生效时间= drop_time + blast_delay
  • 烟幕失效时间:烟幕爆炸后,有效时长是effective_duration(代码里设的20秒),所以失效时间= 生效时间 + 20秒

比如代码里这段,就是算单架无人机的烟幕时间段:

smoke_blast_time = drop_time + blast_delay # 生效时间 smoke_end_time = smoke_blast_time + self.effective_duration # 失效时间 intervals.append((smoke_blast_time, smoke_end_time))# 存成“(生效,失效)”的格式

2. 合并重叠的时间段(避免重复计算)

3架无人机的烟幕可能会“叠buff”——比如A烟幕10-15秒生效,B烟幕12-18秒生效,重叠的2秒不能算2次。

代码会把所有时间段排序,然后合并重叠部分:

intervals.sort()# 先按生效时间排序 merged =[intervals[0]]# 先拿第一个时间段当基础for current in intervals[1:]: last = merged[-1]if current[0]<= last[1]:# 如果当前时间段和上一个重叠 merged[-1]=(last[0],max(last[1], current[1]))# 合并成一个长时间段else: merged.append(current)# 不重叠就直接加进去

3. 只算“导弹到达前”的有效时间

烟幕再久,导弹都已经炸了也没用。所以要先算导弹飞到假目标的时间(missile_arrival_time方法):
“导弹飞的距离 ÷ 导弹速度(代码里设300m/s)”,比如从20000米外飞过来,大概要60多秒。

然后只算“烟幕时间段”和“导弹到达前”的交集:

total =0for interval in merged: start =max(0, interval[0])# 烟幕生效时间不能早于0 end =min(missile_arrival, interval[1])# 烟幕失效时间不能晚于导弹到达if start < end:# 只要有重叠,就加这段时间 total += end - start return total # 这就是最终的“有效遮蔽时间”

三、代码优化:加了2个实用功能,结果直接看

原来的代码跑起来看不到关键结果,我改了两处,用起来更方便:

1. 跑完直接显示“最优遮蔽时长”

代码里的GeneticOptimizer(遗传优化器),会像“试错进化”一样,不断调整无人机参数(方向、速度、投放时间、起爆延迟),找到最优解。

现在跑完会直接打印结果,比如:

# 优化器返回最优参数和对应时间 best_individual, best_time = optimizer.optimize()print(f"最优遮蔽时长:{best_time:.2f}秒")# 直接显示,比如“18.72秒”

2. 参数自动存到Excel,不用手动记

3架无人机的最优参数(比如FY1要朝30度飞、速度120m/s),会自动存到result2.xlsx里,打开就能看:

df = pd.DataFrame({'无人机ID':['FY1','FY2','FY3'],'方向角度(度)': best_individual[0::4],# 每4个参数对应1架无人机'飞行速度(m/s)': best_individual[1::4],'投放时间(s)': best_individual[2::4],'起爆延迟(s)': best_individual[3::4]}) df.to_excel('result2.xlsx', index=False)# 保存到Excel

四、怎么跑代码?看2个关键步骤

1. 先补全“遗传优化”的核心逻辑

代码里optimize方法有个小缺口——“选择、交叉、变异”这三步没写全(这是遗传算法的核心,用来“筛选好参数、生成新参数”)。补全示例可以参考:

# 补全选择:选效果好的参数留下 fitnesses =[self.evaluate(ind)for ind in population]# 按适应度(有效时间)排序,选前50% sorted_pop =sorted(zip(population, fitnesses), key=lambda x: x[1], reverse=True) selected =[ind for ind, _ in sorted_pop[:self.pop_size//2]]# 补全交叉:两个好参数“混合”出新品 offspring =[]for i inrange(0,len(selected),2): parent1 = selected[i] parent2 = selected[i+1]if i+1<len(selected)else parent1 # 随机选个位置交叉参数 cross_pos = random.randint(1,len(parent1)-1) child = parent1[:cross_pos]+ parent2[cross_pos:] offspring.append(child)# 补全变异:偶尔改个参数,避免“钻牛角尖”for ind in offspring:if random.random()<0.1:# 10%的变异概率 param_idx = random.randint(0,len(ind)-1) low, high = self.param_ranges[param_idx] ind[param_idx]= random.uniform(low, high)# 新种群 = 选出来的好参数 + 新生成的参数 population = selected + offspring 

2. 调参数平衡“速度”和“精度”

第一次跑可以先设小一点规模,避免等太久:

  • pop_size=50(每次试50组参数,默认150)
  • generations=50(试50轮,默认80)

比如改优化器初始化:

optimizer = GeneticOptimizer(model, pop_size=50, generations=50)

五、避坑提醒

  1. 方向角度要转弧度:代码里已经用np.radians(i_param)把“度”转成“弧度”(数学计算需要),不用自己再改;
  2. 运行时间可能长:如果参数设得大(比如150种群、80世代),建议用多进程加速(可以搜“Python多进程计算”);
  3. 先小规模测试:第一次跑先试pop_size=30generations=30,确认代码能跑通,再调大参数追求精度。

最后:跑出来的结果长这样

最优遮蔽时长:18.72秒 参数已保存到result2.xlsx 

打开Excel就能看到每架无人机的具体参数——比如FY1要朝45度飞,速度130m/s,10秒后投烟幕,5秒后起爆,这样3架配合起来,能挡导弹近19秒。

如果想调整场景(比如导弹速度变了、无人机起点改了),直接改main函数里的初始参数就行,代码会自动重新算最优解~

Read more

内存暴涨700%背后的惊天真相:AI正在吞噬一切!能源·隐私·绿色三大维度深度拆解

内存暴涨700%背后的惊天真相:AI正在吞噬一切!能源·隐私·绿色三大维度深度拆解

🔥作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生,研究方向无线联邦学习 🎬擅长领域:驱动开发,嵌入式软件开发,BSP开发 ❄️作者主页:一个平凡而乐于分享的小比特的个人主页 ✨收录专栏:未来思考,本专栏结合当前国家战略和实时政治,对未来行业发展的思考 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 🔥内存暴涨700%背后的惊天真相:AI正在吞噬一切!能源·隐私·绿色三大维度深度拆解 |前言| 最近装机的小伙伴们欲哭无泪:DDR5内存价格一路狂飙,部分DRAM现货价格在过去一年暴涨近700% 。大家习惯性吐槽“厂商放火”、“产能不足”,但很少有人看到,这场涨价风暴的真正推手,是那只名为“AI”的巨兽。 当你还在为多花几百块钱买内存心疼时,国家正在西部荒漠建起一座座数据中心,科技巨头正在为“吃电怪兽”抢购每一颗芯片。2026年,大型科技公司的AI相关投资预计将达到6500亿美元,较去年增长约80% 。 今天,我们从能源供应、隐私安全、绿色AI 三个维度,结合东数西算、算电协同、

By Ne0inhk
C#AI系列:从零开始打造自己的OpenClaw

C#AI系列:从零开始打造自己的OpenClaw

OpenLum.Console 项目说明 这个项目是参考OpenClaw的CSharp版控制台智能体助手,Aot发布后主体程序7mb大小,另外的Skills文件夹目前自带了浏览器操作、office文件读取等基础工具。 用户可自行动态扩展Skills(描述提供地址及操作方式后,即可学会各种技能,比如登录到公司网络报销发票、请假考勤等。注意:部分网站的DOM可能不易交互导致失败) 基于 .NET 的通用智能体 Shell,原生 AOT 发布、零第三方依赖。 面向本地/内网部署,支持 OpenAI API 兼容的各类模型(DeepSeek、Ollama、OpenAI 等)。 浏览器搜索信息获取操作 自带规划拉取信息、创建工具、完成任务(pdf文档生成) 技能的按需加载示例 全部开源免费,新朋友可以关注公众号“萤火初芒”回复"OpenLum"获取仓库地址,有问题可留言或私信作者。让我们一起探索 AI 助手的无限可能!

By Ne0inhk
AI的提示词专栏:Instruction Tuning 与自定义指令集

AI的提示词专栏:Instruction Tuning 与自定义指令集

AI的提示词专栏:Instruction Tuning 与自定义指令集 本文围绕 Instruction Tuning(指令微调)与自定义指令集展开深入解析,先阐释 Instruction Tuning 的定义、与传统 Prompt 调优的区别及核心价值,指出其通过 “指令 - 响应” 对训练让模型从通用文本生成转向精准执行任务,解决传统 Prompt 调优痛点。接着详解自定义指令集的构成要素与设计原则,给出多领域示例。随后介绍 Instruction Tuning 从数据准备、模型选择、微调训练、效果评估到部署应用的完整实施流程,结合电商客服场景实战案例说明落地要点。还针对数据不足、过拟合等常见问题提供解决方案,最后总结核心内容并展望自动指令集生成等未来趋势,为相关实践提供全面指导。 人工智能专栏介绍     人工智能学习合集专栏是 AI 学习者的实用工具。它像一个全面的 AI 知识库,把提示词设计、AI 创作、智能绘图等多个细分领域的知识整合起来。无论你是刚接触

By Ne0inhk
Flutter 组件 google_generative_language_api 适配鸿蒙 HarmonyOS 实战:生成式 AI 集成,构建大语言模型调度与全场景智能推理治理架构

Flutter 组件 google_generative_language_api 适配鸿蒙 HarmonyOS 实战:生成式 AI 集成,构建大语言模型调度与全场景智能推理治理架构

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 google_generative_language_api 适配鸿蒙 HarmonyOS 实战:生成式 AI 集成,构建大语言模型调度与全场景智能推理治理架构 前言 在鸿蒙(OpenHarmony)生态迈向全场景 AI 赋能、涉及高效的语义理解、自动化内容生成及严苛的端云协同智能隐私保护背景下,如何实现一套既能深度对接 Google 生成式语言模型(如 Gemini、PaLM)、又能保障异步请求高响应性且具备多模态输入处理能力的“AI 调度中枢”,已成为决定应用智能化水平与用户体验代差的关键。在鸿蒙设备这类强调分布式协同与端侧算力按需分配的环境下,如果应用依然采用低效的 REST 手写拼接,由于由于 payload 结构复杂性,极易由于由于“协议解析异常”导致鸿蒙应用在大模型推理环节发生由于由于由于由于通讯阻塞。 我们需要一种能够统一模型调用语义、支持流式(Streaming)响应且符合鸿蒙异步异步并发范式的

By Ne0inhk