学生风采
当前位置是: 网站首页 -- 学生工作 -- 学生风采 -- 正文

数学建模国赛一等奖经验分享

发布日期:2022-05-24   点击量:

数学建模国赛一等奖经验分享

队伍介绍

马凤娇2019级经济学专业主要负责写作队长

卢欣一2019级经济学专业主要负责建模

王鑫昊2019级经济学专业主要负责编程

获奖:

2021年全国大学生数学建模竞赛全国一等奖

IMG_256

马凤娇

1.赛前多读优秀论文,学习文章整体架构以及语言描述方式,力争做到逻辑清晰、表达精炼。在文章结构方面,不难发现获奖论文都是有迹可循的。三位同学可以提前确定一个大家都认可的解题框架,在随后阅读论文时都按照这个逻辑线去思考,并不断优化调整。论文手可以根据这个解题框架提前设计模板,把字体、字号、行间距、项目符号、编号等设置好。在语言表达方面,建议多积累固定表述。例如,在模型评价部分,基于历史数据分析造成的时效性不强、评价体系考虑情形单一、实际数据与模型计算结果有偏差等是大部分模型都有的缺点,可以提前整理好备用。

2.赛时合理规划时间,把控写作节奏。对于论文手来说,比赛第一天能写的东西非常有限,但是在赛程末期又会面临海量的写作任务。我们队采用两个方法来化解这一矛盾:一是论文手先着手推进数据可视化处理。我们学校大部分同学应该都会选择C题,该题第一步通常为构建评价体系。由于该部分与后文模型关联性不强,因此论文手可以尽快完成数据侧写和图表制作,力求做到分析角度全面、颜色搭配美观。二是队内分工时不要将写作与建模完全割裂。建模同学对于模型的认知理解通常会更深刻,因此由建模同学负责模型部分的写作会极大提升团队效率。

卢欣一

1.赛前建模部分准备

1)学什么?——学习资源

书籍推荐:《数学建模算法与应用》司守奎、孙兆亮主编(现在版本更新了)

IMG_256

课程推荐:bilibili、中国大学MOOC等平台有很多建模课程,只要能坚持跟着学完,选哪一个课程都没关系。在选择课程上,个人认为有以下标准:

A.课程包含的建模方法全。

B.课程是偏应用而非理论的。主要介绍怎么应用,讲案例,而不是讲推导。

我们当时学的是bilibili上面的“老哥带你学数模”,但是这个课也不是十全十美的,相对还行。一年过去,现在可能有更好的课,大家可以按以上标准自己找找。

此外还可以关注一些建模公众号(以下列举部分)

通过这些公众号,我们一方面可以获取一些打包好的历年真题、优秀论文、方法汇总,另一方面可以阅读他们关于方法/案例介绍的推文。

IMG_256

2)怎么学?——学习方法

建模是团队比赛,而非单打独斗,而团队默契的培养和共同知识的储备从赛前学习就已经开始。此处有一个误区就是:负责建模的同学自己学建模方法,负责编程的同学自己学软件和代码,负责写作的同学自己看论文学写作。

首先,在比赛中,分工并不是割裂的,大家负责的部分会有重合。比如说负责写作和编程的同学也需要参与到问题梳理和模型建立中来,负责建模的同学也会完成建模部分的写作(具体分工需要参照不同团队成员的比较优势,每个团队都不一样)。

其次,三个人各学各的很难保证进度,同时也存在道德风险(你不知道对方学了没有,学得怎么样)。大家不能抱有“队友间关系很好/大家人品都很好,所以我们都会对团队负责”的想法,每个人在学习中都难免存在惰性,因此需要一定的机制和方法互相监督。

最后,一起学习也是培养默契、团魂的好办法。具体操作上,我们团队在赛前暑假里有一个月连续每周线上讨论,这一个月里面队长安排每周学习进度,讨论内容包括每个人汇报这一周进展、介绍自己学的东西,比如负责写作的同学就会带着其他人把这周学习的优秀论文梳理一下,分享心得,负责建模的同学会带着其他人把这周新学的方法介绍一下……

