2019年数学建模国赛总结+解题思路
2019年国赛,我们组选题是C题,最终是国家二等奖,基本符合预期吧。本文写作动机还是保研面试可能会被老师问比赛的具体思路,快一年了还是有部分遗忘,看了一遍当初的文章就随便用文字记录一下,也希望给马上参加2020国赛的同学一点参考。(至于回忆部分,可能由于长时间存在小的偏差)
2019.5 华中赛
之前参加过华中赛,比赛体验较好。第一次参加数学建模比赛,但是很快入手,队友是一位学姐和一位与我同级的女生,她们都是信工学院的。之前他们在我校编程比赛群里看到我获得了一等奖,于是联系我参加2019年美赛,那时候只会写点C++,于是我拒绝了(这里插播一句,大学有一些成绩的同学还是比较吃香,例如我,很多人找我参加建模比赛,老师也主动找我参加大创项目。虽然我很菜,但是还是很高兴,大家一起加油!)。2019年5月,我也选修了一门数学建模选修课,算是有了基础的了解。偶然的机会,我们组队参加了华中赛,我负责代码部分和部分建模方法的贡献,学姐的写作和word的使用十分娴熟,同级女生的思维以及作图水平很不错,虽然我第一次参加华中赛,我们也获得了三等奖。这次比赛跟她们学到了很多,她们的思维活跃而且大胆表达自己想法,这个品质十分吸引我,我之前是缺乏的。
华中赛我的主要工作:
热带气旋路径,主要模拟思路采用论文方法,并使用matlab画出热带气旋路径图。然后是不同地区评级损失,这部分主要还是使用层次分析法(可能是最简单分析法,不建议使用),评估气旋在不同地区强度和范围。我们将此数据作为风险评估的指导数据,对不同地区使用分级评估函数,分段函数结合指数对数等诸多函数使用,这部分主观性很大。当然以上模拟和评估都是基于大量数据,找数据是一部分建模题目较大一部分工作量。
2019.6 赛前组队
国赛比赛前约定的伙伴由于自己项目原因不能参加比赛了,而暑假也是ACM集训的黄金时期,我也十分纠结。但是最终可能还是不甘心吧,觉得这是我参加建模比赛最后的机会了,在建模讨论群里找到两个队友,两个队友之前都是不认识的,运气也比较好吧,这两位队友都很好相处。队友是数理学院大四学长和工程学院同级女生,基本都是建模新手,我也算是。经过暑期集训,我们配合比较默契,基本都能完成训练题,而且感觉完成的还不错。
2019.8 暑期集训
我校数学建模有二十多天的暑期集训。7月份我都在和ACM队友打多校比赛,等到数学建模快开始,ACM队友也准备回家过暑假休息一下了,这样我心里愧疚也少一点,以免他们都在努力准备ACM比赛,而我部分精力给了自己的数学建模比赛。
但是还是有好几天重叠吧,上午下午在机房,晚上骑电动车去和建模队友准备建模比赛的训练题,还是比较累的,经常晚上看论文写建模训练题的方法,然后编程实现。主要是心累,怕队友有想法,不过我提前也和两边队友,建模那边还是稍微底气大一点,因为思路和代码基本都是我提供的,可能有点飘,哈哈。暑期集训对建模比赛还是有较大提高,基本形成以我为中心格局,我提供思路并编程实现,另一个队友打辅助,写论文那位同学写作能力也很不错。暑假就这样结束了,八月底回家休息了几天。
2019.9 赛中
(这部分主要写解题思路吧,比赛中我还抽了几小时和ACM队友打网络赛,期间也是比较难受,而且那场比赛也没打到现场赛名额。这也是我在国赛中自己的错误,可能也给队友传递了懈怠情绪。但是两边无法兼顾,无解的难题)
(前两问建模方法基本按照我的想法来的,后期沟通也较为费时间,我直接与写论文的同学沟通,告诉她我的思路,给出公式和结果。让学长去研究排队论的论文,学长对第三问贡献了很多,否则我们题目是做不完的,因为第二问我花了很多时间来量化每个决策因素,可能思维局限了,因为我的想法是只能利用司机可以掌握的信息做决策)
0.选题
前两个都是物理场景方向的题,物理公式基本全网,感觉太不友好。而C题是开发性的题,而我们的优势是较强的代码能力,所以我们一直希望选择一个求解精确数据的题。而最终还是选择这个题的原因是,我在某公司的大数据比赛平台下找到了成都出租车司机一个月的行驶路线和载客状态,这是一个很大的原始数据,可以有许多支持,而且找到和处理这个数据集,也不是十分容易。
1.题目:基于决策论和排队论的机场出租车问题研究
2.摘要最后一段
本文的特色,其一是在建立出租车司机选择决策模型过程中,综合考虑了五个相关因素的影响,并基于采集得到的实测数据对模型进行检验,保证模型的合理性和应用价值。其二是在建立三个排队系统下的收益计算模型中,考虑多个相关因子建立决策集,采用定步长枚举法,将时间成本进行量化处理和计算,并基于此研究得出较优的乘车总效率。
问题1:分析出租车司机做决定的影响机制,考虑出租车司机的获利和乘客数量的变化规律,建立出租车司机的决策机制,并给出司机的策略。
这个决策就是二决策问题,如果从机器学习角度考虑就是一个2分类问题。但是我们没有足够的标签数据,如果有足够多的标签数据,这个题用朴素贝叶斯或者SVM就能取得一个较好的决策效果。
所以思路十分简单,基于决策论的思想,分析影响出租车司机决策的相关因素,综合考虑出租车司机决策时刻机场的乘客数量和出租车司机可能的收益预测,建立起出租车司机在送客到机场后的选择决策模型。首先需要明确问题,即分析各个相关的决策要素及其变化规律,进而对出租车司机的决策方向进行选择。
确定目标。对题目所提供的(A)(B)两种选择方案,分析在乘客人数、机场到市区的距离、机场蓄车池的等待车辆数、单位时间内出租车在市区的收益和城市出租车的收费标准五个决策要素[1]的影响下,分别计算出租车司机的两种方案在某一时间段内载客途经的距离,进而得到可能的收益。
本文将出租车无论是空载还是载客从机场回到市区所需要的时间相同进行处理。即研究两个方案在相同的时间段里的载客途径的距离,进而计算对比该时间段两方案的收益,对方案进行评估。
即所研究的时间长度相同,\(t_1\) 随乘客人数、蓄车池内的车辆数发生变化, 随着机场和市区的位置确定之后,\(t_2\)为一个定值。所以等待时间 \(t_1\)就是决策的最重要的因素之一了,而\(t_1\)又是由多个因素变量决定。
这部分只需要给出决策因素,用公式表示出两种方案的收益即可。
问题2:收集国内某一机场和它所在城市出租车的相关数据,给出到达该机场的出租车司机的选择策略,并分析模型是否合理以及其对影响因素的依赖性。
这部分就要使用成都出租车数据集了,根据卫星的经纬度坐标,复原每辆出租车的行驶轨迹以及载客情况。
从所查阅得到的数据选取某一时间段对模型进行方案的组织实施,即分别对周末和工作日,对该城市到达机场时出租车司机的选择方案进行分析决策。进而对模型的合理性和相关因素的依赖性进行分析。
以小时作为单位时间,对时间段内出租车载客所经过的距离,进而计算得到该时间段内出租车在两个方案选择时的收益。最后,计算得到临界的等待时间(即在该等待时间下出租车司机选择两个方案的收益相同)。通过对比实际的数据,对模型的合理性进行检验。再依次改变五个决策因素,观察对决策结果造成的影响,分析得到模型对相关因素的依赖性。
(这里直接使用的vs2017处理几个G的数据,当时还不会MPI等并行工具,所以采用的数据还是偏少,没有全部利用。)
因为需要给出租车司机决策方案,所以只能利用出租车司机可以掌握的信息,给出具体决策方案。这也是本文的一大亮点。
决策依据:
对于五个相关系数,每个因素不同步长的组合对应的出租车司机的收益都不相同,所以对五个因素进行排列组合,将限制情况计算出来,得到一个决策集。由于解空间比较小,直接采用枚举的方法。如果解空间巨大,可以使用遗传算法等组合优化问题。最后依靠枚举每一种组合给出完整的决策集。而具体计算用到的参数数值,是根据成都出租车行驶数据和成都双流机场距离等信息确定。(有一定主观性)
问题3:在航班集中到达时,可能会出现乘客排队乘车和出租车排队载客同时进行的情况。某机场“乘车区”有两条并行车道,机场的管理部门应该怎样设置最适合“上车点”来合理调度出租车和乘客,既能保证车辆和乘客安全,又能使总的乘车效率最高。
查阅资料三种排队系统:单点式、多点纵列式、多点并列式并进行分析。基于题目要求,不改变车道的状态,仅考虑不同上车点的设置方案;而多点并列式只能设置两个上车点,多点纵列式可以设置多个上车点。
其次,基于排队论的三个部分,对排队系统系统的乘客相继到达的时间差、出租车的服务时间、单位时间到达人数、单位时间内被服务的乘客数、服务强度等多个参数进行假设。
随后,对排队系统的参数进行分析,依次对三种排队系统的乘客等待时间进行计算。
最后,分析计算各个模型下乘客等待时间产生影响的时间成本,包括乘客平均等待时间、出租车的平均等待时间和上车点的服务时间。可以知道时间成本与系统的效率成反比,基于出租车与乘客的安全,选择时间成本最低的点,对排队系统及上车点进行设置,使得乘车的总效率达到最高。
问题4:一般出租车载客获利与其行驶里程有关,而乘客的目的地不定,出租车司机一般会被要求不能选择乘客或拒载,但允许其往返载客。管理部门准备对短途载客且在规定时间内返回机场的出租车给予一定的“优先权”,使得短程载客和远程载客出租车的收益尽量平衡,请给出一个可行的“优先”安排方案。
为了使得出租车司机长途载客和短途载客的收益基本接近,需要为短途载客的出租车司机提供优惠,如按照浦东机场可以走便捷通道。首先需要对载客的里程数进行长途短途的划分,查阅多个机场关于短途里程数的规定,进而确定合适的短途里程数。
其次,通过调整缓冲区和蓄车池的容量,从而对出租车在各个区域的等待时间产生影响,进而对出租车司机的收益进行调节。短途载客的出租车比长途载客的出租车多出在蓄车池的等待时间,。
最后,对比计算调节后长途和短途载客出租车的平均收益,当长途载客的车收益和短途载客的出租车收益基本相等时,说明调整方案可行。
2019.9 赛后总结
应该是中秋节,三天还是很累。因为我在新校区,前两天睡在队友的宿舍。最后一晚在老师办公室度过,睡了两三个小时。最后晚上提交论文之后,坐大巴回到宿舍,感觉要垮了。因为基本没有老师帮助,这个题偏向开放,我和老师的思路有矛盾,论文是我们组独立完成的。当然老师也是十分好的,也给了我们一些指导意见以及办公室场地。
所以我对我们论文还是比较不自信,一部分插图不够美观,也存在一写错别字,那天下午我也存在懈怠,进度很慢,最后一点时间队友也有点懈怠了,校对出现的错误没时间修改了,还是有一些遗憾。我后来一直在想,如果我们相互鼓励最后时间坚持下来,应该好一点,这也是我队长没有尽职的地方。大家都付出99%的努力,结果可能会更好。最后获得国二,毕竟相比一些学校老师参与很多工作,感觉还是不错的。
我觉得我们论文优点是,数据充分,方法明确,对于一个开发性的问题给出了较为具体的指导方案,论文篇幅饱满,而且图表呈现较多,基本符合一篇优良级别的数学建模论文。
也十分感谢队友的齐心合作和指导老师支持,给我在数学建模比赛一个较好的体验和较为圆满的结局。
小小建议和看法
- 数学建模比赛不一定需要学习很多建模的具体方法,因为大家都有更多更重要的自己的专业知识学习。我觉得建模更多考验的是快速学习能力以及团队配合能力。但是一定需要有擅长编程的同学,(大家组队快去找编程熟练的小哥哥小姐姐去吧),因为一旦思路确定,编程同学能快速实现,可以争取较多的时间。
- 编程语言的话,matlab,python,C++都可以,但是matlab和python要会一门,因为需要画图,虽然excle也可以,但是相比编程语言,稍麻烦。学习完数据可视化这门课,才认识到Python图形工具的强大,画图不仅好看,而且图形类型很多。
- 写论文的同学最少要对word使用熟练,用Math Type插入公式熟练。语言组织风格可以多看看之前的优秀论文,熟悉每部分写作格式以及表述的规范性。
- 一般而且对于一个建模题目,分析题目需求之后,首先查找该领域国内学者已有的研究(国赛查国内中文期刊的基本够了,如果没有可以查外文期刊),然后就是数据,大概整合数据和已有研究,在组内讨论自己对这个题的思考以及阐述可以利用的文献和数据等。如果是选题,前期可以一人负责一个题。
- 论文中一定要多图多表,多公式,最后最重要的摘要肯定要润色好!