赛氪
个人中心

数模竞赛经验心得|亚洲历史上首位蝉联两届美赛O奖的数模天王

2015-06-29 浏览 11166 收藏 53
2015 MCM/ICM国际大学生数学建模竞赛特等奖(Outstanding Winner) 2014 MCM/ICM国际大学生数学建模竞赛特等奖(Outstanding Winner) 2013 MCM/ICM国际大学生数学建模竞赛一等奖 2013年全国大学生数学建模竞赛一等奖,并入选湖南省2013优秀论文集 2012年全国大学生数学建模竞赛一等奖,并入选湖南省2013优秀论文集

=========================================

本文拒绝转载,但欢迎分享

=========================================

亚洲历史上首位蝉联两届美赛O奖的数模天王

=========================================

 

首先得感谢赛氪方面的负责人 赵松 师兄盛情的邀请,但由于我前段时间忙于毕业设计,所以这个数学建模竞赛的经验心得一直没来得及写。为了感谢你们的热情,我觉得应该尽量写一点干货。下面是我结合自己的经验体会和在学校交流上的讲稿进行整理的。

 

当2015年数模成绩揭晓的时候,作为组长的我感觉很吃惊,但已经没有去年的那种激动和兴奋了,好友觉得我们是得奖得麻木了。但是我想,这第二次获得 OutStanding 奖其实更多的是感到意外和幸运。

 

至此,我的整个本科数模生涯就此比较完美的划上了句号。这里我首先想感谢一直陪着我熬过多个夜晚的两个队友,丹玲和然爷,丹玲是一个非常聪明,有自己想法的女生,程然是一个非常乐观开朗的男孩。没有他们,我们的这个小队,不可能获得这么多奖项。然后感谢其他关心我支持我的Johnny,作作和毛线。还有雪婷姐、周浩学长等等。

 

我做一下自我介绍,我是张胜,来自国防科学技术大学,我喜欢音乐、慢跑。在大学四年中,我很有幸获得如下奖项:

 

* 2012年全国大学生数学建模竞赛一等奖,并入选湖南省2012优秀论文集

* 2013年全国大学生数学建模竞赛一等奖,并入选湖南省2013优秀论文集

* 2013年 MCM 竞赛 M奖

* 2014年 ICM 竞赛 Outstanding 奖

* 2015年 ICM 竞赛 Outstanding 奖

 

为了介绍下我们的心得,我从以下几个方面介绍,新人如何入门、如何组队、前期如何准备、比赛时间如何分配、赛后注意事项。

## 大一大二能参赛吗——新人如何入门

我大一下学期的时候,学姐突然找到我,问我要不要一起参加数学建模竞赛。当时我对这个竞赛毫无概念,而且,当时我们高数都还没有上完,更别说概率论、运筹学了。我和大家一样,当时有一个疑问,大一的自己可以吗?

 

但是面对学长学姐这么热情的邀请,我还是答应了。于是开始的时候,我们做校赛、模拟赛、选拔赛,开始的时候,我什么都不会,有时候在那里也是干着急。所以我在平时也会看一看数学模型和一些算法,于是,终于,我也能够在这个小组内发挥自己的作用,能够将学长学姐们的想法转换为程序进行实现。

 

在这期间,我曾经参加了学校的 ACM 比赛,并有幸进入学校的 ACM 校队。在校队期间,我抓紧学习的机会,在 OJ 上刷题,提高自己的编程能力,曾经在 OJ 上刷了400多道题。想想,这段时光为我的编程奠定了坚实的基础。

 

正是这段时间学长学姐的带领,让我走入了数学建模的殿堂,让我迅速熟悉了做数模得方法,注意事项。但由于各种原因,我们这个组在参加完美赛之后就解散了。

 

我总结新人可以通过以下方法入门:

 

