ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

数学建模竞赛全流程实战指南:从赛题拆解到论文撰写与评审视角

数学建模竞赛全流程实战指南:从赛题拆解到论文撰写与评审视角

1. 从赛题到奖杯:数学建模竞赛的底层逻辑拆解

数学建模竞赛这件事,很多人第一次接触的时候会觉得它是一门“玄学”——三个人、三天、一道开放题,最后交一篇论文,凭什么有人拿奖有人陪跑?我带过几届队伍,也做过校赛评审,说实话,拉开差距的从来不是谁更聪明,而是谁更早想明白这个比赛的底层逻辑:它考的不是数学,是用数学解决实际问题的完整闭环能力。

这个闭环包括四个环节:把现实问题翻译成数学语言、选择合适的模型去逼近它、用数据或仿真验证模型、最后把整个思考过程写成一篇让人信服的论文。四个环节缺一不可,而且权重是递增的——很多队伍模型做得不错,论文写得像实验报告,最后连省奖都摸不到。反过来,模型不算惊艳但论文逻辑严密、表达清晰的队伍,往往能走得更远。

所以这篇内容我想聊的,不是某个具体模型怎么推导,而是从拿到题目那一刻开始,到最终提交论文为止,整条链路上每个环节该怎么做决策、怎么避坑、怎么把有限的时间和精力花在刀刃上。适合第一次参赛想少走弯路的新手,也适合参加过一两次但成绩卡在某个瓶颈的队伍。

提示:数学建模竞赛的评审标准里,“模型的合理性”和“论文的可读性”通常各占很大比重,而“结果的精确性”反而不是最关键的。这意味着你的精力分配应该是:问题分析 > 论文撰写 > 模型求解。

2. 赛前准备:比“学模型”更重要的事

2.1 队伍分工不是“一人建模一人编程一人写作”

新手最常见的误区是按字面意思分工:A负责建模、B负责编程、C负责写论文。实际操作中这种分工会导致严重的衔接问题——建模的人想清楚了但说不明白,编程的人拿到公式不知道怎么实现,写作的人对着空文档干等结果。

我试过最有效的分工方式是按环节交叉负责:

  • 队长:负责整体节奏把控和问题拆解,同时是论文的最终统稿人。队长不一定数学最好,但必须是最清醒的那个人,知道现在做到哪一步了、还剩多少时间、下一步该干什么。
  • 建模主力:负责把问题抽象成数学表达,选择或构造模型框架。这个人需要同时具备一定的编程能力,至少能用Python或MATLAB把模型的雏形跑通。
  • 编程与数据处理主力:负责数据清洗、算法实现、结果可视化。这个人要能看懂建模主力写的公式,并且能提出“这个假设在数据上站不站得住”的质疑。
  • 写作与排版主力:负责论文框架搭建、图表制作、格式规范。这个人从第一天就要开始写,而不是等结果出来再动笔。

三个人不可能严格对应四个角色,所以队长往往要兼一个角色。我的建议是队长兼写作,因为统稿的人必须对全文逻辑最熟悉。

2.2 工具链提前统一,别在赛场上装环境

赛前一周必须把工具链定下来,所有人本地跑通。以下是我常用的组合:

用途推荐工具理由
数值计算与建模Python (NumPy/SciPy/scikit-learn)库全、社区大、调试方便
符号推导MATLAB Symbolic Toolbox 或 SymPy推导公式快,减少手算错误
数据处理pandas + openpyxl处理Excel和CSV几乎无痛
可视化matplotlib + seaborn出图质量高,可定制性强
论文撰写LaTeX (Overleaf) 或 WordLaTeX排版美观,Word上手快
版本管理Git (本地仓库即可)防止文件覆盖,可回溯

注意:不要在比赛期间尝试安装新工具或新库。赛前把环境配好,包括Python虚拟环境、LaTeX模板、常用宏包,全部测试一遍。

2.3 模板和素材库的提前积累

论文模板、常用图表样式、参考文献格式、甚至一些套话句式,都应该在赛前准备好。这不是作弊,这是专业选手的基本素养。我见过太多队伍在最后半天还在调格式,结果正文没写完。

