☰
数学建模竞赛实战指南:从组队分工到论文写作的全流程经验
2026/10/13 15:10:39 网站建设 项目流程

我不是啥机构认证的竞赛导师,就是一个带队参赛过很多次的老学长。这些年我带过的队伍,有拿奖拿到手软的,也有三天三夜肝到崩溃最后连成功参赛奖都没混上的。你问我数学建模竞赛(MCM)到底难不难?我的答案是:它考的不是你的数学水平,而是你如何在混乱中把一个问题拆清楚、建模、编程、写论文,最后让评委在几分钟内看懂你的答案。这篇内容就是把我踩过所有坑之后沉淀下来的一套实战打法,从组队分工到七十二小时时间表,到模型选型和最后的论文排版,一点一点拆给你看,适合第一次参赛的学生,也适合带队友的队长参考。

MCM这类赛事,规则上写的是“三人、一台电脑、一个英文题目、四天三夜”,听起来很自由,但真正比的是你能否在一堆噪音中抓住真正要解决的问题。很多人一开始就在选题上栽了跟头,选错题之后后面全盘崩溃。我自己也经历过两小时换题、零点重做的窘境,所以这篇内容我第一个就要说选题,因为它决定了后面所有工作是不是白费。我尽量把每个环节“为什么这样做”讲清楚,你照着做,不敢说拿大奖,至少能避免大多数队伍犯的典型错误。

1. 先想清楚:MCM到底在比什么

1.1 竞赛本质不是考数学,而是考表达能力

我第一次带队参赛时,踩过一个很大的坑:我们三个人花了整整一天时间研究一个非常高深的优化模型,觉得只要模型够“黑科技”,评委就一定会喜欢。结果论文交上去之后,评委反馈说“看不到你们解决问题的逻辑”。那一刻我才明白,MCM表面上叫“竞赛”,实际上更像是一场用数学语言完成的“方案答辩”。

你自己要清楚:评委会花多少时间看一篇论文?据我了解,MCM一份判决论文的时间也就十五到二十分钟,很多评委甚至只重点看摘要、结论和图表。也就是说,你的解题能力再强,如果没办法在几分钟内把“你们做了什么、为什么这样做、结果是什么”讲清楚,分数一样上不去。这项竞赛本质上就是用一篇论文向一个对自己的问题背景不太了解的人解释你的完整解题过程,你的表达结构、逻辑链清晰度、重点信息的呈现方式,决定了最终的分数层级。

所以,从第一天开始就要摆正心态:目标不是在某个数学分支上做到多深,而是把一个团队协作产出的完整解决方案“演出”得足够有说服力。模型太简单不可怕,可怕的是模型很复杂但没人看得懂。

1.2 了解评审想要什么,比瞎刷模型高效一百倍

我后来花了很多时间研究历年获奖论文,发现一个规律:拿奖的论文未必使用了最高深的算法,但它们都有几个共同特征——对问题的建模假设说得明明白白,模型参数和符号定义清清楚楚,图表配色和排版非常舒适,摘要能一句话说清“用什么模型解决了什么问题”。

这里我给大家一个具体建议:开始训练前,先去看几篇历年优秀论文,不要只看内容,去看它的结构。摘要怎么写,问题重述怎么裁剪,假设条件列几条,模型建立如何层层递进,敏感性和稳定性分析放的位置,甚至每张图的大小和字体,都可以当做模板去模仿。竞赛不是文学创作,它是“带着镣铐跳舞”,而这个镣铐就是评委的阅读习惯。

我也见过不少队伍,把自己会的各种算法像互相推荐一样堆在论文里,差分方程、遗传算法、模拟退火、神经网络全给塞上去。最后的反馈是:“方法繁杂,主次不分”。记住,竞赛比的不是算法数量,而是算法与问题的匹配度,以及你对这个算法的理解深度。

2. 队伍组建与角色分工:最常见的翻车点

2.1 三人组的理想配置

好多队伍参赛前不讲究分工,觉得三个人都懂一点建模、都会一点编程就行。结果到了比赛现场,三个人抢一个键盘,谁也不服谁,或者三个人都在等别人拿主意。我看过太多队伍就是这么散掉的。

