对于数学建模的一点经验和想法

第一次接触数学建模是大一下半学期的时候,当时听说5月有数学建模校赛,同学拉着我一起试试水,从那个时候开始学习数学建模,一玩就是快两年。先后拿到了2019美赛M奖,2019国赛国二。

这里想记录一下自己的一些经验和想法,欢迎和我进行交流~

数模题型:

这里只讨论主流的美赛和国赛。总的来说可以分为:
(1)学科背景题目
这类题目有很强的学科背景,比如18年美赛A题、19年国赛B题需要物理相关背景等等。
(2)评估类题目
这类题目比较宽泛,比如18年美赛的环境评价、xx年(想不起来了)的政策评估等等。这类题目的特点是一般不提供数据,但往往需要用到一些数据来增加说服力,一般就需要比较强的信息搜索能力了。当然这类题一般也没有固定答案,文章有合理的模型、数据、图表能够表达出有说服力的解释即可。
(3)大数据类题目
比如美赛的C题,这类题往往会给出比较大的数据集,几百M到几个G都有可能。这类题我们队伍只在训练的时候做过一次,做的相当痛苦,当时做了整整一个礼拜才折腾出来,而且做出来的文章我们自己都看不过去。。。这里就不多说了。。
(4)网络科学题目(安排调度类)
我们队伍一直偏向做这类题目,这类题目我认为有比较强烈的导向是可以借用图论相关的知识来建立模型,而且往往非常适用。比如18年美赛D题特斯拉充电桩设置,19年美赛D题卢浮宫疏散模型,19年国赛C题的机场出租车调度。一般这类题目和图论相关,会用到安排调度算法,会用到排队论相关的知识等等。
(5)其他
除了国赛和美赛,数学建模类比赛还有不少,比如密码数学挑战赛,更多的是和密码学相关的问题。因为各个学校一般认可的大多是美赛和国赛,这里就不多做叙述(其实是我不咋了解hhhh)

学习经历&推荐书籍:

我在比赛中一直负责的是编程。最开始对于建模方面的知识我认为是每一位队员都要学习的,最开始我学习的姜启源的《数学模型》这本书,这也几乎是数学建模的入门书籍了,这本书我认为算是比赛的奠基吧,把常见的模型都提到了,有可能的话可以跟着书上的推导和公式过一遍,虽然我当时细过了不到半本书,后面就略看了。。。

第二本我推荐的是司守奎的《数学建模算法与应用》。这本书更适合负责编程的同学细致的学习。这本书的特点是对于每个模型都有matlab代码参考,对于负责编程的同学过这本书的时候不仅仅是学习对应模型的代码实现,同时也可以留下自己对相关模型求解的模板,这对于3~4天的比赛还是非常省时间的。

我学习的第三本数模书是《MATLAB在数学建模中的应用》第2版。这本书纯粹的面向数模比赛中的问题,给出了详细的模型推导和MATLAB代码实现,另外这本书的一个特点是对于各种启发式算法有比较新手友好的推导和解释。对于启发式算法在数学建模比赛中的应用我会在后面单独讨论一下。

另外在这里推荐一本《MATLAB函数和实例速查手册》。如果负责编程的同学暂时对matlab不是十分熟悉的时候还是非常好用的。可能会有人说matlab提供的文档十分详细了,但是我认为当你面向问题时可能想不到或者想不出什么关键词能让你面向搜索引擎找到你想要的文档的时候,翻翻这本手册可能就找到你需要的东西了。有时候还真挺好用的,当然如果对matlab的各种操作已经比较熟悉了这本手册的作用就比较小了。

在数学建模比赛中很多情况需要用到数据分析的手段。这里我比较推荐的三本书分别是《数据分析的统计基础》、《数据分析的SPSS和SAS EG实现》、《数据分析的SPSS和SAS EG进阶》。这三本书是一位经管专业的学姐送给我的,虽然不知道这位学姐的名字,但是着实在我的数模中数据分析部分的学习有很大的启发。这三本书我的学习方法是只学其中对各种数据指标的定义、意义、特点、适用情景,其中的SPSS和SAS实现我是没有进行学习,毕竟MATLAB除了生孩子啥不能干??:)数据分析对于数模中的大数据题型or潜在的数据分析部分是必要的。因为我们队伍一直偏向网络科学题目,对于这类题目经验不是很多,故不多做介绍。