首先,需要夯实自己的学科基础知识。有一些人可能觉得,竞赛是不是都可以参加,而且很好拿奖。不是。如果你的数学基础不好,高数线代还是不及格,我建议你在提高你的数学能力之前暂时不要参加数学建模比赛。可以说,数学应该是数学建模小组成员之间的交流语言,如果你语言都没有学好,如何跟其他成员交流。

 

其次,需要了解常见的数学模型。对于数学建模,如果你不知道一些基本的模型,你如何能够对题目中的问题建立一个合理的数学模型。因此,常见的模型,如智能算法(蚁群,退火、遗传等)、层次分析法、会建立规划方程、神经网络、主成分分析、以及现在比较热门的数据挖掘等等算法。对于入门的来说,你只需要知道各个算法**大致的原理,如何使用以及如何调用现成的程序**,不需要了解**公式的推导及更深层次的机理**,因为这些东西其一:你可能只需要借用特定的软件和库就能够完成,并且这样做可以减轻前期的工作量。其二:如果你想改进该算法,可以现学。(现在网络如此发达)

 

再次,需要学会站在巨人的肩膀上。邮电出版社的书貌似都有这句话。你所做的工作,**99%的别人已经做过了**。因此,要学会使用搜索,不要总是做伸手党。不是你找不到相关资料,而是你不会使用搜索引擎。

 

最后,作为新人,一定要认真向有经验的学长学姐老师们请教,让他们指出你的不足,这样你才能长足进步。

## 什么样的队友最适合自己——如何组队

经过一年和学长学姐们的努力,我们获得了一次国一奖,一次M奖。原来的组解散之后,我突然想自己组一个队,和我同一级的同学组队,于是我就找到了我同一级丹玲和然爷,他们很爽快的就答应了,于是我们就开始了我们的新一轮的数模之旅。

作为组长所需要考虑的东西和当时作为组员所需要考虑到东西还是有很大的差别的,不仅需要作为整个小组的负责人还要和老师还有队友进行联络。并且需要对人员任务分工,进度把握,问题方向做一个明确的决断,因此,作为队长一定不能过度犹豫,有的时候还是要当机立断,迅速做出决定。

 

真的真的非常感谢我的两位队友全力的配合,我们一起相处的相当融洽。

 

那么,我总结的组队原则如下

     *1人建模,1人写作,1人编程

     *各有分工,各有所专,但又有交叉。

 

前面一点大家都没什么异议,我想说的是最好分工能有交叉,比如编程的人能够一起参与建模,建模的人也可以参与写作,因为如果写作完全落在一个人的身上压力真的太大了。

我主要负责编程部分。但是,我们组通常是我们一起讨论建模,对于选题和解题思路模型的异议,我们通过民主投票表决,如果还不行我就拍板。然后在最后一天,通常我们另外两个人都会帮写作的童鞋一起进行写作,加快我们论文成文的进度。

 

那么,有的同学可能会问,我作为一个新手,我的工作是 XXX,我如何上手呢?

下面是我在学校做报道的时候的部分内容,是我对主要负责各个部分的人员的能力情况的评级。大家可以对照着看一看,大牛们看看,见笑了。

 

**写作者的三重境界****

 

高级境界:熟悉科技文章写作的基本套路和形式,熟练通过英文直接写作,逻辑和思路很好,读起来非常流畅。英文写作大概是雅思写作7up 水平。

 

中级境界:能够仿照优秀论文的形式进行写作。能够通过英文直接写作,有一定的逻辑和思路。逻辑和思路不错读起来通顺。大概是雅思写作6up 水平。

 

合格水平:能够形成中文的思路,并有效转换成英文。逻辑上可能存在不合理,读起来通顺。但可能还有些想法表达不清。

 

针对国赛,去掉上述关于英语部分的描述。

 

**建模者的三重境界**

 

高级境界:了熟各种建模算法于心,能够灵活运用,适当创造和改进算法。能够将自己的想法清楚和形象的表述。

 

中级境界:了解各类算法的基本想法,能够选择适当的算法,适当改进使其更贴近问题。能够清楚表达自己的想法。

 