我的经验是:最佳队伍结构是一个建模手、一个编程手、一个写作手,三者职责严格划分但又互相渗透。建模手负责整体定义问题、提出假设、选择模型方向,他就是团队的“项目经理”;编程手负责把所有模型落地成可运行的代码,负责数据清洗、计算、可视化;写作手负责把所有工作翻译成清晰、流畅、有说服力的论文文字,同时管理排版和图表规范。

你可能会说,编程手也要懂建模、写作手也要懂逻辑,不然没法沟通。没错,但分工的意义在于:关键时刻有一个人拍板。比如选题阶段,如果建模手觉得A题更有把握,编程手说B题数据好处理,写作手说C题更好写,那就需要建模手做最终决定,其他人配合。分工还能保障节奏,每个人在自己负责的模块里有自主权,不会出现三个人挤在一起却不干活的场面。

2.2 每个人该提前练什么

如果你问我组队之后第一步该做什么,我会说,不是去学高深的算法,而是三个人各自补短板。

建模手要练习的,是“把一个实际问题翻译成数学语言”的能力。你随便拿一个生活中的问题来练手,比如“学校门口奶茶店该怎么备货”“合唱比赛怎么排座位”,然后逼自己在两小时内把它抽象成目标函数和约束条件。这个过程俗称“建模手感”,只能靠多练。

编程手的核心任务不是写花哨的代码,而是保证在极限压力下不出bug、能快速出图。我建议编程手在赛前熟悉一个固定的代码模板:数据读取、缺失值处理、模型求解、结果绘图,把常用包和函数写成现成的脚本框架。比赛时你只需要往框架里填数据就行,这样可以节约大量时间。

写作手则应该提前准备好LaTeX模板或者Word模板,确定好排版规范、字体字号、图表编号规则。建议写作手把摘要的英文模板、常见过渡句、模型评价部分的表达句式提前整理成笔记,比赛时直接套用框架,再往里面填内容。写作手还要提前学会怎么用工具快速画“看起来专业”的图,比如Python的matplotlib画布配置、配色方案。

3. 时间线规划:72小时怎么分

3.1 前两小时的生死决策

MCM的节奏通常是四天三夜,但如果你把它当成“三天三夜”,反而会更清醒。许多队伍都是前半天都在犹豫,等确定题目时天都黑了,后面只好熬夜赶工。我的铁律是:开赛前两小时内必须定题,不能拖。

定题不是靠感觉,而要快速评估三个维度:题目的数据可得性、模型的熟悉程度、写作的可解释性。我会让三个人各自先读一遍每一道题,然后按照“我的队伍能写多少内容”“大概需要哪类模型”“数据从哪里来”打分,最后加权求和来决策。有时候你们可能会觉得某道题很新颖、很酷,但如果这道题需要你们现场学一个新算法,我劝你绕着走,比赛时间太短,容不下“现学现卖”。

定题之后,马上进行第二轮决策:这道题的核心问题是什么?可以拆成哪些小问题?每个小问题用什么模型方案?这一步通常花半小时到一小时,但你必须在这一步就把论文的大纲框架列出来,越细越好,让所有人都清楚最后要交出一篇什么结构的论文。

3.2 建模、编程、写作三段式节奏

定题完成之后,我从第三天开始(也就是完整72小时)一般把时间分三段。第一段是“建模与数据勘查”,大概从前两小时到第八小时结束。建模手和编程手一起研究问题重述、列出假设清单、寻找可用数据。很多队伍在这一步就开始闷头写代码,这是错误的。你需要先把建模思路白板画清楚,说通自己,再动手也不迟。

第二段是“模型构建与求解”,持续到四十小时左右。编程手在这个阶段把模型逐一实现,建模手负责调整参数和约束条件,写作手同时开始写问题分析、基本假设、模型的文字部分。这里有个经验:写作手不需要等模型全部跑完才开始写,模型框架一确定,前几部分的文字就能先写起来,这样能节省大量时间。

第三段是“完善与排版”,差不多从第四十小时到交卷前。所有计算结果出来后,就是写作手的主场。这一段最忌改动核心模型。有些队伍到五六十小时发现模型效果不好,想推翻重来,绝大多数情况下这只会导致灾难。你应该做的是微调参数、优化图表,而不是推倒重来。