最后一本书算是可有可无,《MATLAB数学建模》,这本书算是前面的《数学建模算法与应用》和《MATLAB在数学建模中的应用》的进阶版,如果前面的书看的差不多了可以学习一下这本书。其中对于simulink仿真有一些介绍,对于那种学科背景题目有时候挺需要的,比如电子电路仿真,通信仿真什么的,但这只是数学建模这个比赛中的可有可无的点,因为根据我的经验几乎没人在本科数模比赛中用simulink…

以下是相关书籍~


论文相关:

数学建模比赛,很多时候论文的排版,插图的精美程度都会影响最终的奖项,虽然这一点被很多人诟病,甚至有说“数学建模就是美术比赛/排版比赛”什么的。所以如果想在这个比赛中拿到奖项这方面也不能忽视。

虽然我没有在比赛中负责论文部分,我觉得用latex真的比word写出来美观太多了叭~~仅说一点,word的排版着实让人头疼,美赛中需要提供目录,word写目录比较麻烦、费时。

插图相关:

论文中的插图相当重要,有没有比较直观、美观、简洁明了的说明相关信息的图表对提交的论文整体观感有很大的不同。这里我说一下我的经验。
插图需要直观说明相关信息美观。如果不能做到美观,请尽量做到直观,并且最重要的是要说明你要表达的信息。比如对xx的影响因素,可以绘制树状或者星状图,中间是实体主体,子节点是相关因子。比如:

这是我们19年美赛中对逃离危险区域时影响安全因素的各种因子。这里我想说的是图表的数据结构,颜色搭配需要绘图者的审美和对数据结构的管理,因为一张图放在文章中需要让人一目了然,也要博人眼球,这时一张直观、美观的图表就显得比较重要了~

对于图表的绘制工具我推荐的有:Visio,ProcessOn,亿图,幕布等等。ProcessOn绘制思维导图等等提供了比较多的模板,并且提供了一些预制的色彩搭配方案。Visio是个大杀器~有非常多的元素,几乎你能想到、用到的都有提供。一般比赛中我常用的就是Visio和ProcessOn这两个。其他的工具多多益善~

对于评价方法模型:

这里单独提一下评价模型,因为在我的学习数模过程中发现各种参考书以及学校老师的培训课程很少有对这方面的讲解。
评价类模型在比赛中几乎是必用到的,无论是评估类问题,还是模型求解完后对模型的评价、检验等等,都需要合适的评价方法。例如熵权法适合评价多指标单目标问题,主成分分析、层次分析法等等都有各自的适用情景,需要自己多多学习,体会不同方法的应用。这些方法往往需要会在一些优秀论文里体现,可以多看下别人的论文是怎么做的,转化成自己的知识。

对于模型的出彩点:

一篇获得高奖项的文章,除了合适的模型,有说服力的文字、数据等等,往往在文章中会有一到n个出彩的地方。

对于如何在模型中提出有创新的点,我认为这事没有固定的方法,我的经验是从自己所学习过的知识中交叉汇集、多学科知识的组合创新、日常的经验等等…比如19年美赛中我们提出了将3维的卢浮宫按照展厅和过道划分点和边,把连接楼层之间的楼梯、电梯转化为点—边—点,从而转化为二维的点边集(好像也不算什么出彩的…),这个想法是想应用图论中的算法进行疏散安排。19年国赛c题对机场出租车的调度安排时,当时我刚在计组课上学了流水线,直接借鉴过来设计了一个双发射三级流水线来做出租车的调度安排(?瞎扯淡。。。我也不知道那个是什么类型的流水线…),这个用流水线的方法来调度应该是比较少见的可行方法,大部分队伍应该用的是排队论相关的算法。注意,当你的方法与众不同,但它切实可行,有严谨的论证过程,那么它就是一个出彩的地方~

对于数模中启发式算法和xx学习的方法讨论:

