本文主要是介绍2019年国赛总结(Coding视角,总结记叙怀旧),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.矫情
或许今天才是我这个夏天的结束
很开心又结识了那么有趣的灵魂
纯粹的日子总是过得那么快
下一站的旅途又要开始了
2019年全国大学生数学建模竞赛中秋建模竞赛终于结束了,首先非常开心结识了两位性格相投的队友,在樱顶数院机房的日子可能不会再有了,那就惟愿无事常相见(from kf's comment)吧。
2.正题
9.12下午睡了个午觉就早早来到了机房。然后就被拉去当苦力了搬运参赛队员的补给了。不得不说武大竞赛队员的待遇真的是超好,包三天一日三餐,中秋节还发了水果和各种零食,月饼。
附图:
晚上六点放题之后,我们用了大约一个小时左右,最终确定选C题
1.根据暑期培训情况来看,物理题虽然简单但是我们并不占优势。且此次A题的流体力学,相关偏微分方程和物理过程并不熟悉。
2.第一眼觉得B题比较简单,可能会有很多队伍选择(事实证明B题还是很难的,选的队伍也较少),其实动力学问题我们也并不是特别熟悉。
3.第三问较为开放,选题人应该会少,而且第三问当时觉得可以用交通流元胞自动机模拟也比较熟悉。
最终武大参赛队选题统计
A | B | C |
19 | 6 | 9 |
确定选题之后,两个队友便开始查文献建模了。我就负责去找数据。简单找了出租车空载率,耗油量,收费规则等基本指标之后,发现航班和出租车数据比较难找。于是就写了个网络爬虫到携程上爬取了武汉9.13日航班的数据,出租车数据本想滴滴快车信息公开平台上寻找,但是这个网站已经关了,只能到Github上找了历史数据,但是偏偏没有武汉的,就只能选择了北京首都机场进行了分析,重新爬取了北京9.13日航班数据。
9.13日上午整理并处理了北京出租车供求量,收益等相关数据。队友给我讲了分别建立的机场载客收益和市区收益模型。通过分别求解两个模型司机收益来进行决策。市区载客收益模型是状态转移的,感觉有点像马尔克夫链的模型,通过若干次迭代之后,市区的出租车载客达到平衡状态,可以获得平衡状态下的订单需求和出租车响应需求在一定数目时的概率,通过概率再计算出租车司机在这段时间可以在市区拉到的订单数目。机场载客的收益计算其实比较简单,就是司机从机场载客到达市中心的收益。
下午我就开始先尝试着实现市区载客收益模型,但是不得不说实现上遇到了极大的困难,因为(m,n)可以转移到的状态有三个1.(m+1,n),2.(m-1,n)3.(m-1,n-1).那么对应的转换到(m,n)的状态也就有三个。但是由于初始的P(m,n)并不清楚,也就没办法计算对应的概率,和相应的订单。于是最后在吃完晚饭之后我们决定暴力一波,就以得到的北京市一天各个时间段的收益除以有效里程,就得到单位有效里程司机赚的钱,以此来作为司机单位有效里程的收益,再根据司机在市区的拉客时间,计算出有效里程,进而计算出收益。
暴力算法一定是这个世界上最好的算法
晚上,我先去查找了第三问的相关文献。双车道的出租车载客一共有两种模型
1.单车道载客可变道模型:一条道来载客,另一条变道用来超车,提高运行效率
2.多车道载客不可变道模型:两车道均可以用来载客,但是为了安全起见,出租车不能变道。
一天后拖着疲惫的身躯,看到樱顶那轮明月,突然心中又多了几分感慨和兴奋
今夕不知是何夕
故地依旧在风里面
中秋快乐
晚上走在路上和队友讨论了第三问求解过程:为了使得乘车效率高,司机应该优先选择距离自己较远的服务台载客,乘客应该尽量均匀排在各个服务台。通过元胞自动机NS交通流模型进行模拟,可以通过输入服务台个数,获得对应的乘车效率:也即单位时间运送的乘客数目。
9.14日下午,我把第二问的结果跑了出来,队友对于第三问又建立了一个多目标优化模型。(好吧,我现在还不清楚模型是什么,至此,对于C题我们已经建立了4个模型,AMAZING!!!)我把第二问的结果跑了出来,其中一共画了16张图!!!
放几张图纪念一下
9.14日晚,我开始写双车道载客的元胞自动机,不得不说相比NS模型载客过程的模拟要增加的状态真的不少。在NS基础上出租车的状态要记录:开始,载客,完成,目标服务台,前面服务台个数,前面未载客的出租车数目。未服务状态要记录:空载,载客。服务台状态要记录:有无乘客。
单车道交通流NS模型状态转移过程
过程看起来很简单,但是代码写起来还是略繁琐。再加上当时心里是有点儿慌的,毕竟时间只有一天了,我们最后一问还没开始。晚上调Bug简直到心态爆炸(元胞运行过程比较随机,debug真的一言难尽),真的很感谢队友给了我极大的鼓励,让我能够静下心来慢慢去调试。晚上我们订了民宿,刷夜开始.
民宿还挺舒服的hhh
调了一会儿Bug之后,我躺在床上冥想。没想到一会儿竟然就睡着了梦里隐隐约约听到队友在讨论第四问建模。
所有事情到最后都是好的,如果还不够好,那说明还没有到最后,
9.16早上六点半就醒了,然后十分钟后元胞自动机就跑出来了,心里真的很激动。然后稍微改了些东西,不知道为什么突然又运行不了了。真的是乐极生悲。终于在九点多把所有Bug解决完了,上午把双车道的载客结果整理了一下。下午花了一个小时就把单车道换道模型跑了出来。队友从上午到下午也把第四问解决了,好吧,到现在为止,我还是不清楚第四问建了什么模型,hhh。但是很开心终于解决了所有问题。
四点左右我们解决了所有问题。但是论文还有第三问求解过程,结果分析,第四问求解过程结果分析,摘要,模型评价没写。
其实刚开始我们对今年的政策还是有一些误解的,竞赛时间节点如图
刚开始以为15号20:00-22:00还可以生成一次MD码,我们就决定在8点之前提交一次作品,然后在8-10点还可以再看看哪里有需要改的地方。但是后来老师们一再强调8点之前所有东西都要定下来,8点之后论文就不能再改了。当时确实有点误解,后来才知道8点之前必须生成MD5码,但是不一定提交,8-10点是为了起到一个缓冲作用留给MD5码提交的,但是不能改变。
所以其实4-8点这段时间我们论文写的还是比较仓促的。摘要部分和模型评价也没有写好(其实本来队友已经把摘要给改好了大约7点45的时候,结果电脑的word突然崩掉,改好的东西全没了,于是7点45-7点55队友就直接在我的电脑上改摘要,但是最后还是没改完),最终提交的论文不算是完美的。这也是这次比赛的一次遗憾吧。
也许遗憾也是另一种美
提交完作品的MD5码后我们心中还是有一些希望8-10点可以再改论文,但是找到老师一再确定8-10点是不能更改的。我们也就收拾东西去领盒饭了。收拾完东西,去机方楼下还了书,突然觉得有一种恍惚感,或许大学期间就没有机会在来到樱顶数院机房了,对这里还是很有留恋的,还有各位亲切的数院指导老师们。
去理学楼吃了饭,我们就在理学楼里面等到十点,提交了最终的论文。国赛也算是告一段落了,附上在樱顶行政楼前提交成功的照片。
最后,我想说:
此生我们终将别离,但是我总是没来由地相信,以某种特殊力量连接起来的人总会再次相遇。
这篇关于2019年国赛总结(Coding视角,总结记叙怀旧)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!