3.3 最后6小时的排版冲刺

我见过太多队伍,模型和数据都非常优秀,但最后一夜排版排到天亮,摘要甚至是在交卷前二十分钟内胡乱写的。这个情况要是出现在新手阵线,还情有可原;但如果是冲着拿奖去的,真的太可惜。

我的策略是:最后六小时我只做三件事——第一,摘要定稿;第二,图表统一检查;第三,通读全文找逻辑漏洞。摘要建议由写作手先和建模手讨论着写,第一稿最迟在交卷前九小时完成,然后所有人一起过一遍,提出修改意见,再改两遍。在最后两小时,谁都不许动模型和代码,只允许调整论文格式、图表大小、字体等。你需要给自己留出至少一小时用来转换文件格式、检查页数和提交,很多队伍最后因为文件上传格式问题被取消成绩,那才叫真正的血亏。

4. 模型与数据:实战中最常用的套路

4.1 数据预处理是拉开差距的第一步

无数参赛队在建模前不做数据探索,拿到的数据直接喂给模型,结果后面跑出来的结果就像垃圾进、垃圾出,根本解释不通。数据预处理这一块看着不起眼,实际是竞赛评分里一个比较容易失分也容易被忽略的环节,做好它,你的论文在“数据分析”和“模型构建”两个部分都会显得很扎实。

第一步是数据清洗。缺省值如何填补?异常值怎么判断?是剔除还是平滑?每一步都要在论文里写清楚。比如缺失值,你有均值填充、中位数填充、通过插值方法填充等选择,不同选择背后要说清理由。第二步是数据可视化探索。把每个变量的分布画出来,变量与变量之间的相关性矩阵画出来,这些图放在论文里,立刻就能传递一个信息:你认真分析了数据,而不是直接套算法。第三步是归一化和标准化。如果模型里要用到距离或者梯度,这一步非常重要,你还要在论文里明确写出用了什么方法,以及为什么选它。

我管这个流程叫“数据仪式感”。只要能摆出数据预处理流程,论文的专业感瞬间就上来了。其实很多获奖论文用的模型并不玄妙,但他们在数据探索阶段花了很多功夫,这些努力评委是看得见的。

4.2 模型选型的“够用就好”原则

新手最常犯的毛病,就是模型越复杂越安心。实际上在MCM里,评委更关注的是你如何把一个现实问题转化成数学问题,再对这个数学问题选择合适的求解方式。如果你的问题本质上是线性的,你非要用一个深度学习模型,评委只会觉得你在炫技而不是在解决问题。

我给你一个参考思路:先建一个最简单的基准模型,比如线性回归、常微分方程、基础评价模型,把结果跑出来,作为baseline;然后再在这个基础之上,结合问题特性添加复杂度。这样做的理论依据有两个:一个是你始终有一个可对比的下限结果,另一个是当复杂模型出了问题时,你可以回到简单模型继续推进论文。评审时你还能在论文中写一句“作为对比,我们同时计算了简化模型的结果,复杂模型在关键指标上提升了多少百分比”,这反而是加分项。

建模手心里要对常见题型对应的模型有一个映射表。优化问题优先考虑线性规划、整数规划、动态规划;预测类问题考虑回归、时间序列、灰色模型、微分方程;评价类问题考虑层次分析法、熵权法、TOPSIS、模糊综合评价;分类/聚类问题就用聚类算法、决策树、朴素贝叶斯。我不是说这几个就是万能药,但它们是保底方案,先把保底拿稳,再想着加新花样。

4.3 灵敏度分析怎么做才不扣分

这里面有一个多数队伍都会犯的错误:把灵敏度分析当成一个可有可无的“装饰品”,草草应付了事。评委非常看重这一块,它反映的是你对模型可靠性的思考。如果你模型里任何一个参数都未做过灵敏度分析,几乎就等于告诉评委:“我这个模型我都没测试过”。

正确的做法是:从模型中挑出2到3个参数,把它们在合理范围内±10%、±20%地变化,看模型输出结果的变化幅度有多大。把结果画成曲线图或热力图,在论文里写清楚:某个参数从多少变到多少的时候,结果的变化趋势和变化幅度是怎样的,这说明了模型的稳定性还是敏感性。这一部分不需要深度数学推导,一张图和一段话就能说清楚,但它能显著改变评委对论文的严谨性印象。

