公交查询系统的最佳乘车方案设计(含程序)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
公交查询系统的最佳乘车方案设计
摘要
本文研究的问题是针对已知的公交线路信息如何设计出最佳的乘车方案。
首先,进行数据处理,用excel建立起公交线路矩阵。
然后,上网查阅了公交乘客乘车心理分析的资料,得出影响乘客出行的三个主要因素依次为为:换乘次数、出行时间、出行费用
随后,建立了站点—线路序列模型。利用公交乘客的出行过程抽象为站点—线路的交替转换的思想,从而确定了出行者出行路线的一般数学表达式。
针对问题一,仅考虑公汽的情况下,以换乘次数最少为第一目标、出行时间为第二目标、乘车费用为第三目标,建立起多目标最优化分层求解模型。并依靠站点—线路序列模型确定的出行线路表达式,采用图论中计算方法并结合广度搜索法经matlab编程(见附录一) 得到了公交乘客的最少换乘次数,所经过的站点,出行时间、出行费用(见表1)。
针对问题二,在问题一的基础上考虑了地铁线路,处理的方法是将地铁线当成特殊的公交线,将地铁站点当成公交站点并与给定的公交站连接。按照问题一的模型和算法得到乘客的最少换乘次数,出行时间、出行费用(见表2)。
针对问题三,在问题二的基础上考虑了所有站点之间的步行时间,由成人步行速度估算出该时间大小。步行线路与公汽线路相同但每条均有上行和下行。将步行线路矩阵与公交线路矩阵整合后按照问题二的算法得到乘客的最少换乘次数,出行时间、出行费用(见。
最后,建立公交负载模型对前三问的模型进行了改进。考虑到了实际中公交线路堵车的情况,将堵车线路拆分为两段新的线路并相应改变公交线路矩阵。算法与前三问算法相同,但使得最佳路径的选择更加灵活且更符合实际情况。
关键词:分层求解交替序列多目标最优化改进广度搜索法
1问题重述
问题背景
我国人民翘首企盼的第29届奥运会明年8月将在北京举行,届时有大量观众到现场观看奥运比赛,其中大部分人将会乘坐公共交通工具(简称公交,包括公汽、地铁等)出行。这些年来,城市的公交系统有了很大发展,北京市的公交线路已达800条以上,使得公众的出行更加通畅、便利,但同时也面临多条线路的选择问题。针对市场需求,某公司准备研制开发一个解决公交线路选择问题的自主查询计算机系统。
需要解决的问题
为了设计这样一个系统,其核心是线路选择的模型与算法,应该从实际情况出发考虑,满足查询者的各种不同需求。请你们解决如下问题:
问题一:仅考虑公汽线路,给出任意两公汽站点之间线路选择问题的一般数学模型与算法。并根据附录数据,利用你们的模型与算法,求出以下6对起始站→终到站之间的最佳路线(要有清晰的评价说明)。
(1)、S3359→S1828 (2)、S1557→S0481 (3)、S0971→S0485
(4)、S0008→S0073 (5)、S0148→S0485 (6)、S0087→S3676
问题二:同时考虑公汽与地铁线路,解决以上问题。
问题三:假设又知道所有站点之间的步行时间,请你给出任意两站点之间线路选择问题的数学模型。
2模型的假设及符号说明
模型假设
假设1:假设乘客都是理性乘车且能顺利到达目的地
假设2:假设不考虑红绿灯造成的等待时间,不考虑堵车,车祸等因素
假设3:假设乘客能接受的最大换乘次数为2次
假设4:假设乘客乘车过程中不能2次经过同一站点。
假设5:假设公交与地铁换乘距离固定,换乘步行时间为常数
符号说明
3问题分析
本文研究的问题是设计一个公交线路选择的自助查询的计算机系统,并从实际情况出发考虑,以满足查询者的各种不同需求。设计该系统的核心是线路选择的模型与算法。
针对问题一:问题一要求只考虑公汽线路,给出最佳路径。通过查阅相关资料,知道对乘客影响最大的三个因素:换乘次数,行程时间,所需费用(重要性
从大到小)。据此,我们建立以换乘次数为第一目标,行程时间最为第二目标,所需费用为第三目标的多目标最优化模型。对于换乘次数,联系被选择线路上的站点—线路交替序列TR i个数可以表示出来;站点总数则采用给同一线路上的站点排序的方法也可以求到,由于只考虑了公汽之间的换乘,则出行时间只与换乘次数和所历站数有关;对于出行费用则在换乘次数的基础上,引入分段计价的加价函数也可求得。
针对问题二:问题二在一得基础上考虑可以搭乘地铁,乘客的选择更加灵活。主要变化为:地铁票价稍高但是固定且在地铁航线之间换乘而不需另外支付交通费用,相邻站点之间的距离较公汽站点大,而运行时间却相对减少;地铁与公汽之间进行换乘时,由于地铁站点不可能与公汽站点都建在同一个地方,因此从地铁站到公汽站的步行时间相对较多,而且位于与地铁换乘的公汽站点还可以通过本地铁站进行免费耗时换乘到下一个公汽站。我们可以把跨公交站的步行视为一种免费耗时的交通方式,据此分层求解。
针对问题三:考虑到出行者在步行时,所经过的任意两站点之间的路径都应该是至少有一条公汽线路上的公交工具通过,由问题三的条件可知,步行时所经过的两站点之间的步行时间是一个已知值。当换乘的两站之间站数不多时,我们考虑步行,这要可以减少换乘次数,节约金钱。
4数据处理及分析
数据处理
4.1.1数据统计
我们运用Excel软件对给的“公汽线路信息”和“地铁线路信息”进行统计得到如下数据:
表1
在分段计价路线中,共有27条的公汽站点数不超过20,有148条的公汽站点数在21~40之间,公汽站点数超过40的线路有108条。因此,从单独的计算角度来考虑,可以将分段计价中站数不超过20的线路归为单一票制1元的线路,因此上述信息可修正为:票价信息为单一票制1元的线路264条;在分段计价的路线中,共有256条,其中有148条的公汽站点数在21~40之间,公汽站点数超过40的线路有108条。
4.1.2数据的储存与处理
由于所给的数据格式不利于程序软件直接读取和操作,我们运用Excel将数据处理为规范格式,建立起公交线路矩阵A。
(1)把公汽线路信息以及地铁线路信息分别导入到Excel表格中
(2)将公汽数据中的上下行相同、上下行不同、环行的线路分别找出并归类。
(3)将上下行相同的上行序列倒序后作为下行序列。则每条线路对应两个行向量。
(4)环行线路若有n个站点,则依次以每个站点为起点和终点建立起n条首位相
同的线路序列。
(5)在第k条线路对应的所有序列前加上数字k作为标记列,其意义为第k条路线。
(6)运用Excel的查找替换功能将公汽站点编号“S”和地铁站点编号“D”分别
用0和111代替。目的是为了在汽车站和地铁站区别的条件下让matlab可以识别和进行矩阵操作。
(7)将所有的序列整合到同一个excel表中,建立交线路矩阵A,每一行储存一
条线路站点信息,没有信息的点用“0”填充。
公交线路矩阵A