从2014年到2017年——我的数模经历

来源:互联网 发布:网络统计直报平台 编辑:程序博客网 时间:2024/04/29 17:50

白天刚结束了今年的研究生数模,想到这可能是我最后一次参加数模了,还是挺有感触的。故把本人四年建模的一些所思所想记录在这里。

四年数模经历

从建模课到找队友

我并不是一开始就参加数学建模比赛的,在这之前,有半个学期的数学建模课,至于为什么要去上这个课,大概有两个原因,一个是因为大一的时候和两个同学的很随意的口头约定,说明年一起参加数学建模(当时还是通过数学竞赛才了解到有数学建模这回事的),那个同学也是我至今最好的朋友之一。还有一个原因,那个时候因为个人感情问题比较失落,想找一些事情转移一下注意力,于是就去参加了建模。现在想想,还真是有点荒唐,连自己都有点不能理解。最后在后来的校内赛也仅仅拿了三等,感觉那个时候如果自己没有在感情上遇到挫折,应该会发挥的更好,也因为自己的原因,还连累了两个队友。

话说回来,这门课是我们学校理学院的刘老师带的,刘老师上课很是有趣,总是会通过生活的中的各种例子来启发我们的思考。我还记得刘老师给我们讲的第一个数学建模的例子是分析椅子能否在地面上放平的问题(该问题出自清华大学姜启源教授的《数学模型》这本书上),这个看似简单的问题,对于当时的我们来说却显得很抽象,刘老师带着我们沿着书中的思路,将一个直观的现实问题一步步转化成一个数学证明问题。当时心力就觉得,哇!数学还能这么玩?刘老师绝对是一个很聪明的老师,除了我之外,我想还有很多人被他一步步带入数学建模的世界。

不过虽然开始的时候很好,一切看似正常,但后来要组队的时候,比较尴尬的事情出现了。数学建模是三个人一队参赛的,我本来是想和我的两个好朋友组队的,但是突然有一天得知消息,那两个好朋友的一个人能因为前一阶段转专业的关系,认知了另外一个人,并且和他一起组了队,然后把另一个朋友也拉了过去,我一下子变成了光杆司令,感觉像是被抛弃了一样。说真的,那个时候真的不是滋味,虽然表面上我和她们说没事,时间还早,我可以再找队友。其实我心里真的很急,我曾试图想拉我另外两个好朋友和我一起,不过他们表示都没有兴趣,后来我又拉了我的两个部员,结果其中的男生过来上了一节课后,感觉什么都听不懂,就退出了。我觉得如果他能来上刘老师的第一节课,可能就有兴趣了,真是可惜。不过让我欣慰的是,另一个女生Vicky表示很感兴趣,虽然还缺一个队友,不过对于那个时候那种状态下的我,已经非常高兴了。在后来的一段时间,Vicky的闺蜜,同时也是我的同学lingyi刚好从美国学习回来,表示也想参与进来,我们一拍即合,终于组成一个完整的Team了。

2014年6月 中丹杯校内赛

我们第一次参加数模比赛是紧接着数模课程后的“中丹杯”校内赛,是我们学校为选拔参加全国大学生是数学建模竞赛做准备的。我还记得题目大概是做食品分类的,通过常规的聚类算法就可以解决。不过对于刚接触的数学建模的我,很多思想压根不懂,一切都是现学现用,学校也充分考虑到大家都是新手,给了我们两个星期的时间,我本来以为两周时间很充分,所以我们一拖再拖,直到交论文的前两天,我们才真正开始做起来,查文献、想算法、写代码、写论文,弄了近两天两夜才勉强做出来。那两天应该也是我本科阶段第一次高强度的通宵。虽然感觉自己做的不怎么样,但对于第一次参赛的我们,能够比较完整地完成一次比赛还是很兴奋的。

2014年9月 高教杯全国大学生数模

接下来的是暑假一个月左右的建模培训和国赛,培训期间我才意识到,中丹时做的食物分类问题是数模里再简单不过的问题。对于培训期间遇到历年国赛的各种题目,几乎是无从下手。再加上我队友暑假有事不能来参加培训,我们平时交流问题也是各种不方便,甚至有的时候自己一个人看着题目心里想着放弃。但后来又一次次把自己从放弃的边缘硬扯回来,因为我不想干一件事中途就放弃,不想让周围的人嘲笑,不想连累的我两个队友。就这样硬是撑到了国赛,题目是嫦娥三号月球软着陆轨道计算,说真的,那次比赛几乎把我们打垮了,一个三个问还是四个问我记不清楚了,我们一个问都没做出来,甚至连一个完整的模型都没有。我觉得那次比赛我们辜负了我们导师的期望,而作为队长的我也因承担主要责任。我开始怀疑自己,怀疑自己的能力,刚提交完论文的那一刻,我只想赶紧溜走,再也不要回到建模的世界。