很多情况下,数模问题总是多目标规划的,有时候还会是一个NP问题。这个时候我们是可以用类似模拟退火、遗传算法、bp神经网络等等启发式搜索的算法来解决。但是问题在于启发式搜索算法的实现难度和是否比较契合模型是个问题。在我的比赛经历中,的确有几次题目情况非常适合用启发式搜索,但我们没有一次在比赛中用到,归根结底是因为在短短的比赛时间里我不能把这类算法应用的很好,故选择其他和问题相关的模型,我认为这是没有任何问题的。会有人说用到启发式搜索文章的逼格立马就上去了…说实话吧,我觉得强行套算法毫无逼格,一点都不如传统模型。(另外真的用上启发式算法就很有逼格吗?。。。这些东西感觉在科研上都被玩烂很多年了啊。。。)

对于在数学建模比赛中,是否用比如机器学习、深度学习等这类数据驱动的方法,我一直存疑。我认为,数学建模的本意是对问题进行抽象,通过数学的方法建立模型,从而让问题得到形式化的描述和求解,是问题驱动的。而xx学习以数据驱动,在数学建模中我认为可以作为工具,但不能当作一个模型来套用,甚至当作工具用我也建议要慎用,毕竟这是数学建模比赛不是数据科学比赛。。。

对于美赛&国赛的建议:

先说美赛。美赛相比国赛题目更加开放一些,评价标准更加多元化,获奖的文章按我的观察似乎并不一定要求出具体答案,只要模型契合,语言、算法、数据的说服力足够,文章整体较为美观就能获奖。(这也是很多人诟病的地方,美术比赛/语文建模比赛/排版比赛/)但是为了得奖,这几方面都不能放松是吧?:)
总的来说美赛看重以下几点:模型和问题的契合程度,语言、算法、数据的说服力,直观美观的图表和其表达信息的能力(即不要为了画图而画图,图表要有内容~),文章排版建议用latex,以及非常重要的摘要部分。建议在提交之前所有成员一起修改摘要部分至少4个小时,国赛也一样。摘要首先要行文通顺;简要的点明问题;简练地讲出文章中用到的关键字,例如模型名字等;创新的地方,这个很重要,一定要点明出来。

国赛的话,略微有点内卷。。。因为每个学校国家奖项的数量是一定的,以鄙校为例,好像是每年国一最多5个,国二最多5个,所以能不能拿到国家级奖项不仅仅看队伍实力,还和同校的其他队伍有关系。。。着实让人觉得有点无奈。

另外,国赛除了开放性题目,评审的时候往往都有预期的标准答案。所以做国赛的时候可能需要中规中矩一点,在主体是应用传统模型求解的前提下,做一些出彩的地方。

对于数学建模比赛的意义探讨:

数学建模比赛,有时候是锦上添花,有时候是雪中送炭,对我来说,这个比赛能让我拿到保研名额真的是雪中送炭。这个比赛的难度相比没有其他学科竞赛难度大,但是想拿到比较高的奖项其实也是需要下一点功夫的。那么,在数学建模比赛中,我们能学到什么呢?
首先我认为学习数学建模训练的是对一个大问题的把握,以及如何快速找到相关有用信息。
第二,学习到了最基础的数学模型,以及如何把自己学过的数学知识应用起来,至少让自己在本科学的例如高数线代概率论离散数学等等有一点用武之地呗~
第三,我认为数学建模比赛在本科阶段,当没有能力和水平让老师带着做科研的时候,这是最接近科研的一个比赛。这个比赛的形式和性质和科研非常像,就当作3~4天模拟科研hhhh。当然如果有老师能带着做科研最好不过了。
最后,拿到了奖项至少可以在简历上添上两行~虽然含金量嘛可能没有特别高。。。
另外,数模这个比赛中会用到不少算法,但是我觉得要是想学算法干嘛不去折腾acm呢?数模里的算法以应用为目的,做到了解、会用就够了。

平常心&功利心:

我觉得做比赛需要时常保持平常心,过强的功利心可能不会对比赛有什么正面的帮助。但是也需要一定的目的性,毕竟做比赛的大多数人还是想着拿奖的,抱着无所谓玩玩的态度也不太好是吧?:)

最后的最后

以上是我本科阶段接触数学建模比赛的一点想法,其中的错误和不对的地方欢迎指出批评~同时也希望能给其他正在参与或是想要了解数学建模比赛的同学一点点帮助~

2 Comments

Add a Comment

邮箱地址不会被公开。 必填项已用*标注