合格水平:知道各类算法是干什么的,可以通过查询资料学习该算法。会使用各类画图软件。

 

**编程者的三重境界**

 

高级境界:熟读《算法导论》,拥有很强的计算思维(将人的想法转换成计算机的思维),熟练掌握一门编程语言。

 

中级境界:熟悉一门编程语言,能够调用现成的库和代码并做适当的修改。

合格水平:会使用一门编程语言,对各个基本算法的实现也有了解,能够在网络的帮助下跑通程序。

 

我在开始组队的时候不是特别的适应,主要问题体现在不能够把任务很好的交代清楚,导致我们三个人之间理解有偏差。所以我们参加校赛建模的时候没有拿到一个好的名次,所以我们认真总结,积极准备,最终拿到了全国一等奖。

 

有一个比较有趣的经历是我们在全国大学生数模竞赛的第二天星期六的晚上,实在是没有想法了,于是我们在宾馆里打开了电视,看起了《中国好声音》,哈哈。

## 什么都不会怎么办——前期如何准备

前期的准备非常重要,在我的身边,我看到很多第一次参赛就拿到了全国一等奖的,第一次参赛就拿到了美赛 M 奖的,所以,如果准备的充分,拿一个比较满意的奖项还是很容易的。

 

BTW,我目前没有看见整个组完全第一次参赛就获得了 O/F 奖的,可能是我目光短浅,欢迎大牛来打脸。

 

那么,作为新人如何做准备呢?除了上述我说的新人的入门准备之外,整个小组应该考虑如下工作。

 

### 1.读优秀论文

 

要想获得更高层次的奖,优秀论文必读。

 

首先,读优秀论文有助于熟悉做题的基本套路,这个是很多新手可以通过学习这个快速上手的。了解优秀论文的结构如何组织,问题如何叙述,模型如何叙述和解释,计算和验证,如何做参数验证,如何下结论等等。这些基本要素都是每个论文必不可少的,基本上每个要素都是有得分点的。

其次,优秀论文均写自我们的同龄人之手(至少是作者写论文时的年龄和我们相同),因此,解题思路和写作手法很容易理解,我们很容易能够体会出我们和我们同龄人的差距在哪里,(别人这么写,为什么我没有这么写。别人这么做,为什么我这么做)。

 

再次,优秀论文既然都是得奖论文,那么它们是有原因的,特别是国赛和美赛特等奖论文,他们都是至少不少于8遍筛选,因此,能够评上这些奖的至少文章不会差,值得学习。他们这么写得奖了,如果你也能够学习他们的技巧和能力,也能够得到不错得奖。

 

最后,要注意优秀论文对细节的处理,比如假设的说明,图表的展示,对参数进行的细致的分析,以及摘要。特别是摘要,这个一定要好好学习,特别是如何写摘要。

 

**注意** 摘要很有可能决定你能不能拿一等奖(M 奖)

 

### 2.抓住每一次实战的机会

 

学校或者一些省里或者学校联盟会定期举行些模拟赛、比赛,有精力有机会一定要积极参加,毕竟是和国赛或者美赛形式差不多,因此,可以算是“贴近实战”,所以建议没有参加过得,参加一下试试。参加过的,再做一次提升自己。

 

可以说,做模拟题是最快速地提高整个队伍素质能力的方法。

 

### 3.总结经验不足

 

比赛完之后,可能有的老师会帮你总结你的优缺点。如果没有,你可以拿着你的论文去找老师看看,让他帮你们看看你们的长短处。通过认识自己的优缺点,对自己的扬长避短有很大作用。

同时,我建议小组成员们能够定时聚一聚,交流一下自己的数模学习心得,以及对整个模拟赛或者比赛的总结和心得,这样一方面有助于提高团队凝聚力,另一方面对于团队的提高帮助会很大。

 

## 第一次参赛应该注意什么——比赛时间如何分配

 

