公交分配模型
公交线路发车频率优化的双层规划模型及其解法_于滨

主要研究更具普遍意义的第二种优化方法 。在发 车频率制定的过程中 , 存在着供给 (公交企业 )和 需求 (乘客 )两个主体 , 供 、需双方是相互作用 、 相互影响的 , 即供给方依据线路的客流量制定发 车频率 , 而需求方调整自己的行为来适应这个频
收稿日期 :2005-12-01. 基金项目 :国家自然科学基金资助项目 (50479055). 作者简介 :于滨 (1977 - ), 男 , 博士研究生. 研究方向 :网格 , 智能公交. E-ma il:m in lfish@ yahoo. com. cn 通讯联系人 :程春田 (1965 - ), 男 , 教授 , 博士生导师. 研究方向 :电力系统优化 , 防汛减灾.
m k n =Umk +1
Sk - 1 m
- (n
-
1) /rk ) +Rmk
f)
M o 分为三部分 :①等待车辆费用 τw 是在车
辆到站前 , 站台上的乘客 (不包括上趟车 留剩的
乘客 )等待的时间费用 ;②等待上车费用 τμ是车 辆到站后 , 在站台停车期间乘客在车外等待上车
的时间费用 ;③额外费用 τφ是留剩乘客 (受车容 量限制被留剩在站台上的乘客 )等待当前车辆和
吉 林 大 学 学 报 (工 学 版 )
Journa l o f Jilin U niversity (Enginee ring and T echno logy Ed ition)
V o.l 36 N o. 5 S ep.t 2006
文章编号 :1671 - 5497(2006)05 - 0664 - 05
第 36卷
辆车在第 k 站的停车时间 , Smk
=m
ax(uU
k m
公交车调度数学建模

公交车调度摘 要本文通过对给定数据进行统计分析,将数据按18个时段、两个行驶方向进行处理,计算出各个时段各个站点以及两个方向的流通量,从而将远问题转化为对流通量的处理。
首先,利用各时段小时断面最高流通量计算出各时段各方向的最小发车次数,进行适当的调整,确定了各时段两个方向的发车次数。
假定采用均匀发车的方式。
继而求出各时段两个方向发车间隔,经部分调整后,列出0A 站和13A 站的发车时刻表,并给出了时刻表的合理性证明,从而制定调度方案。
根据调度方案采用逐步累加各时段新调用的车辆数算法,求出公交车的发配车辆数为57辆。
其次,建立乘客平均待车时间和公交车辆实际利用率与期望利用率的差值这两个量化指标,并用这两个指标来评价调度方案以如何的程度照顾到乘客和公交公司双方利益。
前者为4.2分钟,后者为13.88%。
最后,我们以上述两个指标为优化目标,以乘客的等车时间数学期望值和公交车辆的满载率的数学期望为约束指标,建立了一个双目标的优化模型。
并且给出了具体的求解方法,特别指出的是,给出了计算机模拟的方法求解的进程控制图。
通过了对模型的分析,提出了采集数据的 采集数据方法的建议。
注释:第i 站乘客流通量:∑=ik 1(第k 站的上车的人数与第k 站的下车人数的差值);总的乘客等车时间:∑=mi 1∑=nj 1(第i 时段第j 站等车乘客数)⨯(第I 时段第j 站等待时间);乘客平均等车时间:总的乘客等车时间与总乘客数的比值;实际利用率:总实际乘客流通量与公司车辆总最大客运量的比值; 期望利用率:总期望乘客流通量与公司车辆总最大客运量的比值一、问题的提出一条公交线路上行方向共14站,下行方向功13站,给定典型的一个工作日两个运行方向各站上下车的乘客数量统计。
该线路用同一型号的大客车,每辆标准载客100人,据统计客车在该线路上运行的平均速度为20公里/小时。
运营调度要求,乘客候车时间一般不要超过10分钟,早高峰是一般不要超过5分钟,车辆满载率不应超过120%,一般也不要低与100%,一般也不要地狱50%。
公交车系统调度模型构建

公交车系统调度模型构建随着城市人口的增长和交通需求的日益增加,公交车系统调度成为了一个重要的课题。
公交车系统调度不仅影响了乘客的出行体验,也关系到城市交通的运行效率和资源的合理利用。
构建合理的公交车系统调度模型尤为重要。
公交车系统调度模型构建涉及到多个方面的因素,包括乘客需求、车辆运行状态、交通拥堵情况等。
在这篇文章中,我们将讨论公交车系统调度模型的构建,包括模型的基本架构和关键因素的考量。
模型的基本架构公交车系统调度模型可以分为长期调度和短期调度两个层面。
长期调度主要包括线路规划、车辆配备等方面,而短期调度则涉及到具体的车辆运行和乘客需求的匹配。
在长期调度方面,模型的基本架构包括以下几个方面:线路规划:根据城市的交通网络和乘客需求,确定公交车的线路和站点设置。
这一部分涉及到城市规划、社会经济需求以及交通流量等多个因素,需要综合考虑。
车辆配备:根据线路规划和乘客需求,确定需要投放的车辆数量、类型和运营时间。
这一部分涉及到车辆的技术性能、运营成本等因素。
燃料消耗和排放控制:考虑到环保和资源节约的需求,模型需要考虑到车辆燃料消耗和排放对环境的影响,并在车辆配备和线路规划中进行合理的控制。
车辆运行调度:根据实际的交通情况和乘客需求,对车辆的具体运行进行调度。
这一部分需要考虑到路况、乘客上下车情况、站点运行时间等因素。
乘客需求匹配:根据实时的乘客需求,对车辆的运行进行合理的匹配。
这一部分需要考虑到不同时间段和不同线路的乘客需求分布情况。
交通拥堵应对:在交通拥堵情况下,调整车辆运行路线和时间,以保证乘客的出行效率和乘客的舒适度。
关键因素的考量构建公交车系统调度模型时,需要考虑到一系列关键因素,包括以下几个方面:车辆状态:考虑到车辆的实际运行状态,包括车辆的技术性能、维护情况等因素,确定合理的车辆运行调度。
运营成本:在考虑到上述因素的基础上,尽量降低公交车系统的运营成本,提高运行效率和资源的合理利用。
公交车系统调度模型的构建是一个复杂而又重要的课题。
一类公交车调度问题的数学模型及其解法

一类公交车调度问题的数学模型及其解法1. 背景介绍公交车作为城市交通的重要组成部分,其运营效率和服务质量直接影响市民出行体验。
而公交车调度问题则是保障公交线路运营效率和准时性的重要环节之一。
在日常运营中,由于路况、乘客量、车辆故障等影响因素,公交车的调度往往面临诸多挑战。
如何利用数学模型解决公交车调度问题成为了一个备受关注的课题。
2. 公交车调度问题的数学建模公交车调度问题的数学建模主要涉及到车辆的合理分配以及路线的优化规划。
在数学建模时,需要考虑的主要因素包括但不限于乘客量、车辆容量、交通状况、站点分布等。
而个体车辆的运行轨迹则需要综合考虑上述因素以及最优化算法对其进行分析。
3. 数学模型的构建针对上述因素,可以将公交车调度问题构建成一个复杂的优化模型。
该模型主要包括以下几个方面的内容:(1)乘客需求预测:通过历史数据和大数据分析,预测不同时段和不同线路的乘客需求,为车辆调度提供依据。
(2)车辆分配优化:根据乘客需求预测和实际路况,采用最优化算法确定每辆车的运行路线和发车间隔。
(3)站点排队优化:结合乘客上下车规律和站点的停靠条件,优化车辆在不同站点的排队顺序,以减少候车时间和提升服务效率。
(4)交通状况仿真:通过交通仿真模型,考虑城市交通状况对公交车运行的影响,提前对可能出现的拥堵情况进行预判,以调整车辆的发车时间和路线。
4. 数学模型的求解在构建好数学模型后,需要采用合适的方法对其进行求解。
常见的求解方法主要包括但不限于线性规划、遗传算法、模拟退火算法等。
在实际求解过程中,需要充分考虑不同方法的适用场景和对模型的拟合程度,以选择最合适的求解方法。
5. 案例分析以某市的公交系统为例,采用上述数学模型对其进行调度优化。
通过收集该市的实际路况数据、站点分布情况以及历史乘客需求数据,建立完整的数学模型。
然后运用遗传算法对其进行求解,得到了最优的车辆运行路线和发车间隔。
在模型求解后,将其应用于实际公交车调度中,并进行了一段时间的实际运行试验。
公交车调度模型

公交车调度模型(故可视作环行线,见下图)记v :公交车速度;t(k): 第k 次发车时刻(k=1,2,……,N );d(j): 第Bj 站到第Bj+1站的距离(km)(j=1,2,……,25);t1(k,j):第k 次发车到达第j 站的时刻:t1(k,j)=t(k)+[d(1)+d(2)+……+d(j))]/v; (j=2,……,26) T : 公交车环行周期(h );mu :矩阵元素mu(i,j)为第i 个时间段第j 个站上车人数(i=1,2,……,18, j=1,2,……,26); md :矩阵元素md(i,j)为第i 个时间段第j 个站下车人数(i=1,2,……,18, j=1,2,……,26);; z(k,j): 第k 次发车第j 个站启车时乘客增量:z(k,j)=f(t(k),j)×[t(k,j)-t(k-1,j)]( j=1,2,……,25);其中 0,t(k)5and t(k)23f (t(k),j)mu(i1,j)md(i2,j),elsei1[t(k)(d(1)...d(j 1))/v]4,i2[t(k 1)]4<>⎧=⎨-⎩=+++--=--其中 s(k,j):第k 次发车第j 站启车时车上乘客数 s(k,j)=[z(k,1)+ z(k,2)+……+z(k,j)]( j=1,2,……,25);优化模型目标函数:max t(k)约束条件:25j 1t(k)t(k 1)10;1s(k,j)50;25s(k,j)120,j 1,2,3, (25)=⎧--<=⎪⎪>=⎨⎪⎪<==⎩∑sets :fache/1/:t;distance/1..25/:d;time_stage/1..18/;zhan/1..26/:i0,i1,i3;link1(time_stage,zhan):mu,md;link(fache,zhan):f,s,z;!link2(fache,time_stage):tj,z;endsetsdata:v=20;d=1.56,1,0.44,1.2,0.97,2.29,1.3,2,0.73,1,0.5,1.62,1.6,0.5,1,0.73,2.04,1.26,2.29,1,1 .2,0.4,1,1.03,0.53;mu=22,3,4,2,4,4,3,3,3,1,1,0,371,60,52,43,76,90,48,83,85,26,45,45,11,0795,143,167,84,151,188,109,137,130,45,53,16,1990,376,333,256,589,594,315,622,510,17 6,308,307,68,0,2328,380,427,224,420,455,272,343,331,126,138,45,3626,634,528,447,948,868,523,958,90 4,259,465,454,99,0,2706,374,492,224,404,532,333,345,354,120,153,46,2064,322,305,235,477,549,271,486,43 9,157,275,234,60,0,1556,204,274,125,235,308,162,203,198,76,99,27,1186,205,166,147,281,304,172,324,267, 78,143,162,36,0,902,147,183,82,155,206,120,150,143,50,59,18,923,151,120,108,215,214,119,212,201,75, 123,112,26,0,847,130,132,67,127,150,108,104,107,41,48,15,957,181,157,133,254,264,135,253,260,74, 138,117,30,0,706,90,118,66,105,144,92,95,88,34,40,12,873,141,140,108,215,204,129,232,221,65,103, 112,26,0,770,97,126,59,102,133,97,102,104,36,43,13,779,141,103,84,186,185,103,211,173,66,108 ,97,23,0,839,133,156,69,130,165,101,118,120,42,49,15,625,104,108,82,162,180,90,185,170,49,75 ,85,20,0,1110,170,189,79,169,194,141,152,166,54,64,9,635,124,98,82,152,180,80,185,150,49,85,85,20,0,1837,260,330,146,305,404,229,277,253,95,122,34,1493,299,240,199,396,404,210,428,390 ,120,208,197,49,0,3020,474,587,248,468,649,388,432,452,157,205,56,2011,379,311,230,497,479,296,586,50 8,140,250,259,61,0,1966,350,399,204,328,471,289,335,342,122,132,40,691,124,107,89,167,165,108,201,194, 53,93,82,22,0,939,130,165,88,138,187,124,143,147,48,56,17,350,64,55,46,91,85,50,88,89,27,48,47,11 ,0,640,107,126,69,112,153,87,102,94,36,43,13,304,50,43,36,72,75,40,77,60,22,38,37,9,0, 636,110,128,56,105,144,82,95,98,34,40,12,209,37,32,26,53,55,29,47,52,16,28,27,6,0, 294,43,51,24,46,58,35,41,42,15,17,5,19,3,3,2,5,5,3,5,5,1,3,2,1,0;md=0,21,1,6,7,7,5,3,4,2,3,9,8,9,13,20,48,45,81,32,18,24,25,85,57,0,70,40,40,184,205,195,147,93,109,75,108,271,99,105,164,239,588,542,800,407,208,300 ,288,921,615,0,294,156,157,710,780,849,545,374,444,265,373,958,205,227,272461,1058,1097,1793,801,469,560,636,1871,1459,0,266,158,149,756,827,856,529,367,428,237,376,1167,106,123,169,300,634,621,971,440, 245,339,408,1132,759,0,157,100,80,410,511,498,336,199,276,136,219,556,81,75,120,181,407,411,551,250,136, 187,233,774,483,0,103,59,59,246,346,320,191,147,185,96,154,438,52,55,81,136,299,280,442,178,105,153 ,167,532,385,0,94,48,48,199,238,256,175,122,143,68,128,346,54,58,84,131,321,291,420,196,119,159, 153,534,340,0,70,40,40,174,215,205,127,103,119,65,98,261,46,49,71,111,263,256,389,164,111,134,1 48,488,333,0,75,43,43,166,210,209,136,90,127,60,115,309,39,41,70,103,221,197,297,137,85,113,11 6,384,263,0,84,48,48,219,238,246,155,112,153,78,118,346,36,39,47,78,189,176,339,139,80,97,120 ,383,239,0,110,73,63,253,307,341,215,136,167,102,144,425,36,39,57,88,209,196,339,129,80,107, 110,353,229,0,175,96,106,459,617,549,401,266,304,162,269,784,80,85,135,194,450,441,731,335,157, 255,251,800,557,0,330,193,194,737,934,1016,606,416,494,278,448,1249,110,118,171,257,694,573,957,390 ,253,293,378,1228,793,0,223,129,150,635,787,690,505,304,423,246,320,1010,45,48,80,108,237,231,390,150,89, 131,125,428,336,0,113,59,59,266,306,290,201,147,155,86,154,398,22,23,34,63,116,108,196,83,48,64,66, 204,139,0,75,43,43,186,230,219,146,90,127,70,95,319,16,17,24,38,80,84,143,59,34,46,47,160,1 17,0,73,41,42,190,243,192,132,107,123,67,101,290,14,14,21,33,78,63,125,62,30,40,41,128 ,92,0,35,20,20,87,108,92,69,47,60,33,49,136,3 3,5,8,18,17,27,12,7,9,9,32,21;t1=5;f=22,-18,3,-4,-3,-3,-2,0,-1,-1,-2,-9,363,13,20,enddatainit:t2=5.1;endinitmax=t2-t1;t2-t1<10/60;@for(zhan(j)|j#eq#1:i0(j)=t2);@for(zhan(j)|j#ge#2:i0(j)=t2+@sum(zhan(n)|n#le#(j-1)#and#n#ge#2:d(n)) /v);@for(zhan(j):i1(j)=@floor(i0(j))-4);@for(zhan(j):f(1,j)=@free(mu(i1(j),j)-md(i1(j),j)));!@for(zhan(j):z(1,j)=f(2,j)*(t2-t1));!@for(zhan(j):s(1,j)=@sum(zhan(j):z(1,j)));!@for(zhan(j):@sum(zhan(j):s(1,j))/26>=50);!@for(zhan(j):s(1,j)<120);!@for(fache(k)|k#gt#1:t(k)-t(k-1)<=10/60;!t(k)-t(k-1)>1/60;!t(k)>t(k-1);!@for(link2(k,j):tj(k,j)=t(k)+@sum(zhan(n)|n#lt#(j-1):d(j))/v);!@for(zhan(j)|j#eq#1:i0(j)=t(k));!@for(zhan(j)|j#gt#1:i0(j)=t(k)+@sum(zhan(n)|n#le#(j-1) #and#n#gt#2:d(n)/v);!);!@for(zhan(j)|j#le#25:i1(j)=@floor(i0(j)));!+@if(@mod(i0(j),1)#eq#0,0 ,1)-4);!@for(zhan(j)|j#eq#1:i3(j)=-4+@if(@mod(i0(j),1)#eq#0,0,1));!z(k,j)=(mu(i1(j),j)-md(i1(j),j))*(tj(k,j)-tj(k-1,j));。
公交线路运力配置模型

公交线路运力配置模型公交运输是城市交通体系中重要的一环,它直接关系到城市居民的出行便利与交通拥堵问题。
公交线路的运力配置是公交系统的关键问题之一,合理的运力配置能够提高公交系统的效率,缓解交通压力,改善居民的出行体验。
本文将探讨公交线路运力配置的模型及其应用。
一、公交线路运力配置的重要性合理的运力配置对公交系统的发展至关重要。
如果运力配置不足,公交车的班次和座位都不够,乘客会出现乘车难、乘坐不舒适等问题,导致公交的吸引力下降,加剧了道路拥堵。
相反,如果运力配置过剩,会造成资源浪费和经济损失。
因此,研究公交线路运力配置模型是提高公交运输效率、优化城市交通布局的重要手段。
二、公交线路运力配置模型的原理公交线路运力配置模型主要从两个方面考虑:需求预测和资源分配。
需求预测是通过分析历史数据和未来交通预测,确定不同时间段和线路上的客流量。
资源分配是指根据需求预测结果,合理配置车辆和司机资源,确保公交系统的运营效果。
需求预测是公交线路运力配置模型的基础。
通过分析历史数据,包括上下班高峰期等重要时段的客流量,结合城市发展规划和人口增长趋势的预测,对未来的客流情况进行估计。
现代技术的发展,如大数据分析和智能交通系统的应用,为需求预测提供了更准确的数据和方法。
资源分配是实现公交线路运力配置的关键。
根据需求预测的结果,合理配置车辆和司机资源。
在车辆资源方面,应考虑车辆的数量、类型和配备的设施等因素。
在司机资源方面,应根据需求变化情况,灵活安排司机的工作时间和班次。
此外,运力配置还应充分考虑线路的长度、频次和停靠站等因素,以满足不同线路和不同时段的客流需求。
三、公交线路运力配置模型的应用公交线路运力配置模型可以应用于公交系统的改进和优化。
首先,它可以帮助公交公司合理配置运力,提高公交系统的运营效率。
其次,它可以提供决策支持,例如确定新线路的开通时间和车辆类型。
再次,它可以指导公交公司制定巡回公交计划,实现统一管理和调度。
TransCAD中的交通分配

TransCAD中的交通分配交通分配的目的是预测给定的路网条件及出行需求下的交通状况。
下面的内容分二个部分来介绍,每个部分一个小例子:1、一般的交通分配(traffic assignment)2、公交系统中的交通分配(transit assignment)实例1:一般的交通分配(traffic assignment)具体步骤:1、打开要在其上进行交通分配的地图文件。
(1)在下拉列表中将线路层设为当前图层。
(2)激活相应的路网文件,在TransCAD的状态栏的最右部可以看到此文件的显示。
关于路网文件:a.路网文件的后缀名为.net,它包含两层:联线层与结点层。
b.交通分配之前,必须打开路网文件。
但是它不能显示出来,只能在窗口的右下角可以看到已打开的路网文件名。
2、打开将要用于交通分配的出行OD矩阵文件,它可以是全方式OD,也可以是在方式划分中得到的分方式的OD。
需要注意的是:在要使用的OD矩阵中,都用小区号来作为行与列的索引。
TransCAD 是通过给每个小区都定义一个质心结点(centroid)来把路网信息同小区信息连接起来的,这些质心结点包含在路网文件的结点层中。
换句话说,就是路网层并不直接识别各个小区,它是通过路网中的结点层来识别小区的(即认为所有的出行都是在小区的质心发生的)。
每个小区都只有一个质心结点,因此需要改变OD矩阵的索引来使之匹配质心结点的标号(ID)。
3、进行道路线网上的交通分配运行TransCAD中“Traffic assignment”模块。
具体步骤如下:(1)打开上面所提到的输入文件并激活在分配中要用到的线层为当前图层后,点击Planning->Traffic assignment…来显示“Traffic Assignment”对话框。
(2)在“Method”下拉列表中选择“User Equilibrium”(用户平衡模型)。
在TransCAD中提供的分配模型有:All-or-Nothing(全有全无)、STOCH、Incremental(逐步加载法)、Capacity Restraint(容量限制法)、User Equilibrium(UE)、Stochastic User Equilibrium(SUE,随机用户平衡)及SystemOptimum(系统最优法),其中前三种为非平衡方法,后三种为平衡方法。
基本交通分配模型课件

元胞自动机的优缺点
元胞自动机法的优点在于能够模拟真 实世界的复杂性和动态性,适用于处 理大规模和复杂的交通网络。此外, 元胞自动机法还具有规则简单、易于 实现等优点。
VS
动态规划法
动态规划法是一种通过将问题分解为子问题并求解最优子 问题的策略来求解最优化问题的方法。在交通分配问题中 ,动态规划法可用于求解多阶段行驶时间和成本的分配方 案。
动态规划法的优点在于能够处理具有重叠子问题和最优子 结构的问题。然而,对于大规模问题,动态规划法可能存 在计算复杂度高和存储需求大的问题。
元胞自动机是由元胞(即格点或单元 )组成的离散空间,每个元胞具有有 限的状态集合,并根据一定的规则与 相邻元胞相互作用进行状态更新。
元胞自动机的基本原理包括局部性、 并行性和自组织性,这些特性使得元 胞自动机能够模拟复杂的系统行为。
2 元胞自动机的步骤
元胞自动机的实现步骤通常包括初始化、规则设定、迭代更新和结果分析等阶段。在交通分配问题中 ,元胞自动机首先需要对道路网络进行离散化处理,然后根据车辆的行驶规则进行迭代更新,最后对 结果进行分析和优化。
其他参数
如天气条件、路况等,这些参 数可能会影响交通分配的结果
。
变量
01
02
03
04
流量变量
表示各路段上的交通流量,是 交通分配模型的主要输出变量
。
时间变量
表示各路段上的旅行时间,是 描述交通流量的重要变量。
路径变量
表示各路径上的交通流量,是 描述交通流分布的重要变量。
成本变量
表示各路径上的总成本,包括 时间成本和费用成本等,是描 述交通流分布的重要变量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
乘公交,看奥运【摘要】本文要解决的问题是以即将举行的08年北京奥运会为背景而提出的。
人们为了能现场观看奥运会,必然会面对出行方式与路线选择的问题。
因此如何快速、高效地从众多可行路线中选出最优路线成为了解决此问题的关键。
鉴于公交系统网络的复杂性,我们没有采用常规的Dijkstra算法,而采用了高效的广度优先算法。
其基本思想是从经过起(始)点的路线出发,搜寻出转乘次数不超过两次的可行路线,然后对可行解进行进一步处理。
为满足不同查询者要求,我们对三个问题都分别建立了以时间、转乘次数、费用最小为目标的优化模型。
针对问题一(只考虑公汽系统),我们建立了模型一并通过VC++编程得到了任意两个站点间的多种最优路线,并得出所求站点间最优路线的最优值,如下进里又建立了图论模型。
本文的主要特点在于,所用算法的效率十分显著。
在对原始数据仅做简单预处理的条件下,搜索任意站点间的最优路线所需的平均时间不超过0.5秒。
另外,本文所建立的模型简单、所用算法比较清晰,易于程序实现,对公交线路自主查询计算机系统的实现具有现实指导作用。
关键字:转乘次数 广度优先算法 查询效率 实时系统一 问题的重述传承华夏五千年的文明,梦圆十三亿华夏儿女的畅想,2008年8月8日这个不平凡的日子终于离我们越来越近了!在观看奥运的众多方式之中,现场观看无疑是最激动人心的。
为了迎接2008年奥运会,北京公交做了充分的准备,首都的公交车大都焕然一新,增强了交通的安全性和舒适性,公交线路已达800条以上,使得公众的出行更加通畅、便利。
但同时也面临多条线路的选择问题。
为满足公众查询公交线路的选择问题,某公司准备研制开发一个解决公交线路选择问题的自主查询计算机系统。
这个系统的核心是线路选择的模型与算法,另外还应该从实际情况出发考虑,满足查询者的各种不同需求。
需要解决的问题有:1、仅考虑公汽线路,给出任意两公汽站点之间线路选择问题的一般数学模型与算法。
并根据附录数据,利用模型算法,求出以下6对起始站到终到站最佳路线。
(1)、S3359→S1828 (2)、S1557→S0481 (3)、S0971→S0485(4)、S0008→S0073 (5)、S0148→S0485 (6)、S0087→S36762、同时考虑公汽与地铁线路,解决以上问题。
3、假设又知道所有站点之间的步行时间,请你给出任意两站点之间线路选择问题的数学模型。
二 符号说明i L :第i 条公汽线路标号,i=1,2 …10400,当i 520≤时, i L 表示上行公汽路线, 当i 520>时, i L 表示与上行路线i 520L -相对应的下行公汽路线;i ,g S :经过第i 条公汽路线的第g 个公汽站点标号;j T :第j 条地铁路线标号, j=1,2;j ,h D :经过第j 条地铁线路的第h 个地铁站点标号;n L S :转乘n 次的路线;k T :选择第k 种路线的总时间;k N 1:选择第k 种路线公汽换乘公汽的换乘次数;k N 2:选择第k 种路线地铁换乘地铁的换乘次数;k N 3:选择第k 种路线地铁换乘公汽的换乘次数;k N 4:选择第k 种路线公汽换乘地铁的换乘次数;k ,m W :第k 种路线、乘坐第m 辆公汽的计费方式,其中:k,m W 1=表示实行单一票价,k,m W 2=表示实行分段计价;k,m CL :第k 种路线,乘坐第m 辆公汽的费用;k C :选择第k 种路线的总费用;k m MS ,:选择第k 种路线,乘坐第m 辆公汽需要经过的公汽站个点数;k ,n M D :选择第k 种路线,乘坐第n 路地铁需要经过的地铁站个点数;k ,m FS :表示对于第k 种路线的第m 路公汽的路线是否选择步行,k ,m FS 为0-1变量,k,m F S 0=表示不选择步行,k,m F S 1=表示选择步行;k ,n FD :对于第k 种路线的第n 路地铁的路线是否选择步行,k ,n FD 为0-1变量,k,n F D 0=表示不选择步行,k,n FD 1=表示选择步行;三 模型假设3.1基本假设1、相邻公汽站平均行驶时间(包括停站时间): 3分钟2、相邻地铁站平均行驶时间(包括停站时间): 2.5分钟3、公汽换乘公汽平均耗时:5分钟(其中步行时间2分钟)4、地铁换乘地铁平均耗时:4分钟(其中步行时间2分钟)5、地铁换乘公汽平均耗时:7分钟(其中步行时间4分钟)6、公汽换乘地铁平均耗时:6分钟(其中步行时间4分钟)7、公汽票价:分为单一票价与分段计价两种;单一票价:1元其中分段计价的票价为:0 ~20站:1元21~40站:2元40站以上:3元8、地铁票价:3元(无论地铁线路间是否换乘)9、假设同一地铁站对应的任意两个公汽站之间可以通过地铁站换乘,且无需支付地铁费3.2 其它假设10、查询者转乘公交的次数不超过两次;11、所有环行公交线路都是双向的;12、地铁线T2也是双向环行的;13、各公交车都运行正常,不会发生堵车现象;14、公交、列车均到站停车四问题的分析在北京举行奥运会期间,公众如何在众多的交通路线中选择最优乘车路线或转乘路线去看奥运,这是我们要解决的核心问题。
针对此问题,我们考虑从公交线路的角度来寻求最优线路。
首先找出过任意两站点(公众所在地与奥运场地)的所有路线,将其存储起来,形成数据文件。
这些路线可能包含有直达公交线路,也有可能是两条公交线路通过交汇而形成的(此时需要转乘公交一次),甚至更多公交线路交汇而成。
然后在这些可行路线中搜寻最优路线。
对于路线的评价,我们可以分别以总行程时间,总转乘次数,总费用为指标,也可以将三种指标标准化后赋以不同权值形成一个综合指标。
而最优路线则应是总行程时间最短,总费用最少或总转乘次数最少,或者三者皆有之。
之所以这样考虑目标,是因为对于不同年龄阶段的查询者,他们追求的目标会有所不同,比如青年人比较热衷于比赛,因而他们会选择最短时间内到达奥运赛场观看比赛。
而中年人则可能较倾向于综合指标最小,即较快、较省,转乘次数又不多。
老年人总愿意以最省的方式看到奥运比赛。
而对于残疾人士则总转乘次数最少为好。
不同的路线查询需求用图4.1表示如下:图4.1 公交线路查询目标图经分析,本问题的解决归结为一个求最短路径的问题,但是传统的Dijkstra 最短路径算法并不适用于本问题,因为Dijkstra算法采用的存储结构和计算方法难以应付公交线路网络拓扑的复杂性,而且由于执行效率的问题,其很难满足实时系统对时间的严格要求。
为此我们在实际求解的过程中,采用了效率高效得广度优先算法,其基本思路是每次搜索指定点,并将其所有未访问过的近邻点加入搜索队列,循环搜索过程直到队列为空。
此方法在后文中有详细说明。
五建模前的准备为了后面建模与程序设计的方便,在建立此模型前,我们有必要做一些准备工作。
5.1数据的存储由于所给的数据格式不是很规范,我们需要将其处理成我们需要的数据存储格式。
从所给文件中读出线路上的站点信息,存入txt文档中,其存储格式为:两行数据,第一行表示上行线上的站点信息,第二行表示下行线的站点信息,其中下行路线标号需要在原标号的基础上加上520,用以区分上行线和下行线。
如果上行线与下行线的站点名不完全相同,那么存储的两行数据相应的不完全相同,以公交线L009为例:L009:3739 0359 1477 2159 2377 2211 2482 2480 3439 1920 1921 0180 2020 3027 2981L529:2981 3027 2020 0180 1921 1920 3439 3440 2482 2211 2377 2159 1478 0359 3739L529为L009所对应的下行线路。
如果下行线是上行线原路返回,那么存储的两行数据中的站点信息刚好顺序颠倒,以公交线路L001为例:L001:0619 1914 0388 0348 0392 0429 0436 3885 3612 0819 3524 0820 3914 0128 0710L521:0710 0128 3914 0820 3524 0819 3612 3885 0436 0429 0392 0348 0388 1914 0619如果是环线的情况(如图5.1所示),则可以等效为两条线路:顺时针方向:S1→S2→S3→S4→S1→S2→S3→S4;逆时针方向:S1→S4→S3→S2→S1→S4→S3→S2。
经过分析,此两条”单行路线”线路的作用等同于原环形路线图5.1 环行线路示意图以环形公交线L158为例,此环形路线存储数据如下:L153: 534 649 2355 1212 812 171 170 811 2600 172 1585 814 264 3513 1215 1217 251 2604 2606 534 649 2355 1212 812 171 170 811 2600 1721585 814 264 3513 1215 1217 251 2604 2606L673: 534 2606 2604 251 1217 1215 3513 264 814 1585 172 2600 811 170 171 812 1212 2355 649 534 2606 2604 251 1217 1215 3513 264 8141585 172 2600 811 170 171 812 1212 2355 649在这里,L153被看作成上行路线,L673被当成下行路线。
这样对于每条公交线路都可以得到两行线路存储信息。
5.2搜寻经过每个站点的公交路线处理5.1所得信息,找出通过每个站点的所有公交路线,并将它们存入数据文件中。
例如,通过搜寻得出经过站点S0001的线路和经过站点S0002的线路如下:经过S0001的线路有:L421经过S0002的线路有:L027 L152 L365 L395 L4855.3统计任意两条公交线路的相交(相近)站点依次统计出任意两条公交线路之间相交(相近)的站点,将其存入1040×1040的矩阵A 中,但是这个矩阵的元素是维数不确定的向量,具体实现的时候可以将用队列表示。
例如:公交线路L001与公交线路L025相交的站点为A[1][25]={S0619,S1914,S0388,S0348}。
六 模型的建立与求解6.1模型一的建立该模型针对问题一,仅考虑公汽线路,先找出经过任意两个公汽站点i ,g S 与ººi g ,S 最多转乘两次公汽的路线,然后再根据不同查询者的需求搜寻出最优路线。
6.1.1 公汽路线的数学表示任意两个站点间的路线有多种情况,如果最多允许换乘两次,则换乘路线分别对应图6.1的四种情况。