0. 前言

笔者在上个月(22年11月)参加了数学建模亚太赛。由于是第一次参加数学建模的比赛,没有前人和老师指点,很多东西靠自己摸索,吃了不少亏。
比赛已经结束有一段时间了,这几天趁着有时间写一份心得,希望能帮到有需要的人。


1. 赛前准备

自我评估

有参加比赛的愿望总归是好事,但是如果你单纯为了拿奖想参加,那我劝你别报。因为数模比赛与其他比赛不同,它更像是一场马拉松,如果你没有兴趣或者相关能力做支撑,很容易半途而废。
不论你是想担任建模手,编程手,写手,我建议你:

  • 至少掌握一门编程语言,可以不用学的太深,主要目的是了解编程的思想,使用它只是次要目的
  • 学会Excel并精通,如果你不擅长编程,Excel能救你一命
  • 会英语,不用精通,至少把四六级过了,如果英语不好,找资料以及和队友沟通都困难
  • 最好学过线性代数,概率论,统计学
  • 擅长查资料(不是指擅长用百度),最好平常有多种的信息来源

以上几点不是必备条件,但是建议都有,因为如果不具备这些条件后期临近比赛再恶补会很麻烦。
确认自己是否有充足时间参与学习数模,以及确保自己不会因此落下学业,毕竟比起比赛,学业更重要。

组队

队员分工

首先,比赛前两三个月就需要组好队了。关于组队这方面,首先一定要选择彼此能性格契合的队友,且最好不要是关系特别亲密的朋友,因为比赛期间很有可能发生争执甚至吵架,如果因为这个原因把人际关系搞杂了不是很好。提前两三个月的时间主要是为了有足够时间互相了解,了解其他人的优缺点,有足够时间换队友等。建议对队友也按上一条自我评估的标准评估一下。之后就拟定每个人负责的方面,一般一个人主要负责一个,即建模手编程手写手,并且选一下队长。有的比赛是允许1人或者2人参赛的,那么也要提前规划好分工,利用赛前时间提前学习或者复习对应内容。一定要和队友约法三章:不要中途退出,不要摆烂,不要发脾气

指导老师

指导老师也是团队的一部分!很多人会不重视这一点,所以不会提前选择指导老师。和队员的要求一样,指导老师需要提前两三个月沟通联系好,了解一下是否有足够能力担任本队的指导任务,再约法三章。

注:笔者因为没提前了解过指导老师,随便选了一个老师,比赛期间老师经常失联,导致我们孤立无援只能自己想办法,浪费了很多时间

学习与复习

完成组队之后就可以开始学习了,建议不论个人分工先把所有的数模相关的概念了解一遍,可以不用看太细,有印象即可,后期比赛如果用到再去详细看。
这里推荐清风的数学建模视频,比较适合零基础的同学学习,但是视频比较多,需要提前几个月开始观看

由于后半部分是付费的,可以上YouTube找有人上传的完整版看,内容是一样的
不论个人分工,最好对所有工作都有了解,以防突发状况。而你需要把你分工相关的内容重点看一下。

建模

建模方面可以先将所有方法都系统地了解一下,至少知道有这个方法以及这个方法是用来做什么的。后期比赛过程中就有方向了,可以上网再详细学习了解。

编程

注意区分编程语言,编程软件,代码的概念。编程不仅仅是代码,而是一整套逻辑思想。
时间充足的情况下建议先学习建模方法再学习对应的代码,并且试着自己写一套。建模手需要有一个自己的代码仓库(比如GitHub)来存储自己所有的原创代码,因为比赛时间很紧张并且代码需要查重,没有时间从头到尾写代码。
编程语言建议学习Python和MatLab,其他的如Lingo,R等也都可以,只要你觉得对你有帮助都可以。

写作

建议去学校图书馆找比赛论文相关书籍,能找到许多相关的书籍。也可以上网找,只要你觉得有帮助。
一定要学会使用Latex做公式和排版,个别小比赛规定不严不要求使用,但是美赛和国赛是一定会规定的。

