博主目前本科,因此所分享的经验也是关于本科类竞赛。如果某些比赛描述带有歧义,一律按针对本科生的竞赛处理。
博主本人参加2019年数学建模国赛,获国家级一等奖,并于2020年参加美赛(更新:美赛出成绩了,F奖,有点小遗憾)。接触各类数学建模类比赛有一年多的时间,几天前美赛论文的提交也算是为本人的数学建模竞赛画上了句点。在准备竞赛和实际比赛的过程中,参考了不少前人的建议,也总结出了自己的一些经验。现拟以【数学建模类比赛经验分享】系列博客的形式和大家分享。鉴于2020年美赛分两周进行,比赛尚未结束,因此系列博客的将以国赛经验分享为首篇,待美赛正式结束后再进行相关更新 :)
以下内容摘自百度及全国大学生数学建模竞赛官网,用以帮助萌新简要了解国赛,已经知道的朋友可以跳过这一节。
数模国赛即全国大学生数学建模竞赛。
全国大学生数学建模竞赛创办于1992年,每年一届,已成为全国高校规模最大的基础性学科竞赛,也是世界上规模最大的数学建模竞赛。2019年,来自全国及美国和马来西亚的1490所院校/校区、42992队(本科39293队、专科3699队)、近13万人报名参赛。
1、培养创新意识和创造能力
2、训练快速获取信息和资料的能力
3、锻炼快速了解和掌握新知识的技能
4、培养团队合作意识和团队合作精神
5、增强写作技能和排版技术
6、荣获国家级奖励有利于保送研究生
7、荣获国际级奖励有利于申请出国留学
8、更重要的是训练人的逻辑思维和开放性思考方式
以上是百度百科给出的意义描述。总的来说还算中肯,这是一个训练性强,令人收获颇丰的竞赛。(当然,多数人主要是受加粗那两点的利益驱使吧hh(ง •_•)ง)
比赛要求
- 全国统一竞赛题目,采取通讯竞赛方式,以相对集中的形式进行。
- 竞赛每年举办一次,一般在某个周末前后的三天内举行。
- **大学生以队为单位参赛,每队3人(须属于同一所学校),专业不限。**竞赛分本科、专科两组进行,本科生参加本科组竞赛,专科生参加专科组竞赛(也可参加本科组竞赛),研究生不得参加。每队可设一名指导教师(或教师组),从事赛前辅导和参赛的组织工作,但在竞赛期间必须回避参赛队员,不得进行指导或参与讨论,否则按违反纪律处理。
- 竞赛期间参赛队员可以使用各种图书资料、计算机和软件,在国际互联网上浏览,但不得与队外任何人(包括在网上)讨论。
- 竞赛开始后,赛题将公布在指定的网址供参赛队下载,参赛队在规定时间内完成答卷,并准时交卷。
提交结果为解决方案的论文,论文部分要求如下(以2019年为例)
第一条,论文用白色A4纸打印(单面、双面均可);上下左右各留出至少2.5厘米的页边距;从左侧装订。
第二条,论文第一页为承诺书,第二页为编号专用页,具体内容见本规范第3、4页。
第三条,论文第三页为摘要专用页(含标题和关键词,但不需要翻译成英文),从此页开始编写页码;页码必须位于每页页脚中部,用阿拉伯数字从“1”开始连续编号。摘要专用页必须单独一页,且篇幅不能超过一页。
第四条,从第四页开始是论文正文(不要目录,尽量控制在20页以内);正文之后是论文附录(页数不限)。
第五条,论文附录至少应包括参赛论文的所有源程序代码,如实际使用的软件名称、命令和编写的全部可运行的源程序(含EXCEL、SPSS等软件的交互命令);通常还应包括自主查阅使用的数据等资料。赛题中提供的数据不要放在附录。如果缺少必要的源程序或程序不能运行(或者运行结果与正文不符),可能会被取消评奖资格。论文附录必须打印装订在论文纸质版中。如果确实没有源程序,也应在论文附录中明确说明“本论文没有源程序”。
简单来说,就是三天时间,三个人针对一个实际数学问题给出解决方案,并将解决方案撰写为一篇20页以内的论文以及支撑论文结论的资料和源程序。(虽然官方只给出上限,但其实按经验来说至少要写够18页,所以任务量还是比较大的。)
这是一个团体竞赛,,组建一个好的团队是在竞赛中脱颖而出的基石。接下来我将对何为好进行解释。
1.专业构成合理
国赛主要需要完成三部分工作:模型建立、模型求解以及论文撰写。好的队伍一般三个人各有一个擅长的工作,并负责该部分工作。例如,一名理工科成员负责建模、一名文科专业成员负责写作、一名计算机相关专业负责编程。这里只是举个例子,并不一定有严格的专业限制,比如我们队就是由三名计算机类专业成员构成,思维较为活跃的专攻建模、文笔排版好的负责写作,编程能力好的负责编程。
2.空闲时间重合度高
虽说比赛只有三天时间,但是其准备时间还是较长的。拿我们队伍来说,我们从暑假前一个多月开始准备,期末暂停,暑假花了大概一个月做了一些往年的题,然后开学后又在比赛前自己组织集训了一周多。所以说,各成员的空闲时间最好重合度高,这样比较好协调。
3.目标统一
三个人最好都是以必得奖的心态对待这次比赛,有一人稍有懈怠都是对整体士气不利的。例如,二带一学妹/弟,情侣档参赛等,还是最好不要这样组队。
4.性别/性格搭配
据说最佳搭配是2男1女,理由是男女之间互相的展现欲带动整体团队的效率…这个理由虽然有点牵强,但是男女搭配确实有一定意义:男生和女生思维方式有差异,搭配在一起可能会迸发许多新点子或者产生对问题更深入的理解;当然也不局限于性别,团队性格互补也可以:最好有天马行空的也有严谨认真的,这样可以让你们的结果有新意又不至于太跳脱。
当然,以上只是我个人的见解。团队最重要的还是配合,可能你们团队的初始属性在别人看来不是那么优秀,但是你们在不断的训练与磨合后工作效率十分高,也可以认为是不错的团队。
组好队后,推荐按这种方式分工:一人主建模副编程、一人写论文兼美工、一人编程副建模。这里简单解释一下:1)按照主要任务来分工为建模、论文、编程;2)由于论文中需要适当的插入图表、绘制示意图等,因此需要一名成员负责美工,一般由论文成员兼职;3)由于不同题型对于编程和建模的要求不同(物理背景的题对于建模的要求较高,而数据分析类题对于编程要求较高),因此建模和编程的同学要有一定的流动性,即主攻一个副学一个。
简单分工后就可以开始进入练习阶段了,为了方便描述下以“建模”、“论文”、“编程”指代上述分工,并且由于各小组实际情况差异,我只列出需要做的事,具体完成用时因小组而异。
数学建模基础,可以分解为数学基础和建模基础来看。数学基础,即高等数学、线性代数、概率论等基础课程,基本学完这些课之后就可以认为具备数学基础;建模基础就是运用数学方法解决实际问题的思维,要求对于各类模型有系统性的了解,这部分基础的培育可以看参考书(如司守奎的《数学建模算法与应用》)或者网课(慕课/B站等)
我认为,数学建模就是用基础模型搭好总体骨架,再通过想象创新、引入智能算法等加以血肉来完成完整的建模。基础决定着大方向,因此务必要重视。
和备战各类考试和竞赛一样,国赛也需要刷题。这个推荐在国赛前的暑假进行。主要目的:
1)互相监督,防止懈怠。暑假是大家时间最好协调的时候,当然也是最容易松懈的时候。与其定一堆好看的计划然后互相练习不到,不如一起做一些题,一起学习。
2)化理论为实践。踏实一点,三天之内从选题到做完一道题后,你们会很清楚你们的弱势是什么,及时的去查漏补缺。
3)学习前人经验。无论是做不下去参考着往年优秀论文做还是做完后“对答案”,总归是要看一些优秀论文的。这时候就见贤思齐吧,总结他们得奖的原因,并向他们学习。
具体实行形式就是,定一个连续的三天时间,模拟国赛,从发题选题到做题,硬着头皮做下来。具体做几套题可以依实际情况而定。我们组一共做了七套题,仅供参考。
每次练习的过程中,各成员要按照自己的分工,各取所需:
建模:总结优秀论文在模型创新点、使用算法、考虑方面上的优点。例如,对于数据分析类的题,模型检验的是有必要的,但是我们第一次做时就没有考虑到这一点。
论文:学习论文结构、行文方式、常见示意图形的绘制方法、排版等。因为论文是最终的结果,如何把你们的模型清楚的表达是需要一定技巧的:思路是用文字还是示意图展示?结果是放图还是放表?图表怎么布局?这些都是通过向他人学习以及在练习过程中自己总结。
编程:认真对待每一次练习,将练习过程中的程序整理保存好作为自己的代码库。一般来说,如果练习的题目相互差异较大,一个假期的练习下来,代码库的覆盖面应该合格了。如果觉得不够,编程的同学需要再花些功夫整理一个自己的代码库出来,不一定都是自己写的,也可以是复制或下载的,但要都调通,并且知道那些地方可以改动,尤其是复杂算法的实现,在比赛中很可能就是找一个写好的改一些参数和输入来得到结果。最后,因为我是编程的,这里插一句关于编程语言的选择问题。目前竞赛中常规的两种语言是MATLAB和Python,尽管Python总体来看是强于MATLAB,但鉴于比赛主要涉及科学计算和数据分析,孰强孰弱还真不好说。我的建议是,如果两种语言都没有基础,就学习MATLAB吧,MATLAB集成度很高,帮助文档也很全,对于竞赛来说是完全够用的。否则,就把有基础的语言往深里学即可。当时我被迫学了一些Python是为了画图,因为MATLAB被队友吐槽画图丑,现在看来也不尽然,稍微改一改参数你画出来的图还是可以看的,比如这张。
这部分其实也包含一些非必需的赛前准备,我把它归为注意事项来分享。
1.论文排版
练习时看的优秀论文没有排版太丑的,我们就默认排版和得奖有一定联系(尽管可能并没有),因此我们队非常注重图的美观性和排版,在这方面下了不少功夫。图的话不好说,它与画图人的审美直接挂钩,但是排版上,这里推荐一下用Latex写论文,尽管入门比word稍微复杂一些,但是稍加练习就可以掌握,关键是一劳永逸…学成之后解决了一大半排版的烦恼。
2.比赛场地
听说有些学校是提供宾馆住宿的,如果这样最好;我们学校没有,最后还是选择找了个酒店住。因为熬夜几乎不可避免(本人三天睡了10个小时),频繁更换场地又很耽误时间,最好还是找个酒店一起做。
3.合理作息
比赛那几天的作息,规律是不可的,但是一定要科学。建模或者编程前一定要稍微休息让头脑保持清醒,思路理顺之后再该怎么肝怎么肝。我在国赛第一天选择通宵,结果第二天编程时,脑子几乎不响应了,最后去躺了一个多小时才可以正常工作。所以在这里提醒大家,不要盲目肝,做重要的工作前稍微睡一会,保持头脑清醒。
4.心态调整
在比赛过程中,我们在第二天陷入半崩溃状态,因为模型和编程都很慢。不过还好大家都互相鼓励,本着如果做不上来也太丢人了的心态去和赛题较劲,硬是熬了过来。不过那天我们还是有喝酒的、有和父母打电话的、有散步看月亮的…互相帮助着调整心态其实也很重要,现在回想起来,当时我们要是有任何一个人情绪崩溃,我们就只能弃赛了。
=============================================================================
本人的参赛经验差不多就是这些,这里只是从总体来分享一些经验给大家。至于比较干货的部分,比如源程序、画图技巧等,我考虑将其归为技术模块,后续以资料或者技术博的形式更新,谢谢大家的浏览!另外,再次匿名感谢我亲爱的队友~