过了一段时间,比赛结果公布,我好朋友的那一队拿了省一等(在参与全国评奖的时候不幸被刷),而我们这一队啥都没有。这对我我来说真的又是一次打击。我不想就这样被打败,因为真的不甘心,我两个队友也是。于是,我们开始反思,反思我们队的问题出在哪。得出的结论是,我们三个人平时的交流太少,同时课余时间也没有很好地去学习建模的相关知识,分工不明确,导致在比赛期间有点不知所措。于是,交流过后,我们决定继续参加寒假期间的美国大学生数学建模。并在此之前,明确了各自的分工,三个人不定期地交流最近看的东西,其中我负责学习算法和编程,那段时间,我几乎天天学习MATLAB,接触数学建模中常用的各种算法,虽然很多算法都不怎么能看得懂,但也能明白如何在MATLAB使用了。因为对于数学建模,你不一定要完全搞懂一个算法,而是只要理解这个算法的功能和如何使用就能比较好地解决问题了。现在想来,那段时间接触的一些东西,尤其是神经网络,对我现在的科研学习还是很有影响的(因为我现在的方向是机器学习和计算机视觉,需要用到神经网络和深度学习的理论)。

2015年2月 美国大学生数模

美赛算是我数学建模经历中的一个转折点。我记得当时是2月初,学校刚好下了很大的雪。供我们比赛的机房空调好像还坏了。我们选的题目是埃博拉病毒的传染病模型,要求大概是选择某一个地区建立病毒传播模型,并指定药物分配策略。相比无于国赛,我们这次时间规划得很有条理,不管是模型建立还是编写代码进行模型求解,都顺利多了,我想这和我们之前的准备有关系。最后不得不说的是,由于是美赛,论文需要用英文写,而刚好我的两个队友的英语都非常棒,我们的指导老师陈老师也及时与我们交流问题,所以最后这次比赛的最终获得的一等奖主要归功于我的两个队友。

通过这次比赛,我们也大概了解了国赛和美赛的区别。国赛大多数题目都需要按照题目的思路进行准备地建模,很多题目都会有相对固定的答案;而美赛相对开放性更强,但相对于国赛,会抓不到题目的重点,容易跑偏。从题目难度上感觉美赛略微简单一点,但差距不大。而我们也发现更时候做这种开放性的题目,因为可创新的地方比较多,容易出亮点。

不管怎样,当看到自己的付出有所回报时,还是很开心的。虽然事后听到一些关于我们队的闲言闲语,但我我们并不在意,自己通过努力换来的成果,何必在意他人的说三道四。

2015年5月 MathorCup国际赛(CAA世界大学生数模)

美赛后,我似乎重新燃起了对数学建模的热情,总觉得一切结束的太快。于是又和我的两个队友商量,是否愿意再参加一次?Vicky表示赞同,而lingyi表示后面可能没有时间,很遗憾退出了。没有办法,我和Vicky一边网上看看最近有没有比赛,一边重新找队友。就在那个时候看到了MathorCup国际赛(全名很长,叫MathorCup全球大学生数学建模竞赛暨CAA世界大学生数学建模挑战赛),感觉还不错,就直接报名参加了,导师我们还是联系了美赛的导师。

这次的题目是是针对网上某一商品的评论,将对商家有参考意义的评论筛选出来。本质上是一个分类问题。题目非常短,只有四五行,所有的数据都是需要自己来找。我们还是头一次遇到这样的问题,看似简单却无从下手。因为我从来没有做过文本分析,所以当时感觉就懵了。还好陈老师有一定的经验,他建议我们用C++做文本分析,其中也给了我们很好的帮助。其实这应该是一个典型的机器学习二分类问题,但当时我们还没有这一块的概念。只是糊里糊涂地拿过来用了一下,大概思路就是自己去网上找了一些评论数据集,然后人工标注了一下,接着在一部分数据集中做一些词频统计,并取出权重较大的词用于对剩下的评论集做评估。