具体要准备的东西:

  • LaTeX模板:找一份往届优秀论文的排版结构,自己搭一个骨架,包括摘要页、目录、章节标题样式、图表标题样式、参考文献样式。
  • 图表模板:折线图、柱状图、散点图、热力图、流程图各准备一个脚本,比赛时改数据就能出图。
  • 常用算法代码:线性规划、整数规划、遗传算法、粒子群、灰色预测、时间序列、回归分析、聚类分析,每个算法准备一个可运行的示例。
  • 论文句式库:摘要怎么写、假设怎么表述、模型评价怎么写,提前整理一些模板句,比赛时直接改。

3. 审题与问题拆解:决定成败的前三个小时

3.1 选题决策:不是选“简单的”,是选“能做完的”

拿到题目后,通常有A、B、C三道题可选。很多队伍花大量时间纠结选哪道,其实决策逻辑很简单:

  1. 看数据:哪道题给的数据最完整、最干净?数据质量直接决定你能不能快速进入建模环节。
  2. 看背景:哪道题的背景你们队伍最熟悉?熟悉背景意味着你知道哪些假设合理、哪些不合理。
  3. 看问题结构:哪道题的子问题之间逻辑最清晰?子问题之间有递进关系的,往往比并列关系的更容易写出深度。
  4. 看开放度:太开放的题目(比如“请建立模型评估某政策的影响”)容易写散,太封闭的题目(比如“请用给定数据拟合曲线”)又缺乏发挥空间。选择开放度适中的。

我的经验是:选题不要超过30分钟。三个题目各花10分钟快速浏览,列出每道题的关键词、数据情况、可能的模型方向,然后投票决定。犹豫越久,沉没成本越高。

3.2 问题重述不是抄题,是重新定义问题

论文里的“问题重述”部分,很多队伍直接复制题目原文,这是大忌。评审老师想看的是你对问题的理解,而不是你的复制粘贴能力。

正确的问题重述应该包含:

  • 背景的数学化表达:把题目描述的实际场景,用数学语言重新说一遍。比如“某城市交通拥堵”要转述为“给定路网拓扑和流量数据,建立拥堵传播模型,识别关键节点”。
  • 目标的明确化:题目往往说得很模糊,你需要明确你要优化什么、预测什么、评价什么。
  • 约束条件的梳理:哪些是硬约束(必须满足),哪些是软约束(尽量满足),哪些假设是你自己加的。
  • 子问题的逻辑关系:如果题目有多个子问题,说清楚它们之间是递进、并列还是因果的关系。

3.3 假设的合理性:别写“假设地球是圆的”这种废话

模型假设是评审重点看的部分,因为它直接反映你对问题的理解深度。好的假设应该满足三个条件:

  1. 必要性:这个假设不成立,模型就没法建。比如“假设数据采集期间系统处于稳态”。
  2. 合理性:有现实依据或数据支撑。比如“假设用户到达服从泊松分布”,因为这是排队论中的经典假设且有大量实证支持。
  3. 可检验性:如果条件允许,应该说明如何验证这个假设。比如“通过卡方检验验证到达时间间隔是否服从指数分布”。

我见过最离谱的假设是“假设所有数据都是准确的”,这种假设等于没假设,还会让评审觉得你在回避问题。

4. 模型构建:从简单到复杂,而不是一步到位

4.1 先建一个“能跑通”的基线模型

很多队伍一上来就想搞深度学习、搞复杂优化,结果三天过去了连基线结果都没出来。正确的做法是:先用最简单的方法跑通全流程,再逐步升级。

比如一道预测题,基线模型可以是线性回归或移动平均。虽然精度不高,但它能让你快速走通“数据清洗→特征选择→模型训练→结果输出→可视化”的完整链路。有了这个基线,你才知道后续的复杂模型到底提升了多少。

基线模型还有一个好处:它给了你一个保底方案。万一复杂模型调不出来,至少论文里有东西可写。

4.2 模型选择的决策树

面对一个问题,怎么选模型?我整理了一个简单的决策逻辑:

问题类型首选模型备选模型适用条件
预测类时间序列(ARIMA)回归、神经网络数据有时间维度
评价类层次分析法(AHP)熵权法、TOPSIS多指标综合评价
优化类线性/整数规划遗传算法、模拟退火有明确目标函数和约束
分类类逻辑回归、随机森林SVM、XGBoost有标签数据
仿真类蒙特卡洛元胞自动机、Agent-based系统随机性强

