全文口水话叙述,烦请耐心阅读
这篇叙述或许并不能教你怎么获得美赛O/F/M奖,也不能教你怎么得到国赛国奖,但是希望从我的一些叙述中大家可以获得一些启发。
快一年的数模经历
2021美赛
大一没多久在决定退出ACM 之后,当时的想法还是数模类的比赛自己一没兴趣二也不太会三也不知道这类比赛具体功用,可能多半也不会参加。
最初hbh找我一起参加美赛的时候(大概2020-10左右),自己本身也有点犹豫,原因还是上面三条,但是当时考虑到自己那段时间也不算非常忙,以及hbh那边已经有一个队友lrz可以专门负责论文写作(英语极好),算是如果要参加美赛确实会少了其中一点压力——最终也就应下了。
我们三个其实都属于数模小白,对相关的知识以及比赛的了解基本也就处于0的状态,也就大概知道美赛和国赛数模算是属于大学比较重量级的比赛。我和hbh都是中学的oi选手,所以哪怕只是刚上大学,我和他在编程和部分类型的算法上基础还算比较扎实,再加上当时我们的高数老师要求我们下载安装matlab并进行一些基础的学习,所以整体并不太担心在正式比赛中的编程部分。因此问题就落在了对数学模型以及相关的算法学习上了,不太记得最初是在何时开始学习相关的一些模型知识,但是到前几天最后的国赛结束直接掌握的相关数学模型也并不多(在后文会专门罗列整个一年数模学习的一些东西)。
印象中(确实是印象中,学校的选拔通知应该是有记录的但是自己懒得专门去翻)CQU美赛数模的选拔流程大概是有三次(1)中英互翻(2)论文翻译(3)模拟赛。
在第一次选拔当中,我和hbh各自翻译了一半内容的英翻中,lrz一个人完成了中翻英的工作(确实英语水平领先一大截)。
第二次选拔好像与第一次类似,但是已经是完整论文的翻译了?(这一条是我最不确定当时是做了什么的一项。)
第三次选拔差不多就是大概持续十几天的一个模拟赛,因为选拔期间还是在正常的行课期间,因此并不像正式比赛一样有完整的几天进行比赛(就是正常的十几天行课日期间,然后完成一份模拟赛的完整的论文)。印象中,这次模拟赛(选拔赛)的题目来源好像是国外一个大学的数模题目。不太记得当时第一次写这种完整的论文是一种什么体验,唯一有一点印象的是,大概还是卡着了ddl提交的论文。
在确定了通过校内选拔之后,学校也并没有继续组织更多相关的培训,就这样一直到寒假。隐约记得寒假期间学校组织了一些简单的培训,但是实质上的内容简单也单一,并没有太多学习的参考意义,甚至未必能帮助小白脱离小白。然后在简单的培训之后,正式比赛之前, 学校组织了一次正规时间的模拟赛,题目其实就是2020年的真题了。那场模拟赛整体上做的也并不算特别好,也差不多是卡着时间提交的论文。
然后就到了正式比赛期间,好像是4天的时间还是5天多的时间已经不记得了,但是在当时题目发下来之后,我们很快商讨了一下具体选择哪一个题目,最终选择确定B题。但是在整个建模编程以及论文的过程当中,还是会有许多没有想到的意外,甚至最大的问题还是在于并没有能够真正的解决题目所提出的问题。除去这一点之外,在论文写作上面也始终有一些小磕绊,在实际上写论文时,基本上是我和hbh需要将整体的一个中文论文写出来,然后lrz负责将中文翻译成英文。在这个过程当中确实出现我和hbh的一些中文表达,lrz确实不太知道应该怎么翻译成英文,这种情况下也只能我和胡博涵硬着头皮来翻译——所以大概写论文的不能只是写论文的。
在正式比赛结束之后,我的美赛的队伍就一直沉寂到今年5月份出成绩——最终只有H奖,整体还算有点失望,但是也有点庆幸吧。失望的原因还是在于只有H奖自己队伍还是希望可以有M吧,庆幸则是因为在正式比赛结果出来之前,我们也担心因为某一些不知名的原因被误判为disqualified,或者unsuccessful participant。
美赛就以最终H奖告终。
校内数统杯
在大一下学期也就是上学期的时候,学校数统学院举办了数统杯——就是一个校内的小型的数学建模比赛(此时美赛结果还没有出来)。原本我自己也无心继续参加,当时考虑到获奖有少量的金额奖励(害,有钱能使鬼推磨,不过回过头来看一等奖的金额确实少了点hhhh),当时美赛结束也没有太久,hbh或许是有一点厌倦所以并未参加,所以最后我单独与另外的两个朋友wjl与hzb参加了这次比赛。
这次比赛原本我们都没有太多准备,毕竟此次的数统杯面向的是大一新生,而在大一新生当中有经验和能力与我们争夺一等奖的可能确实数量极少,再加上我们参考去年的题目觉得整体在题目上对我们并没有太大压力。
尽管确实没有太大压力(我甚至在群里抢答问题还抢了不少红包hhhh),但是我们也希望自己能够尽力将题目更加细致、完善地进行分析。原本我们也担心题目确实过于简单,而我们写了太长篇幅的话反而在老师的眼中印象变差,不过最后结果确实说明我们队伍锁定一等奖完全没有悬念(甚至看了其他一等奖的论文,确实是这种感觉)。
2021国赛
大概在数统杯结束之后,我和hbh与wjl正式确定组队参加国赛数模。wjl和我们两个一样,也都是原本高中的oi选手,因此在许多类型的算法上有相当厚实的基础。再加上wjl本身是强基数学学生以及现役acm选手,他个人的数学能力以及算法能力更加凸显出来。而我自己在那个时候我自己的数学已经呈现出一个颓势,因此队伍内的主要建模手就是他们两个,而我们三个基本都会充当编程的一个角色,但在更多编程的方面,则是由我负责。
学校对于国赛的选拔相对于美赛会更加严格。其中一个原因是美赛,其实你没有通过校内选拔,仍然可以报名参加,而国赛数模则必须要学校选拔通过才行。
校内国赛选拔主要依据两次模拟赛,第一次就是在学期之间的,也是大概持续了十几天的一场模拟赛。这一场模拟赛决定了有哪些队伍可以参加暑期的一个课程培训,以及暑期的第二轮选拔赛。但是其实对比一下一些朋友参赛的情况,其实大概可以得出结论,只要你的论文不是灌水类型,基本上第一轮选拔赛都不会被挂掉,毕竟有第二轮选拔赛。
和美赛当时校内选拔一样,校内选拔的结果出来之后,学校其实也没有再进行更多的培训之类的。然后还是和美赛一样,差不多就慢慢的到了假期了,但是与美赛的假期不同,国赛数模通过了学期那个第一次选拔会自动纳入学校一个计算学分的一个课程,因此会显得稍微正式一点。但是实际上这个课程的意义也比较小,课程的内容反而更偏向于一种大型分享会,老师选取一些优秀学生的论文,然后让他们上台讲解,但是我们其实也都知道单纯的上台讲解其实并不能讲解的特别详细,甚至都不太能确保它实际上的编程以及具体的模型计算是什么样的情况。所以这个课程,相比于美赛的寒假中的培训,只是表面上显得更加正式一点吧。
在暑期当中会先后进行两次模拟赛,作为第2次选拔的最后参考。但是由于暑假中,其实各个专业各个学院都有一些暑期时间的安排,所以并不能完全做到时间的统一这就导致了,有的人没有参加第1次模拟赛,就只能参加暑期的第2次模拟赛,或者干脆就是最后懒得参加第1次模拟赛,然后被迫选择第2次模拟赛的这种情况。但是这一次的情况也比较特殊,第2次模拟赛老师直接选取了深圳杯的题目作为第二次模拟赛的题目(深圳杯的题目完成时间长达一个多月)。但是其实我们也知道老师的用意并不在于想让我们把整个题目做得多么好,可能就是看一下整体的态度这么一个想法吧,但是毕竟题目的难度摆在那里,导致了很多人直接被劝退了(尤其是暑期第一次模拟赛都没有参加的人)。
我们队伍考虑了第二次模拟赛去完成深圳杯的题目意义确实不大,所以我的队伍并没有参加暑期的第二次模拟赛,不过当时心里也担心没有把暑期的两次模拟赛参加完老师会不会把我们刷下去。事实上肯定是多虑了,毕竟在这两次模拟赛当中完成了其中一次的队伍也并没有那么的多……
所以其实在这次经历的这个过程来看,可以大概认为学校的校内选拔还算比较水,并没有那么苛刻的要求只是说你整体的论文以及你做出的答案不能太拉垮吧,以及该让你去完成模拟赛的时候,腾出时间来用心完成,这些本身都是最基本应该做到的。
相比于美赛,国赛的正式比赛期间想说的东西更多一点。我们的想法肯定是三个人都在学校同一个物理空间也方便交流。但是当时美赛正式比赛的时间在除夕夜前几天整个时间都比较紧张,所以两个队友当时就在寒假的模拟赛结束之后他们先回一趟家,然后到时候再来学校……结果最后疫情又严重了他们回不了学校,我们只能那几天都是线上交流。所以其实在当时美赛比赛期间我们就没有在这方面做的特别好,毕竟线上交流比线下交流效率真的会低太多。国赛的时候我们也考虑到了这个原因,我们队伍三个人在三栋宿舍楼,晚上的时候不能进出宿舍楼所以肯定回导致交流不便,所以我们最后就决定找一家酒店,正式比赛的几天住在酒店集中精力来完成论文。
然后找酒店的话肯定还要考虑酒店的桌子的大小,能不能放下三台电脑这种以及整体的空间环境,最后实在选不出来有比较宽敞的桌子的酒店,所以最后只能找了一个机麻房……这次住在酒店的经历对我来说体验非常差,非常差,然后也有一点那个整个比赛期间的状态吧。
在这次的选题上,我们最初也在在犹豫考虑选择B题还是C题。C题看起来题目回稍微简单一点,我们担心我们在这么多的论文当中未必会做出足够多的亮点出来(其实就是在直接考虑国奖了,不过事实也说明我们确实想多了hhh),因此我们也在想B题到底能不能做但是B题存在的一个更大的问题,是数据量以及变量太少了,导致可能无法做出特别突出的一些模型分析(甚至这么小的数据量都无法使用神经网络),所以我们最后还是选择做了C题。
这个作品的过程其实也并没有做得特别的好,比如我们最开始分析数据的时候,就少分析了一些数据的特征,导致了我们最终不得不在论文提交前24小时决定修改模型,重新分析数据。然后在国赛比赛期间的交流其实也有点问题,除去本身比赛过程中产生的一些小的分歧之外,就是最后修改模型这个事情了。我和hbh当时的考虑是时间已经有点来不及了,如果要修改模型确实不能保证修改后的计算结果如何、本身来不来得及等等,但是wjl当时坚持要修改模型,所以最后还是修改了模型。在决定修改模型之后,我当时的意思是完全通宵将整个论文完成,宁愿通宵到白天做完也不要再白天再来赶了。结果当时三点多四点多的时候,wjl说数据已经确定下来了白天只需要写论文了可以先睡了白天再继续做,我当时觉得数据没问题了那就大家睡吧……结果到了最后一天白天,不知道是什么原因导致了好像数据又有一点问题??????所以我们最后一天大概是在最后提交前写两个小时的时候还在处理数据这方面的问题,完全影响整个论文书写的节奏,在这次这个经历上,其实可以看出队友之间的交流并不特别的协调融洽,这一点是希望大家可以借鉴改善的。
9-19出了参与答辩的结果,我们队伍没有推选上去,但是市内的评选结果是已经出来了,希望还是有一个省一吧(其实就是为了报销报名费bushi)
我个人准备数模的一些建议
我不想在此处讨论/辩论/争论我下面的一些建议的正确性、可行性,这些只是我自己的一些切身体会,大家结合自己队伍的情况食用即可。
序
希望大家始终明白最重要的一点,我们是准备数模比赛,而不是专门学习数学模型。比赛和竞赛自然有他们各自的特点、评判的侧重点,比如你的论文语言是否流畅、思路展开是否清晰、可视化的图片好不好看……and so on.
关于数学模型的学习
个人建议不需要专门去学习太多的经典模型,因为你会发现这些东西比赛当中真的并不怎么用得上。
ok你如果要说是我们学习的模型不够多所以比赛才用不上,那你赢了。
但是需要大家对一些模型有一个整体的了解,比如你至少要了解整个模型建立求解的过程吧,你要了解大概有哪些类型的模型吧,这样也在正式比赛当中,你才能更加从容的去完成寻找相关的资料。
关于一些模型评价的方法,比如PCA 、AHP 、TOPSIS 等。这些评价的方法,确实需要更加集中学习。不管是之后具体的模型使用、灵敏度分析或者题目直接要求的评价方法,用到的地方可能会更多一点。
举一两个关于这方面的例子吧。
2020年美赛的某一个题吗,以亚马逊电商为背景的那一道题,需要用到的一些具体的算法与模型你几乎是不可能在准备过程中学习到的。其中一篇特等奖的论文当中用那个算法和模型都是在已有发表论文的成果上使用,而更多的人其实并不能找到这些相对应的论文,导致了做出来的效果,也不会有这篇特等奖的效果优秀。(当然了,找到了可以对应使用上的已发表论文上的模型或者算法,能不能读懂、恰到好处的用上也是一回事。)
另外一个例子是我们这次国赛数模。我们最后修改模型的时候添加了一个时间序列模型,但是我们在实际的准备过程中或许会接触会系统学习一些时间序列相关的模型,但是你会发现你所学习的模型与你真的要使用场景非常未必对得上……
所以其实在模型方面,我觉得你主要还是在于对整体的模型有一个了解,然后细致了解一部分的模型,作为一个简单的知识储备就可以了,不用为了一个这样的比赛去学习,去专门学习太多太多的模型。
我个人建议如果是完全的数模小白,可以买/借姜启源《数学模型》这本书来(第四版第五版都可),完整阅读第一章对整个数学模型的建立与求解有个了解,然后阅读4.1、4.2和5.1,对规划类模型与微分方程模型有一个细致的了解,
关于数据搜集与应用
我直接举一个例子。
大家去搜一下2021年美赛B题(没错就是我做的那个题,大家网上搜一下中文翻译版的题目吧)。
我抛几个问题给大家,大家或许就能感受到在竞赛当中收集数据以及使用数据的能力有多重要(你如果要说你不一定是做B题是做其他题的话,那我只能说除了F题,剩下的题好像你都没法做了hhh,至于F题,你也会遇到相似的问题)。
大家读了题之后,从题目描述当中,你应该是可以确定:我们需要在地理图中画出无人机的位置。
那么问题就已经来了,首先我们需要收集到维多利亚州那一片的具体的真实的经纬度以及对应的海拔数据吧?那你就先把这个数据搜集到了再说吧。
在你的搜集到数据之后,又面临这么一个问题,你收集到的数据是什么格式的?可以用什么编程软件进行可视化?。好你用python或者matlab,你具体用到什么函数可以将具体的经纬度对应的海拔高度可视化绘制出来?
好,现在就算你已经可以通过matlab可以绘制完整的维多利亚州的经纬度与对应的海拔高度的可视化的图,从题目的描述当中我们知道,你总得需要在这个维多利亚州的这么一个可视化的图当中,还可以进行人为的描点来表示无人机吧?而且你总不能只是一个普通的红色小点来表示无人机吧,你总要还能够设置颜色设置其他样式吧?
所以你最后面临的一个情况是,你可以绘制出海拔高度的经纬度的图,效果也还可以;单独使用plot、scatter描点绘制样式也还行。可是当你需要将两者结合在一张图当中绘制出来,会发现好像无法操作……
对我当时就是出现了这个问题……导致最后用了一个什么不知名的软件勉强绘制出了一个能看一丢丢的丑图上去……
关于编程方面
如果你现在是需要解决比较偏向数学方面的一些模型的计算,那么matlab 基本上可以完成这个功能,但是我们要注意一点,在我们具体的题目当中,我们所需要的一些matlab 这方面数学编程的一些功能,可能我们在平时的准备过程中也未必会准备上,因为有的题目的要求它的需求确实与我们平时所学习所接触的会比较奇葩……所以其实在matlab 的使用上的话,其实也都偏向于等到了比赛过程当中,你确实需要结合你到时候具体需求去现场找一些相关的函数接口,然后再来使用,但是你肯定首先自己需要会一些基础的语法(比如矩阵运算、判断语句、循环语句、函数的书写、数据的保存和导入)
如果你现在是想做一些可视化的图的话,那其实python 和matlab 都可以画一些可视化的图,这一点上确实可以在准备的过程当中就多研究这方面。另外要注意的一点就是,我们除去想要将数据可视化,肯定也希望让数据可视化的效果好看一点,毕竟相同功能的一个好看的图和一个不好看的图,很明显大家会偏向于选择哪一个。
如果你现在是要解决规划类的题目的话,可以考虑直接使用lingo 这个软件。这个软件的学习比较简单,大家直接在b站搜一下视频,二倍速播放,大概半个多小时就可以完全使用了。
如果你现在是想解决图论方面的一些问题的话,或许直接使用C++ 按照学习的图论算法的方式去求解,应该也比较合适。
关于论文的书写与排版
关于论文的书写与排版的话,我个人建议也是需要特别注意的一点,一方面据我的了解,老师评分其实会根据你论文以及你模型计算结果的一些指标进行打分,比如说你的摘要可能会占多少分,然后哪些部分也会占多少分,那么此时你论文的书写就会显得比较重要了,尤其是你的摘要的书写的怎么样……这一点的话,其实我个人是比较有感触的,就是在我们暑假第一次模拟赛当中,我们做完之后,老师评选了一些优秀论文动大家参考,我在逐篇阅读之后,其实发现这几篇优秀论文整体的算法的特点非常非常一般,但是你能够看得出来他的摘要的书写得很漂亮,也就是说可能在文字功夫做的确实比我们的好,然后再回过头来看我们自己论文的,会发现我们的摘要以及论文书写的emm确实比较不太能看……
这是一个方面,另外一个方面就是需要有专门负责写论文的人去了解latex 公式,毕竟到时候有很多数学的公式要写在论文上面的话,就一定需要学会使用这个公式。
其他方面就是关于具体的一些文字的格式,字体字号,这些到时候题目都会有一些比较具体的要求,大家在自己写过几次模拟赛之后,心里就有一个底了。最后一个在论文的方面,就是大家一定要注意论文的整体的结构以及内容到底完不完整充不充实,如果有太多灌水口水话的文字真的会影响整个论文的阅读,以及大家要注意的是,我们整个数模论文的这么一些部分大家不能缺少,比如最基本的问题重述问题分析符号说明模型假设灵敏度分析等等……这几个指标大家在完成过几次论文之后,心里也应该差不多有底
关于队内交流与合作
大家在寻找队友的时候,大概秉持一个观点:队友的积极性与学习的态度,以及队伍内的交流远比大家本身的基础更加重要。
本身我们确实不需要花特别大的精力来准备数模的比赛,但是我们自己也要清楚,大家断断续续有一些有益的交流,总会比只在模拟赛的几天进行交流更有效。这个其实就是我的队伍的情况,基本上交流只是就在模拟赛正式比赛的那几天,平时在这方面的交流就是具体的有益的交流,真的会很少很少,甚至就几乎没有的状态,但是这一点其实并不好,所以大家自己在平时的时候也要多注意这方面。
美赛正式比赛之前和国赛正式比赛之前,我都多次提出大家要不要大概都怎么准备一下,但是其实我的队友在这方面就比较消极的这么一个状态,其实就已经在某些方面有一些消极的影响了。所以大家一定要重视队友的积极性以及大家之间的合作交流,这些东西远比你最初的基础更加重要一些。
后序
其实也没有什么后序了,数模比赛对我而言意义本身也并不那么大,保研加分吗我自己也不想读研更不会去争取保研,简历加分吗整个比赛与我开发的相关性可能也比较小。只是说当初hbh找我参加美赛的时候还算有空,然后也顺带着参加了国赛数模,大概就是这么一个情况吧。
算作告别吧。
|