离散数学技术报告(该报告不完整)
实验题目:对南京地铁计价模型分析及最佳路径设计基于Python语言
关键词: 城市交通; 地理信息系统; Dijkstra算法; 约束条件; 路径分析
一.引言
截至2022年10月,南京地铁已开通运营线路共有11条,包括1、2、3、4、10、S1、S3、S6、S7、S8及S9号线,均采用地铁系统,共193座车站(换乘站重复计算),地铁线路总长429.1千米,构成覆盖南京全市11个市辖区及句容市的地铁网络。南京是中国第一个区县全部开通地铁的城市,也是继广州、上海、武汉后中国第四个开通跨市地铁线路的城市通过对离散数学图论部分的学习,我们通过此次实验调查了南京地铁的计价规则,并通过编程的方式对其进行复现,该计价系统只需要在确定起点和终点的情况下寻求最短路径,花费最少的费用完成路程转换,以达到在实际情况下提高所学知识运用能力的目的。
二.技术总结
1 资料查阅
根据南京市发展和改革委员会《关于调整南京地铁线网票价的通知》可知南京地铁按里程计价的规则:
南京地铁票制按里程计价,起步价2元可乘4千米,4千米以上部分,票价每增加1元晋级相应里程。详细票价查询可访问南京地铁官网。
2019年3月31日之前南京地铁实行低票价策略,从首条线路正式运营起南京地铁票价为中国最低,按国际地铁协会统计的购买力衡量,南京地铁票价属亚洲最低,按乘距衡量票价在全球排名末位。
南京地铁线网票价方案 | |||
分段 | 乘坐里程(千米) | 跨度 | 单程票票价 |
1 | 0≤里程≤4 | 4千米 | 2元 |
2 | 4<里程≤9 | 5千米 | 3元 |
3 | 9<里程≤14 | 5千米 | 4元 |
4 | 14<里程≤21 | 7千米 | 5元 |
5 | 21<里程≤28 | 7千米 | 6元 |
6 | 28<里程≤37 | 9千米 | 7元 |
7 | 37<里程≤48 | 11千米 | 8元 |
8 | 48<里程≤61 | 13千米 | 9元 |
9 | 61<里程 | 每15千米 | 增加1元 |
在遇到起点和终点存在多种换乘线路的情况时,应当按照最短换成里程计算票价。
由计价方式可将地铁计价问题抽象为图论中的最短路径问题:将地铁线路图抽象为无向简单赋权图,车站为图中的节点,地铁线路为边,将站间距离作为权值。通过求最短路径的算法即可求得其最短路径。利用最短路径长度通过计价标准计算可得票价。
站间距离可以从南京地铁官网(https://www.njmetro.com.cn/njdtweb/home/go-line-intro.do?columnId=8a8080076512510d0165130727520004&rowId=8a80800765a29a780165a8538b6f0018)查询得到。
2 设计思路
此次实验的核心为利用迪杰斯特拉算法求出给定起点和终点之间的最短距离从而得出花费最低的票价及其最短路程完成目的。以下进行分析阐述。
3 问题分析
首先将从南京地铁官网可获取本次实验所需要的1号线、2号线、3号线、4号线、10号线、S1号线、S3号线、S6号线、S7号线、S8号线、S9号线地铁线路图如下:
其次,根据所学图论知识,将图中车站画为节点,地铁线路为连结两节点的边,将站间距离作为权值赋权,通过绘制无向简单带权图,建立地铁线路系统分析的模型如下:
建立初步模型后,接下来就是搭建数据储存的几种机制。得出以下两种方式储存地铁站间距离,一是通过二维数组直接进行所有点间的权重(即距离)的遍历,二是通过一维数组进行相邻站点间的距离的储存,在调用时再新建邻接矩阵进行图的矩阵化。
在邻接矩阵准备完毕后,通过我们此次试验需要用到的核心算法Dijkstra算法进行计算得到最短路径来用于求取费用,最后输出我们想要的结果。
三.系统与算法
1 理论分析Dijkstra算法
Dijkstra算法是由荷兰计算机科学家Dijkstra于1959 年提出的,是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题。迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。从一个点出发寻求到另一个点的最短路径,Dijkstra算法用生成“最小路径树”的方法实现(1)算法特点:Dijkstra算法使用了广度优先搜索解决赋权有向图或者无向图的单源最短路径问题,算法最终得到一个最短路径树。
(2)算法思想:设G=<V,E>是一个带权有向图,把图中顶点分成两部分,一部分为最短路径已使用过的点的集合(设为S),另一部分为还未经过的点的集合(设为U),初始时S只有一个源点,按照最短路径长度的递增次序依次把U中的顶点加入到S中,在此过程中总是保持源点到S中顶点的最短路径长度不大于源点到U中任何顶点的最短路径。
每个顶点同时还对应一个距离,S中顶点的距离就是从源点到此顶点的最短路径长度。
(3)算法描述:
(a).选择一个结点作为树的根,将其标记成永久性结点。接着从根出发与它的所有相邻的结点分别做出临时连接。
(b).比较所有的临时连接,找出费用最小的路径,这个路径上的弧和结点都被标记为最短路径树上的永久部分。
(c)考察从选定的最短路径向外延伸所能连接的所有非永久性结点,将这些结点临时性地加到最短路径树上。
(d)如果目标结点已经成为最短路径树上的永久部分,则去掉所有临时性的弧,算法结束。
2 计价系统数据处理和计费处理
(1)站名处理:定义一个常量字符串数组用于存放所有地铁站的英文名,据统计,十一条线一共有168个不同的站点名,如下图所示:
(2)站间距离处理:通过建立二维数组构建邻接矩阵,如下图,先将二维数组中不同点间距离置为无穷大,即maxint,相同点距离置为0,通过手动录入南京地铁官网所有两站的距离,可以发现两点间互通,得到的是无向图,邻接矩阵也是个对称矩阵。二维数组中的索引为1也就是我们一号线的起点“南京站”的索引,索引为2也就是“南京南站”,以此类推。c[1][2]也就是存储了这两个索引之间的距离。
(3)计价处理,也就是将用Dijkstra算法获取的最短路径来用官网的计费公式实现:
4可视化代码分析
(1)Tkinter(即 tk interface) 是 Python 标准 GUI 库,简称 “Tk”;从本质上来说,它是对 TCL/TK 工具包的一种 Python 接口封装。Tkinter 是 Python 自带的标准库,因此无须另行安装,它支持跨平台运行,不仅可以在
# 导入tk from tkinter import * # 创建一个主窗口对象 window = Tk() # 调用mainloop()显示主窗口 window.mainloop() |
Windows 平台上运行,还支持在 Linux 和 Mac 平台上运行。
(2)Label(标签)控件,是 Tkinter 中最常使用的一种控件,主要用来显示窗口中的文本或者图像,并且不同的 Lable(标签)允许设置各自不同的背景图片。下面通过一个示意图对 Label 背景的区域构成进行说明:
图1:Label控件组成
边框的宽度可以通过 borderwidth 来调整,其样式可以通过relief来设置(默认为平的 flat);填充区的大小调整分为水平方向和垂直方向,可以使用padx和pady来调整;内容区则主要用来显示文字或者图片,其大小由 width/height 来控制。
四.实验与测试
对于通过分析解决得到的代码体系,我们选取了三组有代表性的数据进行试验与测试,结果如下图展示:
选取的三组数据:
- 迈皋桥站到句容站
- 南京站到西安门站
- 软件大道站到禄口机场站
图(a1)系统测试结果1
图(a2)高德地图程序官方结果1
图(b1)系统测试结果2
图(b2)高德地图程序官方结果2
图(c1)系统测试结果3
图(c2)高德地图程序官方结果3
由上系列图可见,经过多组测试,实验与实际情况基本相符。
五.总结
地铁收费系统以networkx中的Dijkstra算法求最短路径为主要算法,以南京市地铁收费标准为依据完成出从出发站到终点站的票价的计算。
在着手开始写代码之前,我们从南京地铁官网,以及实地乘坐地铁时收集相关信息,根据networkx中如何调用Dijkstra算法的过程,逐步实现向代码的转化。其中最大的障碍是如何把地铁线路转图存放于矩阵中,并将代表站点名的字符串与站点间距一一对应,再通过查阅资料,询问专业人士后,用字典存放站点名,站与站之间对应的距离,解决了这个问题。在讲地铁线路转化成图后便可使用Dijkstra算法实现最短路径的计算,与区间票价比较得到最终票价。完成代码编译也出现了或多或少或大或小的问题,基本通过讨论分析,查阅资料一一解决了所有的问题,最终成功实现了地铁系统。
完成南京市地铁票务系统后,加深了我们对Dijkstra算法的认识,同时也对图论部分的知识有了更深刻的理解和感悟,在作品的实现过程中,我们从最开始不太清楚离散数学这门课程与计算机或者说与专业的关系到逐渐认识到离散在计算机中的应用,这一过程以及这门课的学习对于我们未来的学习是很有帮助的。在这次实验中利用已学过的知识设计了一个完整的系统,深刻体会到了算法在这其中的作用。算法就像是一个系统的灵魂,它能让一个系统富有生机和活力。以前总觉得算法离我们很遥远,但它却应用在了生活的方方面面。离散数学的课程虽然已经结束,但我相信这门课程里学到的知识会让我受益匪浅。这次我们也发现了自己的问题,对就是代码运用不是很熟悉,很多东西需要不停的查找资料。此次实验锻炼了我们在实际问题中运用所学知识的能力。
参考文献:
[1] | IVAN I, BENENSON I, JIANG B, et al. Geoinformatics for intelligent transportation[M]. Cham: Springer International Publishing, 2015: 121-135. |
[2] | GUNAY A, AKCAY O, ALTAN M O. Building a semantic based public transportation geoportal compliant with the INSPIRE transport network data theme[J]. Earth Science Informatics, 2014, 7(1): 25-37. |
[3] | SADEGHI-NIARAKI A, VARSHOSAZ M, KIM K, et al. Real world representation of a road network for route planning in GIS[J]. Expert Systems with Applications, 2011, 38(10): 11999-12008. |
[4] | PAPINSKI D, SCOTT D M. A GIS-based toolkit for route choice analysis[J]. Journal of Transport Geography, 2011, 19(3): 434-442. |
[5] | YANG H T, CHERRY C, ZARETZKI R, et al. A GIS-based method to identify cost-effective routes for rural deviated fixed route transit[J]. Journal of Advanced Transportation, 2016, 50(8): 1770-1784. |
[6] | HUANG B. GIS-based route planning for hazardous material transportation[J]. Journal of Environmental Informatics, 2006, 8(1): 49-57. |
[7] | DUNCAN M J, MUMMERY W K. GIS or GPS? A comparison of two methods for assessing route taken during active transport[J]. American Journal of Preventive Medicine, 2007, 33(1): 51-53. |
[8] | YANG Z Z, JIANG Y L, CHEN Y. Developing a road traffic control system with GIS[J]. Transport, 2009, 162(4): 189-194. |
[9] | HUANG R H, HAWLEY D. A data model and internet GIS framework for safe routes to school[J]. URISA Journal, 2009, 21(1): 21-30. |
[10] | VERONESI F, SCHITO J, GRASSI S, et al. Automatic selection of weights for GIS-based multicriteria decision analysis: site selection of transmission towers as a case study[J]. Applied Geography, 2017, 83: 78-85. |
[11] | IOANNOU G, KRITIKOS M, PRASTACOS G. Map-route: a GIS-based decision support system for intra-city vehicle routing with time windows[J]. Journal of the Operational Research Society, 2002, 53(8): 842-854. |
[12] | DIJKSTRA E W. A note on two problems in connexion with graphs[J]. Numerische Mathematik, 1959, 1(1): 269-271. |
[13] | 苏宝莉, 李宁. Dijkstra算法优化及在GIS系统中求最佳路径的应用[J]. 遥感技术与应用, 2013, 28(5): 866-870. |
[14] | ATKINSON D M, DEADMAN P, DUDYCHA D, et al. Multi-criteria evaluation and least cost path analysis for an arctic all-weather road[J]. Applied Geography, 2005, 25(4): 287-307. |
[15] | DAUNORAS J, BAGDONAS V, GARGASAS V. City transport monitoring and routes optimal management system[J]. Transport, 2008, 23(2): 144-149. |
[16] | LIMA R M D, OSIS R, QUEIROZ A R D, et al. Least-cost path analysis and multi-criteria assessment for routing electricity transmission lines[J]. IET Generation, Transmission & Distribution, 2016, 10(16): 4222-4230. |
[17] | CHENG M Y, CHANG G L. Automating utility route design and planning through GIS[J]. Automation in Construction, 2001, 10(4): 507-516. |
[18] | 姚恩建, 鲁楠, 郎志峰, 等. 考虑节能的城市物流配送方案优化[J]. 北京交通大学学报, 2015, 39(6): 85-91. |
[19] | HAZELL L C, BRODIE G. Applying GIS tools to define prehistoric megalith transport route corridors: Olmec megalith transport routes: a case study[J]. Journal of Archaeological Science, 2012, 39(11): 3475-3479. |
[20] | FENG C Q, JIANG N, ZHANG X N, et al. Automatic match between delimitation line and real Terrain based on least-cost path analysis[C]//ISPRS-International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences. Beijing, 2013: 57-61. |