比赛前一个星期

  • 准备好一个以上的排插,一包抽纸,移动电源,草稿纸,浓缩咖啡
  • 有需要的话再准备一个路由器,最好是OpenWRT系统的,方便小组的学术上网
  • 去图书馆借书,把和数模相关的教程书籍,论文等都借走,比赛期间随时查阅,很多时候求助搜索引擎不如翻书快
  • 如果比赛在校内进行,建议去找学校教务处申请借一间教室,方便小组的讨论。借之前先去一下,了解一下是否有安排上课或者里面是否有同学在里面自习。最好是有黑板和多媒体可以使用的。一定要确保有一个能自由讨论不被打扰的环境。
  • 比赛前几天调整好作息,适应早睡早起,因为有的比赛第一天一大早就发题目了,需要留足时间讨论确认选题。
  • 如果课表有课冲突了,提前向任课老师请假,后期再自行补课。
  • 调整好心态,既不能太紧张也不能太放松。

2. 比赛

审题

第一天一大早就发题了,团队可以一起吃个早饭同时讨论一下选题。AB题题量少难度大,C题难度小题量多。一般选C题的人较多,可能评奖的难度也大。需要合理斟酌。
可以搜索一些过去的论文,看看是否有类似的题目,看看自己是否能接受。
注意:题目一定要读完,包括参考资料的链接也要打开看看,很有可能题目做到后面缺了什么在参考资料里就写的很详细。

时间分配

比赛时间很紧张,往往一道题所建立的模型会推倒重来很多遍,而这会浪费很多时间。
以这次亚太赛为例,四天时间可以大致安排如下:

Day1Day2Day3Day4
上午拿题,确认选题修正第一题并完成修正第二题并完成小组润色论文
下午第一题建模与编程,写手同步写论文框架第二题建模与编程商讨文章内容上传论文并确认无误
晚上写手开始写第三题第二题建模与编程写手开始写论文

不同比赛与选题对时间分配要求不同,需要合理安排时间和分工。

信息获取

学会使用互联网来查找你想要的内容。请戒掉使用百度的习惯,百度的信息相当不可靠且充斥着大量的广告。请使用谷歌和必应。
中文的技术内容,比较优质的来源有知乎,CSDN,简书等,以及各种大佬的个人博客。
英文内容建议直接在Google上用英语搜索,一般Google的搜索结果比较靠谱。
建议擅长使用英文搜索找英文信息而不是中文。
查找相关论文建议使用知网和Google Scholar,前者中文内容覆盖比较全,后者可以多语言搜索,英文偏多,中文也有覆盖,最为全面。

数据获取与处理

获取

通过搜索引擎可以搜索到一些现成的数据,比如如果想要找新冠每日新增数据可以在Google搜"COVID-19 daily new cases data CSV download",将所有关键词输入,就能找到很多有效的信息。一些大学,研究所,政府机构会在官网上提供这些数据,通常是.csv格式的,用Excel可以直接打开,经过一些Excel的处理就可以使用了。
如果有能力写爬虫,也可以自己从一些网站上爬数据。当然,如果有现成的数据更好。

处理

大部分的数据处理是无法人工完成的,因为一些数据可能动辄上万行的数据记录,凭人工是无法处理的。可以使用Python,Excel等做预处理,再导入到MatLab里做进一步处理。

关于SPSS

使用SPSS工具可以直接生成数据分析结果以及一些图像。一些工具比如SPSSPRO(注意,这个是一个国产产品,不是IBM的SPSS)可以直接生成论文和图像,省去了很多繁琐的步骤。关于是否能直接使用生成的文章暂且存疑,SPSSPRO的官方声称是可以直接使用的,但是我们咨询过指导老师,使用该产品省略了太多步骤,不适合比赛使用。建议个人斟酌。

3. 赛后

做总结

可以自己写一篇心得,就如我现在做的一样。

保存资料

比赛所有写的论文,代码,建议本地存一份,云端备份一份(比如开一个GitHub的private仓库),不要比赛完了就把东西丢掉,因为很有可能下一次比赛可以用到。
有个GitHub的代码仓库是个好习惯,建议比赛结束后将代码重新整理上传。

继续学习

总结比赛中有哪些不足,之后再去学习相关内容。

Last modification:December 14, 2022
如果觉得我的文章对你有用,请随意赞赏