
1. 赛前准备从“知道”到“做到”的鸿沟每年九月的那个周末对于全国几十万大学生来说都是一场没有硝烟的“头脑风暴”。2020年的全国大学生数学建模竞赛在疫情的特殊背景下如期而至。作为一项已经举办了近三十年的赛事它的名头早已响彻各大高校但真正参与其中你才会发现从“知道”这个比赛到“做出”一份像样的答卷中间隔着一条巨大的鸿沟。很多队伍包括我们赛前都觉得自己准备得差不多了但真正拿到题目、打开电脑的那一刻才意识到之前的准备有多么“纸上谈兵”。赛前准备绝不仅仅是看几篇优秀论文、学几个算法模型那么简单。它更像是一场系统工程需要从团队、知识、工具、心理四个维度进行立体化的构建。首先团队是核心。一个典型的三人队伍通常由建模、编程、写作三个角色构成但这只是理想化的分工。现实中这三个角色的边界非常模糊。建模手需要懂一点编程来实现思路验证编程手需要理解模型逻辑才能高效编码写手更需要吃透整个建模过程才能写出逻辑清晰的论文。所以寻找队友时与其看标签不如看“化学反应”——你们能否在高压下高效沟通、互相补位我们队就是两个编程能力较强的同学加上一个文字功底扎实的同学但在实际比赛中我们三个人都深度参与了模型讨论和代码调试。知识储备方面最容易陷入的误区是“贪多嚼不烂”。市面上有太多关于数学建模的书籍和资料从微分方程到机器学习从图论到优化算法似乎每个领域都要精通。但根据我的经验更重要的是建立“工具箱”思维。你不必是每个领域的专家但你需要知道当遇到某一类问题时你的工具箱里有哪些可能的“工具”模型以及这些工具的适用前提、优缺点和调用方法。比如对于预测类问题你的工具箱里应该有时间序列分析ARIMA等、回归分析、灰色预测、机器学习模型如随机森林、LSTM。你需要清楚ARIMA适用于平稳时间序列灰色预测适合小样本、贫信息的数据而机器学习模型则需要足够的数据量。赛前我们花了大量时间整理这样一个“模型-问题”映射表并针对每个模型准备了基础的代码模板和案例这为我们在紧张的比赛时间内快速选型打下了坚实基础。工具链的熟练度直接决定了生产力。LaTeX是论文排版的绝对首选其优雅的公式排版和参考文献管理是Word无法比拟的。但LaTeX的学习曲线较陡赛前必须完成从环境安装如TeX Live VS Code、常用宏包学习amsmath,graphicx,hyperref等到模板定制的全过程。我们队赛前就用往年的题目练习完整地写过几篇论文熟悉了插图、制表、公式编号、章节引用等所有操作。编程环境以MATLAB和Python为主MATLAB在矩阵运算、仿真和经典算法如优化工具箱上优势明显而Python在数据爬取、处理以及调用丰富的机器学习库如scikit-learn, TensorFlow时更灵活。我们的策略是核心模型计算用MATLAB保证稳定和速度数据预处理和结果可视化用Python。此外像Visio或ProcessOn用于画流程图Git用于版本控制和团队协作这些工具都需要在赛前形成肌肉记忆。2. 选题开题在迷雾中寻找灯塔2020年9月10日晚上6点题目准时公布。我记得当时心跳加速刷新着官网页面。题目公布的那一刻三个赛题A、B、C摆在了面前。通常A题偏向物理、工程类B题偏向数据分析、社会经济学C题可能更开放涉及大数据或交叉学科。2020年的具体题目细节不便在此复述但那个选题的紧张感和决策过程至今记忆犹新。选题是战略决策开题是战术落地这两步走错了后面三天就是灾难。我们的经验是用最快的时间不超过2小时完成初步评估。我们三个人会分头快速阅读三个题目的全文不是精读而是带着几个关键问题去扫读1.问题背景我是否熟悉如果题目涉及一个完全陌生的领域比如复杂的化学过程或金融衍生品后续查阅资料和理解成本会极高。2.问题的核心要求是否清晰有的题目描述很宏大需要自己提炼出具体可解的数学问题有的则指向明确比如“预测”、“评价”、“优化”。前者更考验建模能力后者更考验模型应用能力。3.数据是否可得、可处理如果题目附带了数据要立刻评估数据量、规整度和可能存在的问题缺失、异常。如果没有数据需要评估自己获取数据的难度和可行性。4.我们团队的知识储备更偏向哪个方向这是最重要的主观因素。评估完后我们立刻开会讨论。每个人陈述对每个题目的第一印象、初步想法和顾虑。这里切忌“一言堂”或者为了选而选。我们当时对两个题目都有想法争论了将近一个小时。最后达成共识的标准是选择一个我们最有“感觉”并且能最快形成初步解题思路的题目。这个“感觉”很玄学但很重要它意味着你们团队对这个问题的理解深度和探索欲望。如果看了半天还是一头雾水即使题目看起来简单也最好放弃。选定题目后就进入最关键的“开题”阶段——问题分析。这是将模糊的赛题转化为具体数学问题的过程。我们的做法是拿出一张大白纸或打开在线协作白板围绕题目核心词进行“头脑风暴”式的发散。把所有可能相关的因素、变量、关系都列出来不考虑是否重要。然后开始归类、合并、剔除逐步抽象出几个关键的研究子问题。例如如果是一个评价类问题就要明确评价的对象是什么评价的指标体系如何构建指标如何量化数据如何支撑权重如何确定最后用什么方法合成评价结果这个过程一定要产出明确的“输出物”1.一个清晰的问题重述用你们自己的话把题目要求说清楚2.一个初步的技术路线图包括大致要用的模型和方法可以多准备几个备选3.一个初步的任务分工和时间节点。这个阶段不要追求完美关键是“破冰”让团队对接下来三天的努力方向达成共识避免中途反复和迷茫。我们当时开题会开了将近4个小时结束时已是深夜但每个人都对要做什么、怎么做有了清晰的画面这种心安是支撑后续高强度工作的基础。3. 建模求解理想模型与骨感现实的碰撞开题之后就进入了核心的建模与求解阶段。这是最烧脑也最容易产生挫败感的环节。你精心设计的理想模型往往会遇到“数据不配合”、“算法不收敛”、“结果不合理”等种种骨感现实。以我们当年选择的题目假设为一个数据分析与预测题为例。我们初步计划构建一个混合模型结合传统时间序列分析和机器学习方法进行预测。第一步是数据预处理这看似基础却消耗了我们大量时间。原始数据存在明显的缺失值和异常值。对于缺失值我们首先分析其缺失机制是随机缺失还是系统缺失我们采用了多种方法对比如直接删除数据量足够时、均值/中位数填充、以及用回归模型预测填充并比较了不同填充方法对后续模型结果的影响。对于异常值我们先用箱线图和3σ原则进行识别然后分析其产生原因是录入错误还是真实的极端情况如果是后者则需要谨慎处理可能包含重要信息。这个过程让我们深刻体会到数据清洗没有标准答案只有最适合当前场景和模型假设的方案。我们最终将处理过程、选择理由以及不同处理方式的对比结果都写入了论文这本身就是一个加分项。模型构建环节我们掉进了一个经典的“坑”模型复杂度陷阱。一开始我们总想用一个“高大上”的复杂模型比如深度神经网络来一劳永逸显得技术含量高。但实际跑下来发现由于数据量有限复杂模型极易过拟合在训练集上表现完美在验证集上一塌糊涂。同时模型的可解释性变得极差我们自己也说不清为什么预测结果是这样。在卡了大半天后我们决定回归初心数学建模竞赛的核心是“建模”即用数学语言清晰地描述问题而不是“炫技”。我们退而采用了一个结构更清晰的“分解-集成”思路先使用STL分解季节性-趋势性分解将序列拆解为趋势、季节和残差项然后分别用相对简单的模型如多项式拟合趋势、周期性函数拟合季节项进行预测最后再集成。对于残差项再用一个轻量级的机器学习模型如XGBoost来捕捉非线性关系。这个调整立刻带来了转机。模型不仅更快地跑出了结果而且每个部分的预测都有明确的物理或统计意义便于我们分析和解释。这个教训非常深刻在数模竞赛中一个简洁、合理、可解释的模型远胜于一个复杂、黑箱、不稳定的模型。评委老师更看重你运用数学工具解决实际问题的逻辑过程而不是你调用了多少最新的算法包。求解过程同样充满挑战。我们用的优化算法在某个参数区间内总是不收敛。排查后发现是目标函数的形态在某些点不可导导致基于梯度的优化器失效。我们不得不临时更换为不需要梯度信息的启发式算法如模拟退火或粒子群算法。这个过程让我们意识到对算法原理和适用条件的理解至关重要。你不能只会fminconMATLAB优化函数这几个字母还得知道它背后是哪种优化方法前提假设是什么。我们在论文中专门用一小节说明了算法选型和调整的原因这体现了严谨性。4. 论文写作将三天的战斗浓缩成二十页的故事如果说建模求解是“做菜”那么论文写作就是“摆盘上菜”。再好的模型和结果如果无法清晰、有力、美观地呈现出来也无法获得评委的认可。论文写作是贯穿始终的而不是最后一天的突击任务。我们从第一天确定技术路线后就同步开始了论文的框架搭建。在LaTeX中我们把摘要、问题重述、模型假设、符号说明、模型建立与求解、结果分析、模型评价与推广、参考文献、附录这些章节的骨架都搭好。写手同学负责主笔但建模和编程的同学必须持续提供“弹药”——即每个部分的核心内容、图表和结论。我们采用“渐进式”写作法而不是“瀑布式”。比如当天做完的数据预处理部分晚上就必须把处理步骤、方法选择理由、处理后的数据效果最好有前后对比图整理成文字和图表填入论文的相应部分。这样做的好处是第一记忆新鲜描述准确第二分散了最后一天的压力第三在写作过程中可能会发现模型或分析的逻辑漏洞可以及时反馈调整。摘要是论文的“门面”是评委最先看也是看得最仔细的部分。我们花了整整一个晚上来打磨摘要。一个好的摘要必须独立成篇在有限的字数内讲清楚一个完整的故事针对什么问题1-2句→ 用了什么方法模型名称关键创新点→ 得到了什么结果具体数值重要结论→ 有什么优势或价值模型评价。我们写完后三个人轮流朗读修改每一处拗口、模糊或冗余的表述确保即使不看正文也能从摘要中把握我们全部工作的精华。我们甚至模拟评委心态问自己“如果我是评委看完这个摘要有没有兴趣继续看下去”图表是论文的“眼睛”。我们坚持一个原则每一张图、每一个表都必须有明确的目的并且要在正文中对其进行引导和解释。比如我们画了一张技术路线图在“模型建立”章节的开头让读者一眼就能把握我们的整体思路。再比如展示预测效果时我们不仅给出了拟合曲线图还附上了误差分布直方图和关键的评价指标表格如MAE, RMSE, R²。图表要美观、规范坐标轴标签、单位、图例必须清晰无误。我们使用了MATLAB的exportgraphics函数或Python的savefigwith high dpi导出高分辨率的矢量图或高清位图确保打印效果清晰。模型评价与推广部分是体现思维深度的地方。不能只说“模型很好”要客观评价。我们通常会设计几个维度模型优点如原理清晰、实用性强、预测精度高、模型缺点如对数据质量要求高、参数较多等、模型灵敏度分析改变某个关键参数或假设观察结果的变化检验模型的稳健性、模型推广这个模型或方法稍作修改可以应用于哪些其他类似场景。这部分内容展示了我们不仅解决了问题还对解决方案本身进行了批判性思考。5. 协作、心态与那些“早知道就好了”的教训三天三夜实际是四天三晚的比赛是对智力、体力和团队协作能力的极限考验。除了技术那些“软性”的方面往往决定了最终能走多远。时间管理是生命线。我们制定了一个粗略的时间表第一天下午到晚上完成选题、开题和问题分析第二天全天攻坚模型建立与核心求解第三天完成模型求解、结果分析并开始论文写作第四天全天用于论文撰写、修改、润色和最终检查。但这个计划永远赶不上变化。关键是要设置几个不可动摇的“里程碑”节点比如第二天结束前必须得到初步结果第三天中午必须完成论文初稿。我们使用在线协作文档如腾讯文档共享一个任务清单每完成一项就划掉实时同步进度避免有人摸鱼或有人过度劳累。沟通协作决定效率。我们约定任何重大的思路调整或遇到无法解决的卡点必须立即发起小组讨论而不是一个人埋头苦干几小时。讨论时使用白板画图力求把抽象问题可视化。我们也经历了争吵比如在模型选型上各执己见。后来我们形成了一个原则“用结果说话”。当有分歧时不要空对空争论各自用最快的速度实现一个简易版本跑一个小规模的数据看哪个方法更有效、更稳定。数据驱动的决策最能让人信服。心态调整至关重要。第二天晚上当模型第一次跑出完全不合理的结果时那种挫败感和焦虑感是巨大的。我们一度怀疑是不是选题就错了。这个时候队长其实我们没有名义上的队长但总有一个更冷静的人扮演这个角色的作用就体现了。他叫了暂停让大家离开电脑去走廊聊了十分钟吃了点东西。我们重新回顾了最初的分析确认大方向没错问题可能出在某个细节参数或数据预处理环节。这种短暂的“抽离”和互相打气帮助我们稳住了阵脚。记住在数模竞赛中遇到问题是常态一帆风顺才是意外。比解决问题能力更重要的是面对问题和压力时的心态。最后分享几个“早知道就好了”的教训这些是很多参赛者包括我们用汗水换来的经验软件工具一定要提前熟练并做好环境备份。我们一个队友的MATLAB在比赛第二天突然崩溃重装浪费了一个多小时。赛前就应该把所有软件安装好并测试核心功能。代码和论文务必使用Git或网盘实时备份每完成一个阶段就提交一次。文献和资料要高效管理。比赛期间会下载几十篇甚至上百篇参考文献。千万不要堆在桌面。我们后来学乖了用Zotero或EndNote这类文献管理软件下载时就直接归类并做好简要笔记如这篇用了XX方法解决XX问题这样在写作需要引用时能快速定位。论文的“形式”同样重要。除了内容排版、语法、错别字这些细节绝不能忽视。我们最后留出了两个小时专门进行“机械性”检查交叉核对图表编号与引用、检查公式符号是否全文统一、运行拼写检查、统一参考文献格式。一个排版精美、零低级错误的论文会给评委留下严谨、认真的第一印象。结果的可视化要“讲故事”。不要只是堆砌图表。思考一下这张图你想向读者传达什么信息是趋势的比较是分布的差异还是关联的强弱给图表起一个信息丰富的标题在正文中引导读者去看图表的哪个关键部分并解释其含义。永远要有B计划。你的主模型可能会失败。所以在开题构思时心里就要有一个相对简单但保底的备选模型。当主模型受挫时能快速切换到B计划保证至少有一个完整的、能自圆其说的解决方案可以提交这远比在A计划上吊死到最后交白卷要好。全国大学生数学建模竞赛就像一场浓缩的科研训练。它带给你的绝不仅仅是奖项本身更是一种在有限时间内将模糊的实际问题转化为清晰的数学表述并通过综合运用知识、工具和协作去解决它的能力。这种能力对于日后无论是继续深造还是进入职场都是无比宝贵的财富。那段三天三夜与队友并肩作战、为一个问题绞尽脑汁、最终看到曙光的经历本身就已经是最好的奖励。