这个部分我主要是以问答(Q&A)的形式来介绍我们参赛数模的情况

 

问:如何找论文?

我们是首先了解如何使用数据库,根据关键词,先找到几篇文章,看文章的参考文献,找到其引用的文章中有用的文章。不过别人的文章只是参考,最后论文要呈现的是自己的想法。

 

问:如何分配我们参赛的时间?

下面是我们小组的时间的分配,仅供参考

abc.png

这是我们具体的时间划分,仅供参考

前2天:早9:00-11:30,下午2:30-5:00,晚6:30-12:00

 

最后一天:通宵

仅供参考,值得提醒的是前几天不要太过劳累,以免影响后面几天的节奏。

 

问:比赛中有什么需要注意的?

我总结的原则:

合理分配时间,坚持就是胜利,合理解决分歧

 

问:论文需要注意什么?

摘要一定要认真写,假设要说清楚,模型建立要细致深入,结果呈现要丰富多样,结论要鞭辟入里。各个部分要细致完善。

 

问:你们有什么有用的小技巧?

我们组在参加比赛之前都会详细的阅读比赛说明,虽然我们参加了很多次,但是每一次都认真阅读了,因此,这可以有效避免出现超时,交错邮箱等情况。

 

此外,我们会买一些水果,因为后面几天熬夜比较厉害,买点水果可以补充水分和维生素。

 

再者,很重要的一点是我们会吧我们比赛中需要注意的事项(比如记得写摘要,记得对假设进行分析等等)写成一个列表,也就是 TODO—list,然后在比赛中如果做了一项就划掉一项。

 

最后,就是比赛前一晚上早点睡觉。这个不多说。

## 赛后需要注意什么

比赛之后,的确可以稍作休息,或者庆祝一番,终于解放了。但是高兴之余别忘了保存建模比赛中间的一些过程性的文件和资料哦,比如程序代码,论文 word 版。因为说不定你进了国赛的选拔,可能就要进行数据真实性检查了。所以,整理之后打个包保存,然后去好好享受大自然的美好吧~~

 

做了三年数模真的感触很多,熬过的通宵应该不低于20次,此外我真的从来不通宵。特别是在前期会有很多人的冷嘲热讽和不解,个中滋味只有我们自己能体会。不过当你看到黎明前的第一道曙光的那一刻,当你和队友一起盯着屏幕点击发送的那一刻,你会有一种成就感和幸福感。

 

真的,不是每一个人都能得奖,但是,如果你和我经历了数模之路,你也一定也能收获很多。

 

还是数模那句口号:一次参赛,终身受益!

 

=================update 2015.7.1==========================

 

下面就大家常问的问题做一些回答

 

问:我是负责编程的,但是我以前没有接触过数学建模,请问该如何下手?

答:不知道你有没有了解 ACM,你可以去找一些OJ(Online Judge),比如说 leecode,zoj,poj,rqnoj 等等,从一些简单题开始做,这个可以快速提高成绩。两个月,每2天完成一道题,应该可以做30道题,如果1天2道,大概可以做120道,坚持后你会发现提升很大的。可以去 coursera或者网易公开课 上面看一些关于算法的公开课等等。也可以买《算法导论》看一看。最后,你可以找一些优秀论文,看看他们用了什么算法,你可以找找网上现成的代码,把它调试运行成功,如果你想更进一步,如果能自己编写就更好了。

 

问:你一般使用什么语言,有什么好的推荐?

答:做数模首要推荐的确是 Matlab,不过我做数模的时候特别乱,C++,matlab,python 还有一些软件换着用。其实这些语言都可以完成大多数任务,但是我有时候比如 C++做图像处理我不是太熟,我就去用 matlab 会上手快一点,做文件路径出你的时候我又会去用 python,不是 C/matlab 做不了,而是我觉得我会选择我更熟悉的语言。因此,首先选择你熟悉的语言,不要在语言语法问题上纠结太久。如果你实在想用 matlab 而又不会,那赶快就在比赛之前认真学习吧。

 