我个人的经验是,将灵敏度分析单独作为一个小节放在模型稳定性验证段落里,而不是匆忙放在结论后面。更重要的是,要把分析结果“讲出话来”,比如“当参数α在0.2到0.8之间波动时,最优解几乎没有变化,表明模型对该参数不敏感;但β超过0.5后结果出现明显波动,说明该参数是决定性因素,需要留意估计精度”,这种表述会让评委觉得你们真的在思考模型的有效性。

5. 论文写作:让评委十几秒看懂你的方案

5.1 摘要写作的黄金结构

如果只能做好一件写作上的事,我会选择摘要。MCM的摘要用一页篇幅独立成文,很多评委先读摘要,然后决定这篇论文能不能进到下一轮细读。一句话概括就是:摘要决定你能不能“入围”。

我建议的摘要结构是:第一段写“我们解决了一个什么样的现实问题”,用两三句话交代问题背景和你们的核心任务;第二段写“我们建立了什么模型”,把每一问对应的模型和计算方法简明列出;第三段写“我们得到了什么关键结果”,把最重要的几个数值或结论直接写出来;最后加一两句模型检验和推广价值。摘要里绝对不允许出现没解释的符号,也绝对不允许把英文写得支离破碎。如果你对英文写作没有信心,那就使用清晰简短的主谓宾结构,哪怕句子简单,也胜于长篇套话。

还有个经验:摘要要在论文全部完成后再动笔写,因为这个时候你才知道所有结果是什么。但草稿可以提前打,先写下每段第一句话的思路,最后再合并成文。你需要至少留出两个小时给摘要重写和润色。

5.2 图表才是真正的信息密度担当

作品里如果全是公式和文字,评阅体验会非常压抑。一张好的图,胜过五百字的文字描述。MCM评审时间有限,图表就变成了你与评委沟通的“第一语言”。

按照我的经验,几类图表是必备的:问题框架流程图(从原始问题到模型输出,这一步超级重要)、数据探索图(数据分布和相关性)、模型结构图(模型内部逻辑)、求解结果对比图、灵敏度分析图。每张图表都要有编号、标题、坐标轴标签、单位。尤其是坐标轴,很多队伍把图贴进去,坐标轴标签是宋体、字号忽大忽小,甚至轴名都没写,这种细节特别影响观感。

我不建议你用最花哨的3D图或者彩虹色,反而采用干净的单色或同一色系的渐变色会显得很专业。图像清晰度也要注意,保存为PDF或高清PNG,不要用模糊的截图。排版时图的大小要适中,不要撑满整页,也不要小到看不清。一个简单的检查方法:把论文打印出来看一眼,你觉得看着舒服的,评委大概率也会觉得舒服。

5.3 公式排版的几个致命细节

公式排版看起来是技术活,其实是态度问题。我见过连公式都没用编辑器、直接插入图片的论文,这种论文在第一印象上就输了。建议团队提前准备好LaTeX环境,或者如果不想用LaTeX,至少用Word自带的公式编辑器,保证公式可选中、字体统一、编号规范。

公式编号一定要按章节编号,比如(3-1),(3-2),并且在论文正文中要引用这些编号。所有公式里的变量符号,要在第一次出现时解释含义,单位也要标注清楚。很多队伍自己定义了十来个符号,但不给符号表,评委根本不知道符号含义。这里给大家一个建议:建模手在建模阶段就整理出一页“变量符号表”,放在论文附录里,正文第一次出现时再解释一遍,这个动作极其加分。

还要注意的一点是,论文里的公式不要全部手工推导好几页,那会把篇幅推到很远但信息密度很低。公式要服务于模型解释,不是用来充当门面的。如果一个公式不重要,不引用,那它就没有存在的意义。

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

6.1 想做太多导致全盘崩盘

我自己带过一支队伍,题目是做一个多目标优化问题。建模手上来就把需求变成了“既要考虑成本最小、又要考虑时间最短、还要考虑风险最低”,结果连目标函数都写不出来,代码改来改去一直报错,直到比赛最后一天才回到单一目标加约束条件的方式。这个队伍最后的论文呈现得特别仓促。

