数据结构课程设计报告Word文档格式.docx
- 文档编号:14997948
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:15
- 大小:358.29KB
数据结构课程设计报告Word文档格式.docx
《数据结构课程设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
比如中国移动现有的公交查询,它往往只会告诉你一条方案,你甚至不知道它和别的其他方案有什么优缺点,因为有些乘客赶时间需要的是时间最快方案,有些乘客因为经济困难希望得到最省钱方案,有些乘客因为行动不方便或者喜欢舒适就希望得到换乘次数尽量少甚至直达的路线。
而且因为有时候人流集中,比如奥运期间鸟巢或水立方里某场超热门的比赛,如果比赛结束后大家出来后都选那么一两条路线,就会造成一两条线路拥挤,大家上不了车,这就需要查询系统能够提供多几条时间较快的,较省钱的线路让大家选择。
这些人性化的需求在中国移动现有的12580公交查询里的得不到的。
所以我希望能够建一个能满足各种乘客需求的更加完善的公交查询系统。
和公交查询匹配的是对于公交公司的公交车调度问题,奥运期间,如何更加好的安排公交调度,让大家出行方便,也是公交公司的当务之急,我的公交调度里,就可以根据每条公交路线采集到的数据来进行合理的调度,使得奥运期间大家的出行更加方便。
(一)摘要:
设计解决公交线路选择问题的自主查询计算机系统系统,其核心是
线路选择的模型与算法,特别是满足不同乘客的查询需求。
传统的
Dijkstra算法无疑是解决一般最短路径问题的最优算法,但接下来
我们会看到传统的Dijkstra算法在公交查询系统是不适合的。
而我
依据对公交乘客出行心理调查的统计结果,指出换乘次数最少是乘客
出行时考虑的首要因素,所以这里提出一种基于换乘次数最少的公交
最短路径算法,并根据公交系统的特点,以图的邻接表作为数据结构。
至于公交车的调度,需要同时考虑到公车公司和乘客的利益,必须尽量在满足双方的利益上做出合理的调度。
所以这是一个多目标最优的问题,一是公车公司的成本低,即提高每辆车的满载率,或者说发车的车次尽量少;
二是等待时间过长的乘客所占的比例尽量少;
三是超载的情况尽量不发生,让乘客尽量感到舒适。
因为一天里有些时间段里乘客人流的情况的相近的,比如早上平峰期,高峰期,中午平峰期,傍晚高峰期和晚上平峰期,我可以分别对这5个时间段分别求解。
这样我们就可以求解各个时段的满载率,等待超时乘客所占比例和超载的乘客所占比例这三个目标函数。
因为分别求解三个目标函数有困难也没有必要,所以我按公交公司效益和乘客利益同样重要和公交公司本着为乘客服务的理念愿意合理的牺牲一些效益这两个思想,对每个因素取一个适当的权重因子,最后得出最优调度。
关键词:
公交路线网络化,图的邻接表,公交查询,乘客的需求,换乘次数,广度搜索,公交调度,分时段调度,公交公司与乘客的利益关系
(二)问题描述:
乘客的查询系统:
我国人民翘首企盼移动的第29届奥运会明年8月将在北京举行,届时有大量观众到现场观看奥运比赛,其中大部分人将会乘坐公交出行。
这些年来,城市的公交系统有了很大发展,北京市的公交线路已达800条以上,使得公众的出行更加通畅、便利,但同时也面临多条线路的选择问题。
针对市场需求,需设计这样一个系统,其核心是线路选择的模型与算法,从实际情况出发考虑,考虑公汽线路,给出任意两公汽站点之间线路选择问题的一般数学模型与算法。
满足查询者的各种不同需求。
公交的调度系统:
公共交通是城市交通的重要组成部分,作好公交车的调度对于完善城市交通环境、改进市民出行状况、提高公交公司的经济和社会效益,都具有重要意义。
为了建立一个有效的公交调度,我需要采集需要调度的线路的相关数据。
根据采集到的数据,我的公交调度系统就可以为这条线路设计一个全天的公交调度方案。
这里我的测试数据来自北京某条公交线路的客流调查和运营资料。
并根据常规设客车在该线路上运行的平均速度为20公里/小时。
运营调度要求,乘客候车时间一般不要超过10分钟,早高峰时一般不要超过5分钟,车辆满载率不应超过120%,一般也不要低于50%。
根据这些资料和要求,为线路设计一个便于操作的全天(工作日)的公交车调度方案,包括两个起点站的发车时刻表;
这个方案以怎样的程度照顾到了乘客和公交公司双方的利益;
等等。
(三)系统模型的分析与建立
下面分公交查询和公交调度两个问题分别建立数学模型求解。
公交查询:
对与一般的交通道路图,最优路径往往就是最短的距离。
而对于这样的问题,经典的Dijkstra算法无疑是公认的最优的解决算法。
但在研究公交网络模型和最优路径算法时,有必要先了解公交乘客出行时所考虑的因素,通过对公交乘客出行心理、行为的研究来确定模型的优化目标和约束条件。
通常乘客选择出行路线时受到以下几个因素的作用:
“换乘次数”、“出行距离”、“出行耗时”、“出行费用”。
换乘次数是指乘客在完成一次出行过程中所换车的次数。
实际上这几个出行因素是相互影响的,如换乘次数和出行费用就是相关联的,特别是在一些实行一票制的城市中,这两个因素可以说是一致的。
根据早期的测试的结果发现的确如此,所用的费用基本都是以换乘次数为界划分的。
本文参照了在北京市做的一个公交乘客出行心理调查统计结果[1],它主要对三个因素做了调查:
换乘次数、出行距离、出行耗时。
从图1中可以看到有41.16%的乘客在选择出行路径时首先考虑的是换乘最少,其次考虑时间最短,而将路程最短作为出行时考虑的首要条件的乘客只占18.60%。
由此,我们可以确定公交网络中最短路径的意义与我们通常理解的最短路径的意义的区别。
就比如,拿公交乘客和汽车司机来比较。
公交乘客出行和汽车司机所考虑的因素是不同的,汽车司机关心的是如何选择最近距离,最大程度的省时省油;
而公交乘客出行更多考虑的是出门的方便性和舒适性,所以道路网络中的最短路径和公交线路的最短路径的意义是不同的。
道路网络中的最短路径只要找出两点之间路径距离为最短即可。
但是在公交网络中,乘客不会为了寻找距离最短路径而随意换车。
因为从一条线路换乘到另一条线路是费时又费力的,在很多情况下,换乘另一趟车需要到另一个站台,这就有一段的步行距离,而且在站台等车也是要消费时间的。
综合上面分析,所以对于公交乘客来说,最短路径的意义并不在于路程是否最短,而在于换乘的次数最少。
所以经典的Dijkstra算法并不适合用在公交线路的查询上。
我们必须采用优化的算法。
根据经验表明,在北京这样的大都市的公交网络上,换3次车即乘坐4条线路的公交车,方可到达目的地的情况都是很少发生的。
所以本文认为两次以内的转车是比较合理的。
在换乘次数为2次及以下的情况中,会产生出行时间最小和费用最低等相应情形。
有些乘客可能有急事所以较为倾向时间最小,有些乘客因为经济上的考虑会选择费用最低,有些乘客就会做出折中的选择。
为满足各种乘客的需求,我提出了基于广度优先搜索,求解所有的换乘次数为2次及以下的路线。
并根据乘客的需求判断出最优选择。
针对考虑公交的换乘情况,主要算法描述如下。
(1)输入乘车的起始站点A及目的站点B;
(2)求经过站点A的所有线路集S(I)和经过站点B的所有线路集T(J);
(3)判断有S(I)=T(J)吗?
如果有,则找到了从站点A到站点B的直达线路S(I)即T(J),输出结果,进行下一步。
(4)求线路S(I)上的站点E(I,U)以及线路T(J)上的站点F(J,V);
(5)判断是否存在相同站点,即E(I,U)=F(J,V)。
如果满足E(I,U)=F(J,V),则线路S(I),T(J)即为一次转车的线路,E(I,U)即为转车站点;
输出结果。
再执行下面。
(6)求经过E(I,U)的线路集R(K),经过F(J,V)的线路集Y(O);
(7)判断有R(K)=Y(O)吗?
如果有,则线路S(I),R(K),T(J)为两次换车的线路,换车站点为E(I,U)和F(J,V),输出结果。
继续执行下面。
(8)求线路R(K)上的站点G(K,W)和线路Y(O)上的站点L(O,X);
(9)判断是否存在相同站点,即G(K,W)=L(O,X),如果满足G(K,W)=L(O,X),则线路S(I),R(K),Y(O),T(J)即为三次转车的线路,E(I,U),G(K,W),F(J,V)即为转车站点。
公交调度:
通过对分析我觉得公车的调度问题是一个双方利益兼顾的问题,乘客的利益是超时等待的比例尽量少和超载的情况尽量少发生,公交公司的利益则是满载率尽量高,以提高效益。
接下来我将这三个目标量化,化为目标函数,以得到最优调度。
根据数据大家可以看出在一定的时段里乘客的人数有一定的相似性,这也比较容易理解,因为大家上班的时间大都集中在8:
00-9:
00,下班时间也集中在16:
00-18:
00左右。
所以我以乘客的人数多少将公车的运行时间分为几个时段。
一是早上平峰时段,二是早上高峰时段,三是中午平峰时段,四是傍晚的高峰时段,五是晚上的平峰时段。
这样我可以分别对每一时段单独进行分析求解,使得问题简化。
我只采用了上行的测试数据,下行同样可求。
下面是线路上行时段划分。
上行:
1
5:
00-6:
00
2
6:
3
9:
00-16:
4
16:
5
18:
00-23:
因为在我划分的一个时段里,情形都是相近的。
每个乘客到达车站又是相互独立事件,所以我可以认为在我划分的每个时间段里到达车站的乘客人数是均匀的。
由于乘客到达的均匀性,则一个时间段里发车也可以看成是均匀的。
接下来我们分别先求出时间段i里每趟车的每段路,车上总人数,再将其相加可得时间段i的总人数Pi。
然后将这个时间段所有等待时间超时的乘客相加,除以这个时间段的总人次Pi,这样就可化为等待超时的乘客所占比例的目标函数。
对于超载,可以对每趟车的每段路分别计算,如果超过则将每个路段的超载的人数相加,再除以这个时段总人数Pi,这样就可化为超载人数所占比例的目标函数。
而总人数Pi除以时间段Ti的运力,就可以得到满载率的目标函数。
下面我们先来求解上行路线。
时间段i的平均发车时间间隔为:
bi=Ti/Bi;
第k辆车到达站点j时,站点j上的等待上车的人数
PW(i,k,j)=Pl(i,k-1,j)+bi*Kij
而设Pl(i,0,j)=0,当k=1时PW(i,1,j)=*Kij;
第k辆车到达站点j时,下车人数
D(i,k,j)=bi*
而D(i,k,0)=0,即起点站没人下车。
第k辆车到达站点j时,车上乘客下车后车上的最大容量为:
On(i,k,j)=Max{120-(PLB(i,k,j-1)-D(i,k,j)),0};
第k辆车离开站点j后车上的人数
PLB(i,k,j)=PLB(i,k,j-1)-D(i,k,j)+max{O(i,k,j),PW(I,j,k)}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 报告