
2025年国赛那几天我所在的三四个建模群里刷屏最多的求助不是“这道题用什么模型”而是“AI给我的代码报错了”“AI写的这段解释我自己都看不懂怎么往论文里放”。作为陪跑过多届国赛、也亲眼看着AI从“玩具”变成“队友”的人我越来越确定2026年备赛最该补的一课不是再刷一遍《数学建模算法与应用》而是学会把AI真正用在刀刃上。这篇内容的目标很直接从0到1带你把一套以近五年C题典型的“供应链优化决策类问题”为蓝本的完整流程跑通覆盖读题、数据探索、模型选择、代码落地、论文成稿和现场排错。不管你是第一次参赛还是已经打过几场下面这套方法今天就能上手。1. 备赛2026AI角色重新定位陪练、脚手架不是代写人1.1 一个反直觉的判断AI最大的价值不在“最后一步”很多人一听到“用AI做数学建模”第一反应是“让AI帮我写论文”。这个理解不能说错但方向偏了。我见过太多队伍前三天吭哧吭哧干活最后一天晚上让AI生成了几千字结果第二天评委一问模型原理全员沉默。论文是建模的外包装不是模型本身。AI在建模比赛里真正的价值是“把低价值的重复劳动全部吃掉”让你把精力留给最不该外包的那件事——对问题的理解和对结果的解释。我做过一个粗略统计一场72小时的比赛一支队伍真正用于“思考模型”的时间可能不到10小时剩下大部分时间都花在数据清洗、调包报错、改格式、写描述性文字这些事上。这些恰恰是AI最擅长、也最稳定的环节。所以正确的用法不是“AI帮我写”而是“AI帮我跑、帮我试、帮我改、帮我查漏”。这也是我在整篇内容里反复强调的底层逻辑AI可以帮你把想法变成代码、把代码跑出结果、把结果整理成段落但“为什么选这个模型”“这个结果在业务上是否合理”这两件事必须由人来把控。1.2 数学建模里AI扛得动的“三块硬骨头”和碰不得的“两条红线”先说AI能扛的数据探索与清洗缺失值处理、异常值定位、时间列解析、单位统一、特征构造这些工作量大但套路固定AI生成代码又快又稳。模型原型与调参线性规划、回归、时间序列、聚类、决策树这类常见算法AI可以给出结构完整、注释清晰的代码还能帮你做简单的参数对比。写作辅助把分析结果改写成规范的中文学术表达、给图表配说明文字、把公式解释成“让评委看得懂的话”AI是效率神器。再说碰不得的红线不能替你做“建模思路”的原创决策。AI可以给你三个候选方案但基于题目背景做最终判断的必须是人。不能替你编造假数据、假结果。AI的“脑补”能力很强但没有数据支撑的数字一旦被追问就是直接送命。记住这两条红线后面所有章节的用法都不会跑偏。AI是脚手架不是承重墙。2. 赛前三天搭好AI工作台工具组合与提示词底座2.1 我实测下来最顺手的备赛工具组合先说结论不要迷信某一个“超级AI”。不同工具在不同环节各有优势我用下来最顺手的组合是这样的对话大模型用于思路讨论、代码生成、论文润色。国内可用的Kimi、豆包、通义千问、DeepSeek都行我习惯备两个不同家的模型因为它们在数学推理和代码生成上的擅长点不一样一个给的结果不满意就换另一个。代码编辑器推荐Cursor或VS Code加Copilot。Cursor的“用对话改代码”功能在比赛场景非常实用报错信息直接丢给它它能把修复后的代码整段吐出来。本地Python环境Anaconda加Jupyter Notebook这是数模比赛的标准配置。有的队伍喜欢用在线平台但比赛期间网络和服务器不一定稳本地环境永远是最可靠的底牌。画图辅助先用代码出图再让AI帮你检查图表标注是否清晰。需要画技术路线图时可以让AI生成PlantUML或Mermaid代码再转成图片。流程图、架构图这类图AI能帮你把结构理得非常规范。这个组合的核心思路是“各干各擅长的事”大模型负责任务拆解和文本生成代码编辑器负责把想法变成能跑的程序本地环境负责兜底。2.2 一套能管整场比赛的建模提示词模板很多同学抱怨“AI给的东西太泛”99%的原因不是AI笨而是提示词没有信息量。比赛期间时间宝贵与其现场磨提示词不如赛前就把模板准备好。我自己压箱底的是一套四段式模板角色设定你是数学建模竞赛教练有十年国赛指导经验擅长运筹优化与数据分析。 背景信息我们正在做XX问题数据包含XX列共XX条记录目标是XX。 任务拆解请按以下顺序处理——1帮我理解题目中的关键约束2给出3个可行模型方案并对比优缺点3针对推荐方案给出可运行的Python代码每段代码需要注释其数学含义4如果信息不足直接提问不要编造。 输出要求结果用清晰的标题分节代码用标准格式解释部分用“能给本科生讲明白”的语言。这套模板的核心是“角色背景任务约束”四要素都齐全。我给很多队伍推荐过反馈都是“比我之前直接问好用太多”。你还可以在赛前针对几个高频题型优化类、预测类、评价类各准备一套专属模板比赛时直接套用省下的时间能多睡两小时。2.3 先跑通一个数据体检脚本比赛时直接抄数据体检是建模的前置动作但每场比赛都要重新写一遍又很烦。我建议赛前就把下面这个脚本跑通比赛拿到数据后直接改路径就能用import pandas as pd import matplotlib.pyplot as plt df pd.read_excel(data.xlsx, sheet_nameSheet1) print(数据集形状:, df.shape) print(\n前5行:) print(df.head()) print(\n字段信息:) print(df.info()) print(\n缺失值统计:) print(df.isnull().sum()) print(\n描述性统计:) print(df.describe()) # 数值列分布直方图保存到本地 df.hist(bins30, figsize(12, 8)) plt.tight_layout() plt.savefig(data_overview.png, dpi150) plt.close()这个脚本的作用不是“跑一遍看一眼”而是让你在拿到数据的第一时间就能发现关键问题数据量太小可能撑不起复杂模型缺失值过多需要做填充策略某些字段的单位描述和数值范围对不上这些都是后面建模决策的重要依据。脚本不用多复杂关键是“可用、够稳”比赛现场稳定大于炫技。3. 拿到题后前两小时用AI把C题“掰开揉碎”3.1 题目解构一段题干变成一张任务清单C题的题干一般都很长背景叙述里藏了大量隐含条件。很多队伍的通病是急着上手跑数据结果做着做着发现漏了一个重要约束只能推倒重来。我建议拿到题的第一个小时不碰数据先把题干丢给AI做结构化解构。提示词可以这么写你是数学建模竞赛教练。请把下面的题目拆解成结构化任务清单题目背景是什么我们需要回答几个具体问题每个问题对应的输入数据是什么哪些是显性约束哪些是可能被忽略的隐性约束输出用表格形式。 [把题目全文粘贴进来]AI会给你一张类似下面这样的表格任务编号问题描述所需数据潜在约束/风险Q1分析销量与成本/价格的关系历史销售流水数据颗粒度可能不统一Q2制定补货计划库存、销量、成本缺货成本未被显式给出Q3制定定价策略价格弹性数据品类间可能存在替代效应这一步做完题目的骨架就清楚了。你会知道这道题到底要回答几个问题每个问题大概需要什么样的数据和方法以及最容易被忽略的坑在哪里。这比看十篇经验帖都管用。3.2 数据体检的AI协作让AI帮你发现数据里的“脏东西”跑完上一节的脚本后把输出结果发给AI它是你的第二双眼睛。这里我给一个实战过的对话模板以下是我数据集的描述性统计和缺失值情况。请帮我判断哪些字段可能存在异常值或录入错误哪些缺失值需要特殊处理哪些字段可以做特征衍生并给出处理建议。注意不要给出具体代码先告诉我“为什么这么处理”。 [粘贴脚本输出]这轮对话的价值在于AI能帮你快速识别出一些容易忽略的问题。比如某个商品价格出现负值的行可能不是数据错误而是“退货记录”某个品类销量全部为0的日期可能是缺货而不是没生意。C题的优化决策题最怕的就是把异常值当噪声直接删掉AI的全局视角能帮你多留个心眼。3.3 把“3个候选方向”压缩成“1个主攻方向”建模最怕的不是没有思路而是思路太多队伍内部分歧两天过去了还在换模型。我建议用“候选方案对比矩阵”这个办法来收敛思路。让AI针对你的问题给出三个候选模型方案并让它按“数据适配度、实现难度、可解释性、评委认可度”四个维度打分。比如对于补货决策类问题AI可能给你方案A线性规划最优解清晰可解释性强但假设价格不变、需求确定与现实有偏差。方案B加入需求预测的时间序列模型优化更贴近实际但流程更长环节一多就容易出错。方案C强化学习听起来高端但在短时间内很难收敛且评委难以理解你的决策逻辑。打分之后基本就清楚了初赛场景下A方案最适合保证完整度B方案适合冲奖C方案不建议在有限时间内冒险。这个选择的过程一定要人在回路里AI是帮你收敛不是替你决定。4. AI建模落地实战一个补货定价优化题的完整跑通4.1 把“我该用什么模型”翻译成AI听得懂的问题到了建模环节最常见的卡点是“我知道这题该用优化但不知道怎么把现实约束翻译成数学表达式”。这时候不要直接问“帮我做第三题”信息量太低了。正确做法是把问题拆成“目标、决策变量、约束条件”三要素喂给AI我们是一个生鲜超市的运营团队每天要为A、B、C三种蔬菜决定补货量。目标是让总利润最大化。已知每种蔬菜的进价、售价、日需求量的均值和标准差、当前库存量。限制冷库总容量为500件每种蔬菜每天最多补货200件缺货会导致顾客流失每缺一件损失3元。请将此问题建模为优化问题并给出Python求解代码。AI会非常快地给你一个规划模型决策变量是当日补货量目标函数是销售收入减去进货成本再减去缺货损失约束条件是容量限制和补货上限。这一步的本质是把人脑里的“我想多赚钱但不能挤爆仓库”翻译成了数学语言。建模题里最难的不是数学而是这种翻译能力。4.2 代码生成与本地运行从线性规划到模拟验证当问题规模不大时用scipy.optimize.linprog就能解变量一多、约束变复杂我会让AI改用pulp或ortools表达更清晰。下面是一个能直接跑的简化示例import pulp # 定义问题pulp/maximize 表示最大化利润 prob pulp.LpProblem(FreshMarket_Replenishment, pulp.LpMaximize) # 数据蔬菜名称、进价、售价、需求均值、需求标准差、当前库存 items { A: {buy: 4.0, sell: 6.0, mean: 80, std: 15, inv: 20}, B: {buy: 2.5, sell: 4.5, mean: 120, std: 20, inv: 30}, C: {buy: 1.8, sell: 3.2, mean: 150, std: 25, inv: 40}, } capacity 500 max_restock 200 shortage_cost 3.0 # 决策变量每种蔬菜的补货量 x pulp.LpVariable.dicts(restock, items.keys(), lowBound0, catInteger) # 决策变量每种蔬菜的缺货量 s pulp.LpVariable.dicts(shortage, items.keys(), lowBound0, catInteger) # 目标函数销售毛利 - 缺货损失 - 进货成本 prob pulp.lpSum( (items[i][sell] * (x[i] items[i][inv]) - items[i][buy] * x[i]) for i in items ) - pulp.lpSum(shortage_cost * s[i] for i in items) # 约束1总库存不超过冷库容量 prob pulp.lpSum(x[i] items[i][inv] for i in items) capacity # 约束2每种蔬菜补货量上限 for i in items: prob x[i] max_restock # 约束3缺货量不能超过需求这里简化为用需求均值约束 for i in items: prob s[i] items[i][mean] prob.solve() print(Status:, pulp.LpStatus[prob.status]) for i in items: print(f蔬菜{i}: 补货量 {x[i].varValue}, 缺货量 {s[i].varValue}) print(总利润 , pulp.value(prob.objective))跑通这个代码后别急着高兴。下一步才是关键让AI帮你检查结果是否符合直觉。把输出结果发给AI问它“这个优化结果合理吗如果我把冷库容量改成800结果会怎么变为什么”AI会告诉你当容量放宽后利润更高但缺货也缓解了——这看起来很合理然后你可以让它批量做参数扫描出一张“容量-利润”的敏感性曲线图。这才是说服评委的硬材料。4.3 灵敏度分析和结果检验说服评委的关键一步评委最反感的是“只有一个孤零零的结果”。你给出补货量是80件然后呢为什么不是90件需求波动10%时这个方案还成立吗这些检验工作AI能帮你做到一半。把你的优化代码里“需求均值80”改成“需求均值88”重新跑一遍让AI对比两次结果分析方案是否稳健。如果结果变化很大说明模型对需求预测太敏感需要引入随机规划或鲁棒优化的思想如果变化不大说明方案稳健可以作为结论写进论文。我给一个标准做法让AI帮你生成一个灵敏度分析表格参数设置包括容量、需求均值、价格上下浮动每改一个参数记录利润变化率。这个表格放进论文附录直观程度极高评委看到会觉得“这支队伍做了充分的验证”。5. AI写论文的正确姿势摘要、模型解释与“去AI味”5.1 摘要初稿流水线AI扩写、人工精修论文写作最大的坑有两个一是内容不完整二是语言像翻译腔。摘要尤其重要因为评委最先看的就是摘要而且很多评委只看摘要。我的摘要生产流程是这样的把每道题的最终结论和核心数字整理成要点清单发给AI要求“用300字以内、结构化的语言写一段竞赛摘要包括问题背景、方法、关键结果”。拿到AI初稿后人工做三件事把“基于XXX模型”这类表述细化成“构建了以需求预测误差最小为目标的XXX模型”把AI写模糊的数字补上精确值把“结果显示”开头改成更具体的“对XX品类而言”。让AI按“问题一/问题二/问题三”分段确保每个问都有对应的模型名和关键结论。这里有个技巧摘要里不要出现AI常见的废话比如“本文提出了一种有效的方法”“具有重要意义”这种话评委一眼就能看出来是AI写的。好的摘要应该是信息密度极高的“干货段”每句话都有具体的模型名字和具体数字。5.2 图表和模型解释让评委半小时看懂你的工作C题通常有好几个小问论文篇幅长评委不可能逐字细看。你的图表和每章的模型解释决定了评委能不能快速抓住你的核心工作。图表部分AI帮你出图后你还需要加一个“图表说明模板”每张图下面用一句话说清楚“横纵轴是什么、图里最关键的特征是什么、这个特征说明了什么”。让AI帮你写第一版你审核修改。这个步骤很多人忽略但对可读性的提升非常明显。模型解释部分我推荐一个“三步解释法”第一步用一句话说明这个模型是干什么的第二步用数学语言写下目标函数和核心约束第三步用一个类比解释为什么选它。例如“我们选择线性规划处理补货问题本质上是在容量限制下寻找利润最大化的分配方案这和在预算内给不同项目分钱是同一个数学结构。”这类表达配合AI润色论文会显得既有深度又容易读懂。5.3 AI使用范围与查重红线今年赛场上的新规则很多队伍担心用AI写论文会不会被判定违规我的看法是合规的核心不是“用不用AI”而是“怎么用、是否如实说明”。越来越多的比赛主办方已经明确要求参赛队申报AI使用情况所以正确姿势是赛前查阅当年的参赛规则按规则要求声明AI辅助的环节。不要直接让AI生成整段论文后原样粘贴。任何结论、模型解释、创新点都要经过你的理解后用个人语言重写。这不只是为了降低查重率更是为了防止答辩时被问懵。涉及数据结果和模型推导的内容必须由你自己核对无误后再放进论文。说白了AI是帮你把“从想法到成稿”的效率提上来但论文里的每一个字都应该经过你的大脑。这一点建议每支队伍在赛前开个小会统一认识避免比赛后半段有人图省事直接整段复制。6. 现场排错实录AI辅助备赛最容易翻车的四个坑6.1 提示词问得太笼统AI回你一锅教科书比赛现场最常听到的对话“AI帮我做第三题。”然后AI洋洋洒洒给了两千字全是课本里的通用模型介绍一点针对性都没有。这不是AI的错是你没给它“抓手”。正确的问法是给出具体数据背景、你的目标、你已经尝试过什么、卡在哪里。比如“我已经拆好了约束条件现在建模求解时报错‘linprog: Algorithm failed to find a feasible solution’我怀疑是约束矛盾请帮我检查约束之间有没有冲突并给出排查方法。”这样的问题AI能顺着你的思路帮你定位问题而不是从零开始给你讲一遍线性规划。6.2 数据一换就崩AI代码的“过拟合”问题AI生成的代码通常非常贴合你给它的那份示例数据但比赛数据一换、字段名一改代码就崩溃。这是因为AI“过拟合”了你提供的数据结构。应对方案是在赛前练习时就养成“让AI写通用代码”的习惯要求它“不要假设列名固定请用代码先检查列是否存在再进行操作”。这样生成的代码鲁棒性会好很多。另外任何AI生成的大段代码在正式跑赛题数据前先用一小部分样例数据测试。不要等第三天晚上才发现代码在第一天就埋了雷。6.3 AI一本正经地编造“假结果”AI在解释模型时偶尔会编造出一些“看起来很真实”的数值比如“本模型预测准确率达到95%”“某方案能提升利润30%”。这些数字一旦写进论文就是给自己挖坑。每看到一个AI给出的结论性数字都要回到你的代码输出里核对。我的习惯是要求AI“所有结果引用代码输出的精确值不允许自己估算”。如果AI在文字里给了一个数字我会让它额外标注“此数字来自代码输出第几行”。这个习惯看似小事却能避免最致命的一类错误。6.4 论文里“AI味儿”太重被评委一眼识破最后说一个真实经历某年评审时有份论文的摘要里有句话“综上所述本文提出了一种综合性的优化方案”下面全是空洞的形容词没有任何具体模型名和数字。评委当场评价就是“这段一看就是AI写的”。去“AI味”不是靠降重工具而是靠“具体化改写”把所有“有效的”“先进的”“综合性的”这类形容词替换成具体的方法名、参数名、结果数字。AI写得泛泛而谈的地方恰恰是你应该补充细节的地方。你比AI更了解你的模型为什么这么设计把这些“为什么”写进去论文自然就有了人的痕迹。我自己在各届比赛里踩过不少坑最大的体会是AI时代的数模比赛比拼的不再是“谁会的模型多”而是“谁能在有限时间内把模型、数据和表达串成一条完整的证据链”。工具再强也只是让你跑得更快方向感和判断力始终在你自己的脑子里。备赛2026从现在开始把AI当队友训练比赛那三天你会感谢现在的自己。