这类问题在于需求没有优先级。正确做法是先定出主要目标,其他诉求作为约束或次要目标来处理。多目标优化可以,但要采用“分层序列法”——先求第一目标,把它作为约束再加第二目标。你完全可以在论文里说明:“我们综合考虑了成本和时间,考虑到本问题的核心诉求是成本,因此先以成本最小化为目标,时间作为约束条件,后续通过灵敏度分析验证该处理的合理性。”这些话说清楚了,模型难度也会显得很高,还不至于失控。

6.2 编程手和建模手脱节

许多小小的低级坑:建模手把模型描述得很抽象,编程手听完愣是不知道怎么实现。等到编程手按自己的想法实现了另一个模型,结果发现和论文里建模手写的模型对不上。这是非常普遍的情况。

解决方案是:建模手画一张“模型流程图”,从输入到输出,每一步的变量名和公式都写清楚,交给编程手。编程手实现完代码之后,反过来把代码的核心逻辑用自然语言回读给建模手听,确认一致后才开始正式运行。这个过程可以嵌入到时间线第二段里,虽然多花一小时,但能避免后期大返工。

6.3 不查文献就开干,等于闭着眼开车

MCM每一道题都是有现实背景的,前人可能已经研究过类似问题。你要是完全无视文献,自己从零造轮子,大概率会漏掉很多关键考虑。更糟糕的是,有一种参赛情况是:你们花了一天时间研究出的某个模型,结果一查文献发现是某篇论文里的一个特例,你们自己还不知道。建议在题目确定后,用前两小时集中查文献,重点看这个领域的经典模型是什么、已有的解决方案有哪些不足之处、有没有可用于数据支撑的公开报告。

文献引用不要堆砌,只引用你真正参考的内容。在论文末尾放一个参考文献列表,引用格式保持一致。这一段能看出你的学术视野,千万别让它开天窗。

6.4 常见问题速查表

问题症状解决办法
题目选择犹豫不决开赛6小时后还在换题两小时内用评分矩阵定题,一旦选定绝不更改
数据清洗不彻底模型结果明显不合理先绘制数据分布图,再使用合理填充/剔除策略
模型过于复杂程序跑一次需要2小时以上简化假设,采用启发性算法或降低精度要求
摘要写作太晚最后半小时潦草完成提前9小时完成第一稿,预留两轮修改时间
图表格式混乱图例、标注缺失在最后6小时安排一次格式化审查
分工不清三人同时操作一台电脑按建模手、编程手、写作手职责严格协作
代码版本混乱回退时找不到旧版本使用云端同步工具并定时保存版本 + 每次修改记录

7. 一些额外想说的实操心得

我带过的队伍中,真正能拿好成绩的,不是那些看起来最聪明的,而是规划和执行做得最扎实的。竞赛的72小时看似很长,其实每一小时都会过得飞快。如果你赛前没有准备好论文模板、没有练熟常用代码框架,那现场就会陷入一种手忙脚乱的状态,再强的能力也发挥不出来。

关于写作语言,MCM要求英文写作,但关键不是你的词汇有多高级,而是表达清晰、准确、逻辑通顺。有些队伍用了一堆复杂句,结果语法错误百出,得不偿失。我建议写作手提前掌握一些学术写作的常用句式,比如描述模型“we propose a...”,描述目的“in order to...”等,用简单句把意思说清楚就足够了;如果想增加可读性,可以在段落首句点出这一段的功能,例如“In this section, we...”。

最后关于比赛心态,我再分享一个自己的故事。有一年我们碰上了一个全新的题目,要求建立自然灾害影响的评估模型。我们前半天完全没头绪,建模手甚至想过放弃。后来我们做到了两件事:一是把问题拆得非常细,从“灾害发生前、中、后”三个时间阶段分别建小模型;二是从简单的统计模型开始,逐步叠加因子。最后论文虽然没有用到什么惊艳的算法,但逻辑完整、分析详实,最终成绩超出了预期。这件事情给我最大的感触是:MCM比赛到最后,比的其实是谁能在压力下保持有条理的推进。别慌,拆细,分步,每一步都要留下文字记录,你就是赢家。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询