提示:模型不是越复杂越好。评审更看重的是“为什么选这个模型”以及“模型结果是否合理”,而不是模型本身的复杂度。

4.3 参数求解与灵敏度分析

模型建好之后,参数怎么定?两个途径:一是从数据中估计(比如最小二乘法、最大似然估计),二是从文献中引用(比如物理常数、经验参数)。

不管用哪种方式,灵敏度分析是必须做的。所谓灵敏度分析,就是看当参数变化时,模型结果的变化程度。如果某个参数稍微一变,结果就天翻地覆,说明模型不稳定,需要重新审视假设或参数估计方法。

灵敏度分析的常见做法:

  • 单因素分析:固定其他参数,让目标参数在±10%、±20%范围内变化,观察结果变化。
  • 多因素分析:用正交实验或拉丁超立方采样,同时变化多个参数。
  • 可视化:用热力图或龙卷风图展示各参数对结果的影响程度。

5. 论文撰写:让评审在10分钟内看懂你的价值

5.1 摘要:整篇论文最重要的300字

评审老师看一篇论文,第一眼看的就是摘要。摘要写得好,他会带着期待往下读;摘要写得烂,后面写得再好也可能被埋没。

摘要的结构应该是:

  1. 第一句:一句话说明你解决了什么问题。
  2. 第二到四句:针对每个子问题,说明你用了什么方法、得到了什么结果。
  3. 第五句:说明你的模型有什么特点或创新点。
  4. 最后一句:总结模型的适用性和推广价值。

注意:摘要里不要出现公式、不要出现“我们”“本文”这类主语、不要写“由于时间关系”“由于水平有限”这种泄气话。

5.2 论文结构的黄金比例

一篇优秀的数学建模论文,各部分的篇幅大致如下:

章节建议篇幅核心要点
摘要1页独立成页,关键词3-5个
问题重述0.5-1页数学化表达,不抄题
问题分析1-2页展示思考过程,不是结果
模型假设0.5页每条假设都要有理由
符号说明0.5页表格形式,简洁清晰
模型建立与求解8-12页核心部分,逻辑严密
模型检验2-3页灵敏度分析、误差分析
模型评价与推广1页客观评价,不吹不黑
参考文献0.5页格式规范
附录不限代码、数据、详细推导

5.3 图表:一图胜千言,但烂图不如无图

数学建模论文里的图表,必须做到“自解释”——读者不看正文,只看图和图注,就能明白你想表达什么。

好图的标准:

  • 标题明确:图1 不同参数下模型预测误差对比
  • 坐标轴有标签和单位:横轴“时间(天)”,纵轴“误差(%)”
  • 图例清晰:不同颜色/线型代表什么,一目了然
  • 配色专业:不要用红绿搭配(色盲不友好),推荐蓝橙、蓝灰配色
  • 分辨率足够:至少300dpi,不要截图粘贴

烂图的典型特征:坐标轴没有标签、图例和曲线对不上、颜色刺眼、字体太小、直接截图Excel默认样式。

5.4 写作节奏:从第一天就开始写

论文不是最后一天才写的。正确的节奏是:

  • 第一天:写完问题重述、问题分析、模型假设、符号说明。
  • 第二天:每完成一个子问题的求解,立刻把该部分的模型建立和求解过程写下来。
  • 第三天上午:完成模型检验和评价部分。
  • 第三天下午:统稿、调格式、写摘要、检查图表。
  • 第三天晚上:至少留出2小时通读全文,检查逻辑漏洞和错别字。

我的经验是:最后半天千万不要再改模型了。哪怕结果不完美,也要把现有结果写清楚。改模型的风险远大于收益。

6. 常见问题与排查技巧实录

6.1 模型跑不出结果怎么办

这是比赛中最常见的问题。排查顺序:

  1. 检查数据:有没有缺失值、异常值、单位不统一?先做描述性统计,看看数据的分布。
  2. 检查公式:推导有没有笔误?量纲对不对?边界条件合不合理?
  3. 检查代码:用一个小规模测试用例验证代码逻辑,确认没有索引错误、循环错误。
  4. 简化问题:先把模型退化成最简单的情况,确认能跑通,再逐步加复杂度。
  5. 换方法:如果某个算法调了两小时还不行,果断换备选方案。比赛时间宝贵,不要死磕。