问:是不是搞ACM的人再来参加数模,就很容易?

答:恩,应该会有帮助的,不过还是有差别的,因为 ACM 只用编程,但是 MCM/ICM 还需要把货倒出来,因为最后评阅只看论文,所以写作因素占很大。可以说 MCM/ICM 更接近科研把。不过不可否认 ACM 的奖含金量很高。

全部评论(18)

周羿霖
周羿霖
2015-07-26 湖南大学
请问可以推荐一下有数学建模相关书籍么    2015-07-26 未知
31
  • 张胜张胜 谢谢@张功,更多详请可直接参看【数学建模学神来了】第一期http://www.saikr.com/thread/index/1801  2015-07-27 未知
赵松
赵松
2015-06-29 环球赛乐(北京)科技有限公司
看来我还是没有把师弟的经历掌握完全,你这参赛成绩太霸气!太bug了。    2015-06-29 未知
28
汤宁
汤宁
2015-07-15 中国传媒大学
非常仔细地阅读了你的文章,对于现在处于迷茫期的我很有帮助。我是来自一个文科院校的理工科学院,学院对ACM和数模不够重视,但是自己为了将来的前途需要参加ACM或者数学建模竞赛,但是高中时没有信息学竞赛的经历。现在就很纠结,到底是参加ACM还是数学建模,ACM可能对我更有帮助,但是由于自己的底子非常薄,折腾几年,可能最终徒劳无功。数学建模门槛相对较低,但是自己不太想参加。不知道你有什么建议。    2015-07-15 未知
26
  • 张胜张胜 我不太清楚“自己为了将来的前途”是如何定义的,如果你想拿到一个好的竞赛成绩,的确推荐数学建模容易出成绩,但是如果说你是为了提高自己而不是太在意拿奖,那么两个竞赛都是不错的选择,你都可以从参加这些竞赛中学到很多东西。  2015-07-15 未知
  • 汤宁汤宁 回复 张胜 是这样的,因为我所学的专业在我们学校是不受重视的,将来读研的时候想去一些相关专业比较强的学校,比如北邮、上交。想去这些学校,肯定是需要拿出竞赛成绩的,从这方面考虑,我的选择是数学建模竞赛,但是毕竟为将来自己在这个专业的发展考虑,肯定是参加ACM更恰当一些。  2015-07-15 未知
  • 张胜张胜 总体说来,ACM 更锻炼的是解决问题的能力和解决问题的思维,数模锻炼的是将头脑中的思维用模型表示,并且将其表述出来。ACM 其实本质也是有个数学建模的过程。可以说,数学建模更接近研究生的科研相关把。两个都很不错,你选哪个只要坚持就没问题的。  2015-07-15 未知
  • 汤宁汤宁 回复 张胜 恩恩,好的。我在这个平台上看到过很多大神的经历,但是既懂ACM又搞数模的人不多,之前一直纠结过这个问题,看到你来到,心里很激动。谢谢你耐心的回答,我也会好好努力的,也希望你能经常在这里,有什么不懂的问题还可以向你咨询。  2015-07-15 未知
  • 张胜张胜 好的,没问题,如果你有问题,可以去我的主页留言  2015-07-15 未知
文雯
文雯
2015-07-04 大连理工大学
超级赞?!从没参加过数模~看后都知道自己该如何入门了~    2015-07-04 未知
26
马家豪
马家豪
2015-07-08 哈尔滨工业大学
想问数学建模的书一定要看吗 只看论文行不行    2015-07-08 未知
25
  • 张胜张胜 这个看个人吧,看论文没问题的,书的话看你自己了。我看书主要是觉得更加系统一些,当然你可以到时候查到什么不会你再去学习应该也没问题的。  2015-07-15 未知
- 查看更多和发表观点请下载赛氪APP -
取消 确认

同学~下载赛氪APP就可以进群咯~
先不聊 去下载