3)学到什么程度?——学习目标

对单个模型/方法而言:理解模型逻辑,明确模型应用场景,了解模型优缺点,会用即可。建议将学习过程和收集的资料记录下来,这个过程会帮助你更全面得理解模型,加深印象,同时,当你比赛遇见相应的问题时能迅速找到之前学习过的方法,而不是说“我记得之前学过,但是忘了具体在哪看见的”。对每个方法,最好找到一篇对应的论文总结起来,在比赛时遇见了可以直接找到这篇论文学习怎么使用该方法,要有明晰的步骤。

IMG_256

IMG_256

整体而言:对可能的各类问题和对应的主要解决方法做一个总结,做到在看见赛题时大致知道这是哪类问题,该用什么方法。除了常用方法,还应该积累一些不太常见,看着“高深”的方法。

2.比赛中建模部分问题

第一,问题梳理是大家一起做的,反复沟通,确保大家对问题的理解是一致的。

第二,每个人负责的部分都只是主要负责,遇见困难时,负责建模的同学不能一个人闷头苦想,要积极和其他队友沟通,一起想办法,其他成员也不能认为“我只负责我的这部分,你那里出问题了我不管”。比赛过程,需要随时沟通讨论,有集体意识。

第三,建模同学要考虑你所建模型在编程方面的可行性,不能给队友挖坑。

第四,对于大家讨论后也难以解决的问题,不要停留太久,先保证进度。

3.其他心得

第一,合作和配合对建模比赛是至关重要的,成员各厉害各的并不代表这个团队很好。在这个过程中,队长发挥很大的领导作用,队员也要积极配合。

第二,作息要规律,饮食和睡眠要保障。我们当时前两晚12点前休息,最后一个晚上会晚一点,每天早上大概都是7点前起床,中午半小时左右午休。

王鑫昊

1.要熟悉一些常用软件/编程语言,如ExcelSPSSMatlabPythonC++等。未必需要学习太多的软件和语言,但要保证精通已有的工具。实际上,Matlab自身的功能就已经足够强大,能够满足建模比赛编程的基本要求,那么学好Matlab这一门语言可能就能达到事半功倍的效果。不过,要注意的是,建模比赛并非编程比赛,因此相较于编程比赛中学好语言需要深度考虑算法问题,建模比赛中对语言的要求更体现在应用的层面,即能够针对一定的数据和模型给出较完美的解答——如能做到这一点,编程手就决不失为一个好编程手。而如想做到这一点,最重要的是在平时就建立起自己的算法/代码库。可以合理利用网络资源(公众号、知乎、CSDN、GitHub等等),理解好常用的、重要的算法的原理并收藏好(自己写当然更好,但最好“不要重复造轮子”)其代码,同时对照算法理清代码,以便后来临场应用时的修改和调整。对此必须注意,尽管自己的代码库中的代码可以都是拿来现成的,但一定不要以为单纯拿来就万事大吉了。现成的代码未必完全适用于未来的场景。因此,再次强调熟悉语言、具有一定的语言基本功的重要性!

2.编程手的队内沟通主要体现在和建模同学的沟通上。在我看来,二者既是合作伙伴关系(双方都必须考虑建模的思路,使用的模型、算法等诸事宜,尽管侧重点有所不同),又是甲方乙方关系(对于建模手提出的需求,编程手必须给予较完美的回应)。所以,二者紧密的沟通交流就非常重要,这也是决定比赛成败的关键因素之一。建议二者平时就可以加强沟通,时时交流关于题目、模型、算法的思考和理解;并且可以进行一定的模拟训练,在解决问题的过程中锻炼双方的能力、建立二者间的良好沟通机制。



——转载自UCASS聚萤映雪

版权所有 © 中国社会科学院大学    邮编:102488

地址:北京市房山区长于大街11号