6.2 结果和预期不符怎么办

结果不符合预期,不一定是坏事。有时候“异常”结果反而能引出更有深度的讨论。

处理方式:

  • 先验证结果的计算过程:是不是计算错误?
  • 再检查假设:是不是某个假设太强,导致结果偏离现实?
  • 然后做灵敏度分析:是不是参数设置不合理?
  • 最后在论文中讨论:如果结果确实与直觉不符,可以在模型评价部分讨论可能的原因,这反而是加分项。

6.3 论文写到一半发现逻辑不通怎么办

这是很正常的。发现逻辑不通,说明你在进步。处理方式:

  • 不要推翻重来:时间不允许。在现有框架上修补。
  • 调整章节顺序:有时候只是叙述顺序的问题,把因果关系理顺就好。
  • 补充过渡段落:在逻辑跳跃的地方加一段解释,说明为什么从这里转到那里。
  • 弱化矛盾点:如果某个子问题的结果和整体逻辑有冲突,可以在模型评价中坦诚说明,并给出可能的改进方向。

6.4 时间不够了怎么办

时间不够是常态。优先级排序:

  1. 保证论文完整:摘要、问题重述、假设、符号说明、模型建立、求解结果、结论,这些必须有。
  2. 砍掉次要部分:模型推广、详细推导、附录代码可以简化。
  3. 结果可视化优先:把已有结果用图表展示出来,比大段文字更有效。
  4. 摘要最后写:但一定要留出时间写摘要,这是评审的第一印象。

7. 评审视角:什么样的论文能拿奖

7.1 评审老师到底在看什么

我参与过几次校赛评审,说实话,评审老师看一篇论文的时间非常有限。初评阶段可能只有5-10分钟。在这几分钟里,他们看的是:

  • 摘要:有没有说清楚做了什么、怎么做的、结果如何。
  • 结构:章节是否完整、逻辑是否清晰。
  • 图表:是否规范、是否自解释。
  • 假设:是否合理、是否有依据。
  • 结果:是否合理、是否有检验。

至于模型的数学复杂度,反而不是初评的重点。只有进入复评或答辩阶段,才会深入看模型细节。

7.2 加分项和减分项

加分项:

  • 摘要精炼、信息量大
  • 问题分析有深度,能看出独立思考
  • 假设合理且有验证
  • 图表规范、美观、自解释
  • 模型有检验(灵敏度分析、误差分析)
  • 论文有创新点(哪怕很小)
  • 格式规范、排版整洁

减分项:

  • 摘要写成流水账
  • 问题重述直接抄题
  • 假设不合理或没有假设
  • 图表模糊、没有标签
  • 模型没有检验
  • 结论与结果不符
  • 格式混乱、错别字多
  • 超页数限制

7.3 创新点的正确打开方式

很多队伍为了“创新”而创新,搞一些花哨但没用的东西。真正的创新应该是:

  • 方法组合创新:把两个不同领域的方法结合起来解决一个问题。
  • 应用场景创新:把某个成熟模型应用到一个新的场景。
  • 参数改进创新:对现有算法的某个参数选择方式进行改进。
  • 验证方式创新:用多种方法交叉验证结果。

提示:创新点不需要很大,但一定要说清楚“新在哪里”和“为什么这样改更好”。

8. 赛后复盘:比获奖更重要的事

比赛结束后,不管成绩如何,都应该做一次复盘。复盘的内容包括:

  • 时间分配:哪个环节花的时间超出预期?下次怎么调整?
  • 技术短板:哪个模型或算法卡住了?赛后补上。
  • 协作问题:沟通是否顺畅?分工是否合理?
  • 论文质量:如果重写一遍,哪里可以改进?
  • 评审反馈:如果有评语,逐条分析,找出改进方向。

我个人的体会是,一次认真的复盘,比多参加两次比赛收获更大。因为比赛中的问题往往是重复的——这次时间不够,下次还是时间不够;这次论文写不清楚,下次还是写不清楚。只有复盘才能打破这个循环。

最后分享一个小技巧:把每次比赛的论文、代码、数据全部整理归档,标注好题目、方法、结果、问题。下次比赛前翻一翻,比看任何教程都管用。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进