
1. 先把华为杯的脾气摸清楚再谈怎么备赛每年暑假一过数学建模和华为杯这两个词在研究生群里的出现频率就会突然拉高。很多人是本科打过国赛读研后第一次碰这场比赛直接把本科那套经验原封不动搬过来结果发现节奏、题目风格、评审口味全都不一样。先交代这篇内容的适用对象大四刚保研的、研一刚入学的准备报名中国研究生数学建模竞赛圈内习惯叫华为杯的从组队、选题、四天节奏到论文成稿这篇基本能覆盖到打过一两届的老手可以跳过基础部分重点看选题策略和后面那节踩坑记录。先给个最朴素的定位。华为杯是研究生阶段的赛事面向在读硕士、博士通常三人一队报名窗口一般开在六到八月比赛排在九月中下旬赛程大致是四天——周四晚上放题、周一中午截止交稿具体时间以当年官方通知为准。奖项分一等、二等、三等一等奖比例通常在百分之一到百分之二这个量级二等加三等大概能到百分之十六七每年会有浮动想知道确切数字的同学直接翻当年官网的成绩公示别信群里转发的截图那种十有八九是上一届或者干脆是编的。它跟本科国赛最大的区别是开放度。国赛很多题是有标准答案的你算出来的数跟参考答案对不上基本就掉档了华为杯的题更接近真实工程问题或者实际业务场景数据量更大、问题更松评审看的是你的建模思路合不合理、假设站不站得住、结论能不能自圆其说而不是你那个数字是不是精确到小数点后三位。所以备赛的重点从来不是背算法而是练一套从陌生问题里快速抽取结构的能力。1.1 赛制、时间线与那些容易被忽略的门槛很多人第一次报名会卡在一些鸡毛蒜皮的地方我列一下容易出问题的环节。报名是通过官方竞赛系统进行的一般要求队长先注册、建队然后队员依次加入队伍信息提交后通常还要经过学院或研究生院这一级审核有的学校会统一收集名单再报。这里最容易翻车的是截止时间报名截止往往比比赛早一两个月而且分注册截止和信息修改截止两个节点晚一步就只能等明年。我见过有队伍三个人都注册好了结果忘了点最终提交白白错过。参赛资格这块也要提前确认。一般要求是在读研究生部分年份也允许已获研究生入学资格的应届本科生参加但每个学校执行口径不太一样最稳妥的做法是直接问你们学校负责竞赛的老师或者看研究生院发的通知。队伍构成上理论上三个人可以是不同专业实际上跨专业组队往往更有优势因为华为杯很多题是交叉学科一个懂编程、一个懂数学、一个懂业务背景这样的组合比三个同专业的纯数学选手更抗打。题目设置上通常有 A 到 F 六道题覆盖工程控制、优化调度、数据分析、网络通信、社会经济统计、交叉学科等方向。每道题下面又分若干小问从基础建模到模型改进层层递进。像前几年 A 题出现过偏硬件调度、控制类的方向B 题常是优化与运筹C 题偏数据挖掘和预测E 题经常是统计评价类。这个规律不是绝对的每届都会调整所以别指望按题号猜方向还是得开题后现看。1.2 和本科国赛、五一赛到底差在哪把三个赛事放一起比一下心里就有数了。本科国赛高教社杯九月开赛三天题目偏经典数学建模强调结果准确、论文规范五一赛时间短、题目相对轻量更像是练手华为杯四天题目偏实际、数据复杂、开放度高。三者的能力要求其实不一样。维度本科国赛五一赛华为杯赛程长度三天三天左右四天题目风格经典、有标准解轻量、练手向偏工程/实际、开放评审侧重结果准确论文规范完成度建模思路合理性创新数据处理量中等较小偏大常含真实数据团队规模三人三人三人鼓励跨专业看这张表就知道拿国赛那套死磕标准答案的打法来打华为杯容易在建模阶段就把自己憋死——因为很多题压根没有唯一解。反过来华为杯练出来的快速给出一套能自洽的模型的能力回到国赛也不会吃亏。所以我一直建议如果时间允许两个都报用五一赛或者校内的模拟赛找感觉用华为杯练真本事。2. 组队与分工三个人的活怎么分才不打架组队这件事说难也难说简单也简单。我见过最强的队伍是一个数学系的负责建模、一个计算机的负责编程、一个经管的负责写作和查资料三个人都不是顶尖但配合默契最后拿了一等奖。也见过三个奥赛金牌凑一起建模阶段就为用什么方法吵了两天最后草草交稿。组队的核心不是找最强的人而是找能一起熬过四天、还能正常说话的人。先说一个反常识的点三个人的专业背景最好错开但脾气要相近。错开是为了互补——建模的人想得深但可能不会写代码编程的人上手快但数学直觉一般写作的人能把一堆散乱的东西捋成一篇像样的论文。脾气相近是为了在高压下不爆炸。四天里尤其是第二、第三天模型跑不出来的时候队内气氛会非常紧张这时候如果有个甩锅型队友整个队伍基本就散了。2.1 角色配置的常见误区最常见的误区是一人一岗、泾渭分明。现实往往是交叉的建模的人需要写点验证代码编程的人需要理解模型假设写作的人也要能看懂中间结果。所以分工应该是主责补位而不是各扫门前雪。我一般建议这样分主建模负责把问题抽象成数学结构定模型框架、写假设、推公式同时要能独立用 Python 或 MATLAB 验证核心思路。主编程负责数据处理、算法实现、跑实验、出图最好还会一点调参和可视化。主写作负责搭论文骨架、写摘要、整理图表、统一符号赛程前期还要负责查文献、找参考数据。共同职责审题、定题、每天固定两次碰头同步进度、互相检查对方的产出。这里有个经验主写作的人千万别被当成打字员。很多队伍把写作的人晾到最后一天结果第二天、第三天做的东西根本没记录最后一天全靠回忆论文写得干巴巴。正确做法是写作的人从第一天就跟着走边做边记每天产出一版草稿最后两天只需打磨。2.2 选题策略六道题怎么挑选题往往比建模还重要。选对了题四天顺风顺水选错了题第四天还在补数据。我的建议是开题后的前 3 到 4 小时全部用来审题三个人各自快速通读所有题目然后交叉讨论最后锁定一道绝不回头。判断一道题值不值得选可以问自己四个问题数据够不够附件里给的数据是否完整、格式是否清晰。数据缺得太多、需要自己去找外部数据的题风险偏高。方法有没有谱看到题的一瞬间脑子里能不能浮现两三种可行的建模路线。如果完全没思路大概率做不出来。小问之间能不能拆华为杯的题通常有 3 到 5 小问最好是每问相对独立这样即使某一问卡住其他问还能拿分。队友有没有兴趣这个很玄学但很真实。如果三个人看到题都两眼放光那多半能坚持如果都皱着眉趁早换。注意选题阶段最长别超过半天。我见过有队伍第一天上午都在纠结选哪道到了晚上才开始建模最后时间完全不够。犹豫的成本比选错还高。3. 赛前一到三个月的准备节奏真正的备赛从赛前一两个月就该开始了。很多人以为备赛就是多刷几道题其实更重要的是把工具链和流程固化下来让四天里不用为这个库装不上这张图导不出来这种小事浪费时间。备赛的目标是把所有能提前做的准备工作提前做完把四天全部留给思考。3.1 工具链和代码模板的准备先列一套我个人觉得够用的工具组合不追求大而全追求顺手用途推荐工具说明数值计算Python (numpy/scipy)、MATLAB两者都行看队友习惯数据处理pandas、openpyxl处理 Excel、CSV 很顺机器学习scikit-learn、statsmodels预测、回归、分类够用优化求解pulp、cvxpy、scipy.optimize、LINGO线性/整数/非线性规划作图matplotlib、Origin论文图一定要清晰流程图draw.io、Visio画建模框架、算法流程论文排版LaTeX 或 Word 模板提前调好模板别现学光有工具不够还要准备代码模板。具体来说赛前应该写好这几类可复用的脚本读数据并做基础清洗的模板、常见的插值/拟合/预测模板、几种优化问题的求解模板、画标准论文图的模板坐标轴、字号、图例统一。这些脚本在赛前就调通、测试过比赛时直接改参数就能用。别小看这一步四天里你至少能省下大半天。还有一个容易被忽略的准备统一环境。三个人最好用同一套 Python 版本和依赖包或者干脆一个人跑代码、另外两人看结果。我吃过这个亏——队友在他电脑上跑通的东西到我这里因为版本不一样报了一堆错折腾了两个小时。后来我们的做法是赛前建个共享文档把环境配置、依赖清单、常用脚本路径全写进去谁改了环境就更新文档。3.2 用往届真题做反向拆解训练刷题的正确姿势不是从零做完一整套而是反向拆解。什么意思找一套往届华为杯的优秀论文官网和很多学术平台都能找到历年获奖论文先不看论文内容只看题目然后自己列一个建模提纲这道题我会怎么拆、用什么方法、需要什么数据。列完之后再翻开论文对比看人家的思路跟我的差在哪、好在哪里。这个训练方法的效率非常高因为它跳过了解题的执行环节直接训练最核心的建模直觉。做一套完整的题要三四天但拆解一篇优秀论文只要一两个小时一个周末就能拆五六篇。坚持拆两三周你会明显感觉到自己审题的速度变快了看到新题能很快定位到合适的模型类型。拆解的时候重点看这几个地方摘要怎么写的摘要是不是把问题—方法—结果—结论四段讲清楚了有没有一眼就能看出贡献点。模型假设怎么提的为什么提这些假设假设对后面结果有什么影响。小问之间怎么衔接的第一问的结果是怎么为第二问服务的是不是层层递进。图表的展示方式哪些结果用图、哪些用表为什么这么选。提示找优秀论文时优先看近三年的模型和工具更新快五年前的论文参考价值有限。另外注意甄别网络上流传的所谓优秀论文有不少是学生仿写的参考文献和数据来源那部分可以帮你判断真伪。3.3 补上那些本科没学过的短板本科数学建模和研究生竞赛之间有几块常见的知识断层赛前值得补一补优化建模线性规划、整数规划、多目标优化的建模方式以及怎么把实际问题翻译成规划问题。这块几乎是华为杯的常客。统计与回归多元回归、时间序列、聚类、主成分分析尤其是怎么判断模型的显著性和合理性。图论与网络最短路径、最大流、网络优化网络类题目常用。微分方程建模连续系统的动力学建模工程类和物理类题目会遇到。不用学得多深能看懂、能套用、知道什么时候该用就行。网上有大量免费课程和教材Python 的官方文档和 scikit-learn 的教程也足够详细。我个人更推荐用时再学——先拆解论文遇到不懂的方法现查这样记忆更牢也不容易陷入学了一堆用不上的困境。4. 四天赛程的实战节奏控制四天时间说长不长说短不短。真正拉开差距的是节奏。我见过太多队伍前两天慢悠悠第三天才发现来不及最后一天通宵赶稿、错漏百出。也见过节奏拉满、每天准点收工的队伍最后成绩反而更好。下面按天拆一下我认为比较稳的节奏。4.1 第一天审题、锁题、搭框架第一天晚上放题从放题到第二天早上是整个赛程里最关键的窗口期。我的建议是把第一天的任务严格限定为三件事审题、锁题、定框架。审题阶段三个人各自通读全部题目每人给每道题打个分数据完整度、方法把握度、兴趣度然后碰头。碰头时不要急着争哪道题简单而是让每个人讲一下自己觉得能怎么建模讲得越具体越好。谁的方法路线最清晰那道题就是候选。锁定之后就不要再翻了——我见过太多吃着碗里看着锅里的队伍第二天又回去看别的题结果哪道都没做深。定框架阶段把选定题目从头到尾捋一遍写一份一页纸的提纲每一小问打算用什么方法、需要什么数据、预期产出什么结果、小问之间的逻辑关系。这份提纲就是后面三天的作战地图。提纲写在共享文档里三个人都能看到避免各做各的。注意第一天千万别急着写代码、跑模型。见过有队伍拿到题就埋头调参结果模型方向错了白跑一整天。方向对了后面才快。4.2 第二到第三天建模、求解、反复迭代这两天是真正干活的时间也是队伍最容易出矛盾的阶段。我的经验是先出粗结果再逐步精修。不要一上来就追求完美模型先跑通一个最简版本得到一个能对得上的结果然后再往上叠改进。这样即使时间不够也有一版能交的东西兜底。具体节奏上第二天的目标是完成第一、二小问的建模和求解产出初步结果和图表。第三天上午推进第三、四小问下午开始做模型的灵敏度分析和改进。中间要留出时间做交叉验证编程的人跑出来的结果建模的人要能解释建模的人提的假设编程的人要能验证。两个人对不上一定是某个环节出了问题当天就要解决别拖。这段时间的沟通频率要高。我一般建议每天固定两次全员同步中午一次晚饭后一次。每次同步控制在半小时内只说三件事——昨天做了什么、今天要做什么、卡在哪里。卡住的问题当场决定是绕过去还是停下来解决。最怕的是有人一声不吭自己憋憋到晚上发现方向全错。4.3 第四天成稿、排版、检查最后一天全部用来做论文不再碰模型。这是很多队伍吃亏的地方——第四天还在调模型论文只写了半天结果格式乱、图表糊、摘要敷衍评审第一印象就崩了。第四天的节奏建议这样排早上八点到中午把论文主体问题重述、假设、符号说明、模型建立与求解写完中午到下午三点补上结果分析、灵敏度分析、模型评价下午三点到五点统一排版格式、核对图表编号、检查符号一致性晚上做最后一次通读重点看摘要和结论然后按官方要求生成 PDF 并提交。排版这一块有几个硬性要求一定要提前确认论文页数限制、字体字号、页边距、是否需要封面、附录是否计入页数。这些细节每年可能微调以当年官方模板为准。别用网上随便下载的模板用官方给的。5. 论文写作评委其实在看这几样东西论文是唯一的交付物模型做得再好写不出来等于零。评审一轮要看几十上百篇平均每篇停留时间很短所以第一印象极其重要。哪些部分最影响印象按我观察到的经验排序大概是摘要 模型部分 图表 其他。5.1 摘要怎么写才抓人摘要是整篇论文的门面也是最容易写砸的地方。很多人的摘要写成了流水账把每小问干的事罗列一遍读起来没有重点。好的摘要应该是自洽的——不看正文光读摘要也能明白你解决了什么问题、用了什么方法、得到了什么结论。我一般用四段式来写摘要第一段问题背景 核心任务两三句话说清这道题要干什么。第二段针对每一小问说明用了什么模型/方法为什么这么选。第三段主要结果把关键的数值结论、趋势判断放进去最好有具体数字。第四段模型的特点、改进之处以及结论的实际意义。写摘要一定要克制别堆术语。评委看的是逻辑不是词汇量。另外摘要最后不要用综上所述通过本文这类话收尾直接以结果或结论结尾即可干净利落。5.2 模型建立与求解的表达规范模型部分是评审重点看的地方。这里最常犯的错误是只给结论不给过程——直接甩出一堆公式然后说求解得……中间怎么来的完全略过评委会觉得你没想清楚。规范一点的写法是先讲建模思路这个实际问题是怎么一步步抽象成数学结构的做了哪些简化为什么可以这么简化。然后写模型建立给出完整的数学表达包括目标函数、约束条件、变量定义公式要编号。再写求解方法说明用什么算法、为什么选这个算法、参数怎么定的。最后才是结果与分析给出结果解释结果说明了什么做灵敏度分析看模型对参数是否敏感。假设部分要特别注意。模型假设不是越少越好也不是越多越好关键是每一条假设都要有理由并且要说明这条假设对结果的影响。比如假设系统处于稳态你要解释为什么可以这么假设如果不成立会怎样。评委很吃这一套。5.3 图表、符号说明、附录的处理符号说明是很多队伍的失分点。一篇论文里符号多、杂如果不提前整理读者读到一半就晕了。标准做法是在模型建立之前放一个符号说明表把主要符号、含义、单位列清楚。表里的符号必须和正文完全一致不能正文写 $x_1$、表里写 $X_1$。这个表我建议在写论文的过程中随时维护别等到最后一天现整理那样一定漏。图表方面几个原则图要清晰、字号够大、坐标轴有标签表要有表头、单位、必要时加注释图和表都要有编号和标题正文里要引用。别放那种糊成一片的截图宁可重新画。附录里放代码、详细数据、补充推导注意附录不计入正文核心页数但也不要拿附录凑数。还有一点论文里的所有数字结论都要能追溯。正文里写某指标提升了 23%这个 23% 是从哪张表、哪段代码里来的评审可能不会去查但你自己心里要有数。我习惯在写论文时把关键结果的来源标注清楚方便最后核对。6. 常见问题与踩坑记录最后这一节是我这些年自己和身边人踩过的坑都是真金白银换来的教训。有些看起来是小问题但在四天的高压下一个小问题能拖垮整个队伍。6.1 提交与格式上的那些坑提交失败是最高频的事故。常见原因有几个文件太大超过系统限制、PDF 生成时公式或图片出错、系统在截止前最后半小时拥堵、文件名不符合要求。应对方法很朴素提前一天生成好 PDF提前半天完成提交绝不卡点。我认识一个队伍模型做得特别好结果截止前一小时系统崩了没交上一年的努力白费。PDF 生成也有讲究。如果用 Word公式多的时候导出容易乱码建议关键公式用公式编辑器重新排或者直接上 LaTeX。如果图片是截图分辨率调高一点别等到最后发现打印出来模糊。还有人把整个代码文件塞进附录占了十几页正文反而被挤得没地方了这是没必要的。文件名和提交格式一定要按官方通知来别自作主张。有的年份要求提交论文 PDF 支撑材料压缩包有的只要求 PDF看清楚了再交。提交后在系统里确认一遍状态看到提交成功才算数。6.2 模型跑不出来、结果对不上怎么办这是建模阶段最让人崩溃的情况。我的排查顺序一般是先看数据再看假设最后看代码。大部分模型跑不出来其实是数据问题——缺失值没处理、量纲没统一、异常值没剔除。先做数据体检能解决一半以上的问题。如果数据没问题再看模型假设是否和实际情况矛盾。比如假设了线性关系实际数据却是非线性的那模型怎么调都别扭。这时候要么改假设要么换模型。最后才是代码问题。调试代码时用小数据先跑通比如先拿 10 行数据测试整个流程确认逻辑对了再上全量。我自己的习惯是每写一个模块就单独测一下别等全部写完再一起调那样一旦报错很难定位。结果对不上时还有一种可能是正常现象。有些题的参考答案本来就不是唯一解你算出来跟别人的不一样不代表你错了关键是你的结果能不能自洽、能不能解释。这种情况下把假设和推导过程写清楚比硬凑答案更重要。6.3 常见问题速查表把上面这些经验整理成一张表方便快速对照。问题现象可能原因处理建议提交系统报错文件过大/格式不对/系统拥堵提前半天提交压缩图片核对格式PDF 公式乱码Word 导出兼容性问题用公式编辑器重排或改用 LaTeX模型跑不出结果数据未清洗、量纲混乱先做数据体检统一单位剔除异常结果和别人差很多假设不同或模型非唯一解检查假设写清推导保证自洽队友进度对不上沟通不足、分工模糊每天两次同步问题当天解决论文页数超了附录堆料、排版松精简附录压缩正文篇幅图表模糊截图分辨率低重新出图矢量图优先符号前后不一致未统一维护符号表建立符号表随写随更新提示赛前一定要做一次全流程演练找一套真题按四天的节奏完整走一遍包括提交环节。演练一次能暴露 80% 的流程问题比看十篇攻略都管用。我个人这几年带队伍、当队友、看论文最大的体会是华为杯拼的不是谁更聪明而是谁更稳。稳在选题不折腾、稳在节奏不乱、稳在论文不掉链子。模型可以有瑕疵结果可以不够漂亮但只要四天里每一步都踩实了交上去的东西一定是完整的、能自圆其说的这就已经超过一大半队伍了。备赛阶段多花点时间把工具和流程理顺比赛时你会发现剩下的就只是安心做题了。