后来我接触机器学习的相关知识后,再回想这次比赛,我觉得我们在模型中用到的关键词权重更新机制是我们拿了二等奖的关键。因为这其中融入了一些机器学习的思想在里面,只不过那个时候的我们自己都没有这些概念。而我在看历年比赛题目的时候也发现,最近几年的比赛中关于大数据和机器学习的题目开始逐渐活跃起来。这应该和大环境有关吧。这样的一个好处是数学建模可以面向更广大的群体,题目的开放性也大大提升。因为往往数据挖掘这一块的题目是非常开放的。

2016年9月 华为杯研究生数模(第13届)

2015年的9月,我因为数学建模的原因,成功保上了硕士研究上。可喜的是,我的两个一起参加数学建模的好朋友也顺利保上了研究生。在大四下学期,我们三个商量着明年再一起参加研究生数模。一方面因为那么长时间没有建模了,或多或少有点手痒吧,另一方面,也算是完成当初三个人没有一起组队的遗憾吧。

一年后,我们回到了当初比赛的地方,又开始了持续四天的比赛。当然,我们之前还是做了点准备的,因为考虑到研究生数模要比本科生数模更专业,我们翻开了前10年的比赛题目,并总结我们队的优势和劣势。比赛开始的时候,我们也是轻车熟路,很快就进入了状态,我们选的是关于等位基因的一些研究问题。这题应该属于数据挖掘类型的题目,虽然题目的答案可能是唯一的,但是可选的方法比较多,所以开放的空间还是很大。一共四个问,我们应该是做出来三问,最后一个问应该是做错了。所以最后只拿了二等奖。

但参加了这么多比赛,我们似乎已经没有那么在意拿什么奖了,我们更多的是开始享受建模的过程,享受大家在一起一起交流并解决问题。这其中的乐趣,在其他地方真是很难感觉到的。似乎一年一次的建模成了我们的传统,每到这个时候,就要在一起过个节。

2017年9月 华为杯研究生数模(第14届)

其实这次比赛刚结束,我是在结束当天休息完后写这篇博客的。相对于上一次的数模,这次还是有点吃力的。我觉得主要问题出在我,因为我是负责编程的,而我们的进度也是在第一问的程序结果上卡了两天。因为程序运行的结果一直不理想,所以我们就反复地去检查代码,直到第二天半夜,我们竟然决定临时换题目。这在数模上几乎是没有办法的办法的,因为换题目太耽误时间。不过,第三天早上,一个学长在我们程序的基础上成功跑出了理想的结果。我们瞬间斗士又回来了,又复查了一遍我们的程序,竟然也调试出了正确的结果。我们自己也很疑惑,到现在我都没有想到当时的问题出在哪里。不管怎么样,有了第一问的基础,后面的题目进度就很快了,我们也在接下来的两天里把前两天落下的进度赶了上来。总之最后也算是比较完整的完成了这次的比赛。

比赛结束后,其中的一个朋友因为学校里有事,直接就回去了,另一个同学和我在学校一块吃了顿饭,两人也交流了一些以后的打算。大概就是以后应该不会再参加数学建模了。一是考虑到研三的时候事情可能比较多,而是考虑到更想参加一些其他的比赛,尝试一些新的东西。总之,我的建模生涯应该到此宣告结束了。

数模带给我的东西和未来的一些计划

相比于数模给我带来的各种奖项,我觉得更有意义的是在四年的数模生涯中自身多方面能力的提升。其一是编程能力,因为数学建模离不开程序求解模型,而我在每次比赛中负责的就是编程,所以对我来说,提升最为明显的是自己的编程能力;其二是阅读专业文献的能力,每次接触一个新的问题,我们都需要阅读比较多的相关文献。而且因为时间有限,我们必须在短期内迅速从海量文献中筛选对自己有帮助的信息;其三是表达能力和沟通能力的提升,建模是一个团队的比赛,在比赛中清楚地表达自己的观点和想法极为重要,这方便了队友之间的交流,加快解决问题的进度;其四是建模能力,建模本身就是一种能力,通俗的讲,就是将现实中的物理模型,经过合理的假设和简化,抽象成一种可解决的数学模型,这对于日后解决实际问题是非常有帮助的。

现在自己读研二,自己规划的路应该是偏向于科研,可能一年后会选择联系一个导师继续读博,闲暇之余会多学一些编程(目前在学C++和python),合适的话也会尝试一些新的竞赛(比如数据挖掘机器学习相关的),同时也会选择看一些课外书,这主要考虑到我的课外阅读量太少了,平时阅读的书籍都局限在自己的专业书籍。如果有机会的话,以后还想出去转转,接触一下不一样的学习和生活,不过这些都是以后的事了。

阅读全文
0 0
原创粉丝点击