如果有人问,数学建模带给我的是什么?
我想说:数学建模带给我的是一种奇妙的归属感,数学建模让我心智迅速成长,数学建模向我指明数学在应用领域的方向。
从第一次参加2019年底电子科大举办的数学建模美赛模拟以来,还参加了接下来2020年5月的校级正式赛和2020年底的美赛模拟赛。在这三次比赛中,均有获奖,有拿过最高奖项,也有拿过次高奖项。虽然我承认,参加的三次比赛都仅仅是校级比赛层面,可能没有省级、国家级那么有分量,但是一直以来,我都想找个机会总结自己参加比赛的经历和心得体会。我没有数学建模培训的经历,也可能没有比较高的数学天赋,但是有一点我是引以为豪的——我在用200%的真心和努力在对待每一次数学建模竞赛,而且,我一直深深感受到——数学建模带给我的是一种归属感。
今年其实我是有强烈意愿进入电子科大校队培训,参加2021年的美赛和国赛,但是因为一些客观和主观的原因吧,并没有很顺利进队(难受了一段时间,毕竟对数模是很喜欢的),再加上从期末考完,集训队开始训练,我觉得自己错过了很多本该把握住的机会。虽然叹气常有,但是回顾自己参赛的经历,窥探自己内心队数学建模的意愿,我又觉得对未来充满期待,也许只是属于自己时候未到,好事多磨磨吧。这是因为多方面的因素,我下定决心,在期末考完对自己的一些经历进行总结归纳,当然仅仅是一些我自己的心路历程,包括不好的方法呀弯路呀等等,又鉴于时间关系,挑一些重点来写一写。
同时因为我并没有接受过系统的数学建模培训,所以这篇博文呢,只是记录自己参加几次比赛的心得体会和未来值得借鉴的地方,所以不会有那种官方的或者以偏概全的结论,如果读者认为对自己有一些帮助,可以借鉴,如果认为我走错方法,欢迎指出!
这是我第一次参加数学建模竞赛,说直接点,就是抱着试一试的心态,因为自己在大一的时候其实对模型这个词,一点点概念都没有!更别说建模二字,数学建模完全就是毫无分寸的事情。但是凭借着对数学的喜爱,我果断报名参加了这次比赛。万万没有想到的是,这次比赛,让我对数学建模竞赛产生了一种难以描述的喜欢,也是让我对数学建模的认知奠定了基础。
选题
A题是关于当今社会免费充电设施的经济问题,这道题呢,越读题越理解不了题意,因为从免费充电设施入手,真的太难收集数据了!这些不同场景的设备,不同场所的充电接口都没有有效的统计资料。但其实我对这种开放性的问题,更有把握,我相信自己的联想能力和解决未知问题的的能力。
B题是关于天文导航中的星图识别问题。这道题其实“很数学”,更多的研究是在三维图形中的几何问题,包括三角函数、矩阵在立体图形中的计算。比赛那天我们刚开始学习积分,当然线性代数也没有学到很多内容,所以选择放弃这道题。放弃归放弃,但是我在拿到这道题的时候,用Matlab展开了数据包做了一点浅层的分析,并且我和同学已经把数学原理推导出四五成。
时间规划
时间规划这一点我也不知道自己怎么学到的,但是从一开始我就意识到,比赛前应该先做好整个队伍的时间规划表,让都是第一次参赛的三个人都心里有个数。
大概内容就是如上这个表格中的文字,其实经历了真正的比赛后,才发现其实时间规划很难真正落实,很难一步一步按计划推进,但是,我一直认为一个清晰的时间规划能让队员心中有数,能让尽力去让进度赶上计划,因此在后来的比赛中,我都会根据队员情况做一个类似的时间安排表。
其实在决定选题的时候,出现了一些问题,有队员其实并不愿意放弃B题,一直在啃B题,但是第一天晚上都不能决定哪个题才是真正适合我们做的,进度就非常缓慢。我也着急了,但是作为队长,必须马上决定,所以我果断选择A题开工。
解题
在第一天晚上开始凌晨开始思考这个题目,晚上其实只有我一个人在熬夜,所以我在学校的通宵咖啡厅思考问题。对于问题的思考内容,我及时记录在word里,也是反反复复一直纠结题意,反复更新思考的方向。也就是在不断纠结思考方向的过程中,我逐渐对模型二字有了些理解,印象比较深的就是当时把模型理解成函数表达式,这样让我更好地推动建模。以下内容就是一部分思考的记录(但是很多可能都是不对的,读者随便看看就好)
后面两天一直在跟着自己的思考方向完善数据的分析,收集不到的数据我就类比,我通过类比相似或不完整的数据集,拟合或合理假设所需数据的发展趋势。到了最后一天下午,大量将思考的内容汇总到英文论文中。
论文成果
感悟
这是第一次参加数学建模竞赛,因为和队友的默契度并不高,所以很多思考无法同步到另外两个队友,导致最后的局面就是不怎么能参与进来,所以在建模、编程和论文三方面都投入了大量的精力,也在咖啡厅熬了非常口渴的一晚。这个比赛的过程是非常痛苦和煎熬的,独自踱步在图书馆外的小广场,几个小时几个小时坐立不安就为了能出一点点思路。在比赛截止的最后一刻,提交了一篇还不错的论文,是让我充满成就感的事情,三天里心情的起起落落终于浓缩成了一篇论文,这是一件很幸福的事情。这次比赛的过程很不顺利,但是我学着如何去面对看似不可能的事情,如何从无到有,如何把建模编程和论文三方面兼顾到。这次经历,为我之后带队参加比赛奠定了基础。具体来说,我对全局有了更好的把控,毕竟自己对比赛中的三方面分工都有所涉及。
其实这一次的比赛,心里更有底了些,经历了上一次比赛的得失,我有了更多的把握说自己可以淡定下来解决问题。这次的队伍是重新组建的,不过我相信三个人应该可以比较默契。因为疫情原因,这次的比赛是线上进行,那么要高效,就只能打语音电话交流了。
选题
时间安排
其实和前一年比赛的时间规划差不多,并且抛开很多明知道不能实现的细节,所以应该更具有可操作性。看一部分规划的截图如下
我这人当队长呢,有个显著的特点,我会尽我的全力去鼓舞队员,不管是在比赛前还是比赛中还是比赛后的总结。怎么说呢,鼓励和安抚队员其实也是在鼓励和安抚自己,队长的压力永远是比队员压力大的,在压力本来就超大的三天里,鼓励的价值是相互的!
解题
在确定需要哪些参数和模型时,我列出了一些可选的算法和模型
在分析整体经济情况时,有明显先降后升的趋势,而回升的速度回逐渐减缓,我并没有采用逻辑斯蒂增长模型(Logistic growth model),而是采用自己构造的带多参数模型,如下图,你如果要问我怎么构造出这样一个带多参数的模型,我只能说用了天马行空的方法,然后根据实情逐步优化。
作图工具:几何画板
“股市是经济的晴雨表”——因为这条“名言”,我在第二天将解题重心放在了股票上,我下载了“华彩人生”哈哈,开始第一次接触炒股软件。
当然要做的事情就是用Matlab将函数拟合出来做合理预测(BUT!这一点非常困难,因为虽然在疫情爆发时有个明显转折点,但是由于转折点之前的数据具有波动性,所以很难拟合函数,不论是转折点前or后)后来采用的问题分解方式解决,分中长期/短期经济来一定程度简化问题的复杂度。在短期问题中,我发现神经网络可以更好预测,所以这一块用到了BP神经网络算法(借助Matlab可以更简单)
论文成果
感悟
这次比赛给我的感觉比第一次好很多,不管是团队的配合还是解题思路的顺畅度。针对疫情经济分析,我们阅读了大量经济相关的资料,从各个角度对整体经济和局部经济建模分析,个人认为算是一次比较透彻的分析过程,当然也是内容最充实的一次建模过程。但是,正是因为分析得透彻,所以论文的内容其实是杂乱的,当时想着去堆这个模型的量,没有一个模型主体,而是把问题拆分很细去建立模型,这当然是一个不小的弊端,通过看目录其实可以看出来这个问题。
上一次比赛的三人算挺有默契,但是因为一些情况,有位队员退出了,所以在这次比赛中我重新找了写作的同学,没有磨合过,但是整体来说比较上心。这次比赛期间其实很忙碌,熬夜肝作品的同时还有全面体测(分室内测试和室外1km 50m),各种各样扰乱心情的事情,正值降温季,整天冷得发抖哈哈。
选题
解题
这道题基于数学建模教程中的多属性决策算法,在此基础上加入了个性化元素,也就是用户填写意愿问卷时的重视程度,用户对每一个问题有着不同的重视程度和答案,同时每一项工作对应着相应的答案范围,进而通过多属性决策算法,计算出该用户在每一项工作中的匹配度,也就是推荐指数!
这幅图是在理清楚整个算法的思路后,我进行初步的矩阵运算,涉及到特征矩阵、属性矩阵、决策矩阵等多种矩阵的变换过程,最终得到某用户对应八个不同工作的推荐指数J1-J8,在最右侧的演算中可以看到
∑ 1 8 J i = 0.9999. \sum_1^8 J_i=0.9999. 1∑8Ji=0.9999.
这代表整个运算过程是正确的!所有推荐指数求和的值仍逼近于1.
论文成果
感悟
这次建模的过程非常艰辛,因为从一开始就发现这道题路子很窄,要么机器学习从训练集到测试集走到底,要么多属性决策算法从构建矩阵开始算到结尾。如何构建合理的矩阵真的非常困难!三天内一次次否定之前设计的算法,又一次次更新思路,找到更合理的方法,第二天结束才定下来用什么样的思路计算矩阵。在这个过程中,工程管理和软件工程的知识现学现用,我们用processon绘图软件绘制了详细的算法流程图、矩阵构建流程图、WBS分解图等,可以给大家大概看看清晰的过程。
总的来说,这三天很不容易,最终把这道窄路子的题目解决掉,当时还是很有信心拿奖的,毕竟每一步运算我全部在演草纸上手算验证过,每一步都经得起推敲,可以说这次建模算是最接地气也是最实实在在的一次建模吧。
因为没有接受过专业培训,所以我总结的经验都是从常识、赛前讲座、CSDN博客、赛后总结这几个方面积累而来的。可以说每一次的赛前讲座我都是认真听完并记录下来了的,这里汇总一部分我认为比较重点的地方。
这些重点大多是我自己遇到的问题,所以以下很多内容来自我的比赛备忘录中。
写备忘录这个习惯是因为我在生活中马大哈记性不好,将备忘录用到比赛中,发现出奇地好用,不管是及时记录思路还是需要后期修改的地方,帮助都很大。
如果决心要做好这次比赛,队长承担的压力真的很大。以我第一次参加比赛的经历来看,当时队员并没有和我很好地配合,所以那三天我的心态崩溃了一次又一次,还是挺下来了,在建模、编程、论文三个方面都花了非常多的心血,最后终于在最后一刻熬出了一篇论文。因为第一次比赛我兼顾了建模编程论文,所以在之后的比赛中我带队就有了更好的全局把控观,毕竟三类分工都有所涉及到过。因此,在后面的比赛中,尽管队友有负面情绪,我也坚信都是在可控范围内的!不管我的心态有多崩,或者心态有多么受到外界影响,我都要表现出对全局的自信。当然自信不能盲目自信,自信源于解题的信念、决心以及自己在之前比赛中经历的挫败、打击。队长有了强大的心理才能安抚其他人的心态,短期的沮丧过去了就是积极的面对。
最后,最最最重要的一点!在规定时间内上交论文,过时不候!
不管比赛难还是简单,千万不要输在规则!
送给大家几句话,我失利时数模学长告诉我的:
借此记录自己两年里参加数模的心得,虽然这次没有顺利进入集训队,但是这几次比赛带给我的,远远比奖项本身多得多,因为——数模是一种精神。