乘公交看奥运方案设计_第1页
乘公交看奥运方案设计_第2页
乘公交看奥运方案设计_第3页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、承诺书我们仔细阅读了中国大学生数学建模竞赛的竞赛规则 .我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电 话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、 讨论与赛题有关的问题。我们知道,抄袭别人的成果是违反竞赛规则的 ,如果引用别人的 成果或其他公开的资料(包括网上查到的资料),必须按照规定的参 考文献的表述方式在正文引用处和参考文献中明确列出。我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。 如有违反竞赛规则的行为,我们将受到严肃处理。我们参赛选择的题号是(从 A/B/C/D中选择一项填写):B我们的参赛报名号为(如果赛区设置报名号的话): 所属学校(请填写

2、完整的全名)黔南民族师范学院参赛队员(打印并签名):1.曹龙2. 彭开连3. 陈勇指导教师或指导教师组负责人(打印并签名):薛先贵日期:2011年_8_月_15_日乘公交,看奥运摘要:本文将公交线路(3957个公汽站点和520条公汽线路、39个地 铁站点和2条地铁线路、地铁与公汽间转换关系)关系抽象为有向赋 权图,并建立时间直达矩阵、费用直达矩阵、换乘直达线路数矩阵, 利用最短路模型、搜索法及0-1整数规划模型进行解答。对于问题一, 在只考虑公汽的情况下,我们用修改floyd算法求出最小转乘次数、 最少费用、最少时间,并由搜索法得出最优线路;对于问题二,在考 虑公汽和地铁的情况下,同样,我们也

3、用修改floyd算法求出最小转 乘次数、最少费用、最少时间,并由搜索法得出最优线路;对于第三 问题,我们则需要考虑步行时间进去,在问题二的基础上并利用0-1整数规划模型进行优化组合取得最优线路。关键字:线路选择 有向赋权图 修改floyd算法 搜索法 优化模型一、问题重述:奥运会是世界上举行的一项重大的赛事活动第29届奥运会明年8月将在我国北京举行,届时有大量观众到现场观看奥运比赛,其中 大部分人将会乘坐公共交通工具(简称公交,包括公汽、地铁等)出 行。近年来,城市的公交系统有了很大发展,北京市的公交线路已达 800条以上,使得公众的出行更加通畅、便利,但同时也面临多条线 路的选择问题。针对市

4、场需求,我们准备研制开发一个解决公交线路 选择问题的自主查询计算机系统,关键在于线路选择的模型与算法, 应该从实际情况出发考虑,满足查询者的各种不同需求。具体问题如下:1、仅考虑公汽线路,给出任意两公汽站点之间线路选择问题的一般 数学模型与算法。并根据附录数据,利用你们的模型与算法,求出以 下6对起始站-终到站之间的最佳路线(要有清晰的评价说明)。(1) 、S3359 S1828(2)、S1557 S0481(3)、S0971S0485(4)、S0008 S0073(5)、S014IS0485(6)、S0087S 36762、同时考虑公汽与地铁线路,解决以上问题。3、假设又知道所有站点之间的步

5、行时间,请你给出任意两站点之间 线路选择问题的数学模型。基本时间参数设定:相邻公 汽站平 均行驶 时间(包 括停站 时间)相邻地 铁站平 均行驶 时间(包 括停站时间)公汽换 公汽平 均耗时/(步行 时间)地铁换 地铁平 均耗时/(步行 时间)公汽换 地铁平 均耗时/(步行 时间)地铁换 公汽平 均耗时/(步行 时间)时间份 钟)32.55/(2)4/(2)6/(4)7/(4)即:换乘公汽等待3分钟,换乘地铁等待2分钟公汽站t地铁站(通 道公汽站.换乘耗时11分钟:步行4+4=8分钟,等车3分钟. 基本票价参数设定:票、交=一价X单一计价分段计价公汽1元0 20 站:1 元;21 40站:2元

6、;40站以 上: 3元地铁3元(无论地铁线路间是否换乘)公交线路及相关信息(见数据文件B2007data.rar)二、问题分析:本论文主要研究公交线路选择的问题,即要求:a如何换车b车与车之间的关系c满足乘车人关心的问题:1)换乘次数最少;2)费用最低;3)时间最短(初始等车时间 2(3)min也不包括在内,最后结果可加上。;在众多的条件中,为了切合人们的实际需要,优先考虑是否有直 达,若无直达公汽,则我们主要从最方便、最经济、最快捷等出发,建 立以换乘次数、费用、时间为最优的数学模型。三、模型假设:1、所有公交线路的每天的工作始末时间相同;2、公汽、地铁均到站停车;3、各公交车都运行正常,不

7、会发生堵车现象;4、环线可以看作以任意站作为起点站和终点站,并且是双向的 ,并且 经过终点后要重新收费;5、假设同一地铁站对应的任意两个公汽站之间可以通过地铁站换乘, 且无需支付地铁费;6、人们对换乘车次数尽量少的偏好程度总是大于对花费时间相对短和花费金钱相对少的偏好程度;7初始等车时间2(或3)min也不包括在内;8同一公交线的往返路线视为两条单行线;9、考虑两地铁之间不通过公汽乘换(即只:公汽站 -地铁站(通道) t公汽站)。四、模型建立:对于公交线路选择,我们主要考、虑乘换次数、费用、时间各因 素最优在线路选择问题中,将公交路线关系抽象成一个有向赋权图,当从i可直达j时(同为公汽或地铁站

8、点),定义弧(i,j);其上的权为:i 二 ji站点往j站点无直达车否则lij表示由i直达j付出的代价,可以为时间或费用(不包括换乘代价;多条线路可达时只保留最小代价);公交乘换方式:公汽公汽,公汽地铁,地铁公汽,地铁地铁,公汽地铁公汽。A) i站点是公汽站点,j站点为地铁站点:(1) 若j站点对应的所有换乘(公汽)站点k,均不能从i直达(不在i 站点所在公汽线路L上),则dij(°)= 乂;(2) 若j站点对应的换乘(公汽)站点k,可从i站点直达k,贝卩费用为 dij(°)二 dJ0);注:对于时间则需要加上k到j的步行时间.(若有多种选择,取最 小成本者即可)B) j站

9、点是公汽站点,i站点为地铁站点:(1) 若从i站点对应的任何换乘(公汽)站点k,均不能直达j站点, 则 d ij (0) =乂 .(2) 若从i站点对应的换乘(公汽)站点k,能直达j站点,则费用为 d ij (0)二 dkj(°)注:对于时间则需要加上i到k的步行时间.定义:矩阵算子“。”如下:设D (k-1 )、D均为n阶方阵,D(k) = D (k-1) O D(考虑换乘代价)dk = min匕:dk*dkj+$=1,2川,n当考虑费用矩阵间的运算时,i,j,k=0 ;当考虑时间矩阵间的运算时,i,j,k表示在k的换乘时间。D(k)= D(k-1) OD表示k次换乘的最低代价(费

10、用或时间),即通过 修改floyd算法求解。8 i,j,k表示换乘时间:i = j 或 k = i, j 时,8 i,j,k = 0其他情形:若不可换乘(当i , j为公汽站点而k为地铁站点,或者i , j为地铁站点而k为公汽站点时),则S i,j,k = 0f5,若公汽换乘公汽4若地铁换乘地铁i,j若可换乘,贝心问题一模型:l,k3,(只考虑换乘时间)若地铁换乘公汽2,(只考虑换乘时间)若公汽换乘地铁因为仅考虑公汽线路,为了能得到两站点之间的最好选择线路,将题中所提供的公汽网络抽象成一个有向赋权图,建立直达矩阵 DnDFd他n。当D为时间直达矩阵时,按D(k)= D(k-1) O D式重复地

11、进行O(k)k 1_k _运算得到D,当dij 一 ' , dij .时,表示从i站点到j站点最少换.(k)乘k次能够到达,且即dij表示换乘k次到达所需的最短时间。当D为费用直达矩阵时,按 D(k)= D(k-1) O D重复地进行O 运算得到D,运算适当次数后若 D(k)= D(k-1),则表示已得到所有(k)站点间的最小费用,dij即表示从i站点到j站点所需的最少费用。 根据最少乘换次数等约束条件,再利用图的邻接搜索法可得出两站点之间的选择线路。问题二模型:当还需要考虑地铁时,为了能得到两站点之间的最好选择线路,同样,将题中所提供的公汽(含地铁转换的公汽)网络抽象成一个有向赋权图

12、,建立直达矩阵D = D =(d iJ0)nxn。算法设计基本与模型一相当D为时间直达矩阵时,按 D(k)二D(k-1) O D式重复地进行(k)k JkO运算得到D,当dij " , dij “:时,表示从i站点到j站点最少(k)换乘k次能够到达,且即dij表示换乘k次到达所需的最短时间。当D为费用直达矩阵时,按 D(k)= D(k-1) O D重复地进行O一D(k)一 一运算得到D,运算适当次数后若 D(k)= D(k-1),则表示已得到所有(k)站点间的最小费用,dij即表示从i站点到j站点所需的最少费用。根据最少乘换次数等约束条件,再利用图的邻接搜索法可得出 两站点之间的选择

13、线路。问题三模型:问题三是在模型二的基础上添加步行时间进行考虑。D (0) _ / d (0)、优先考虑乘换次数。对直达时间矩阵-ij nn按D(k)= D(k-1)(k)k Jk _O D式重复地进行O运算得到D,当dij ":,dij":时,表示从i 站点到j站点最少换乘k次能够到达。在运算过程中可记录下换乘站 点信息,随之可得到相关线路信息。若有若干条最小换乘路线,则比 较另外两个目标选择最佳线路(即建立 0-1整数规划模型)。设共有m条单行公交线,构造一个 m+2个点构成的完全图。点:a为起点(出发点),b为终点(目的地),此外每条公交线 也视为一个点。边:边表示两

14、点之间的步行关系。边权:步行时间为边权。针对不同的边可分为上车前、下车后和换车时步行时间,构成步行时间矩阵Sj = S(m 1) (m 1)。行:依次表示的是m条公交线与起点,列:依次表示的是 m条公交线与终点。点权:第个公交线点还有三个信息为点权1)公交线名称及上行或下行;匚L,公汽,E 二2) 类型T,地铁,及票价方式;3) 乘车站数表矩阵G二gcd gi )m( ,' T 1 , 2h m ,,其中gCd表示从ic到d经过i号公交线时需要乘车的站数,c到d利用不上i时张取无 穷大。这个矩阵的行列表示用 S。于是原问题转化为在这个图上求 a到b的最短路。最短的可以理解为换乘车数最少

15、、乘车的总站数最少、总的步行 时间最少、总车费最少这样几个目标的各种组合方式。可以用0-1整数规划解决这个问题,方法是分出恰乘一次公交车, 恰乘两次公交车,恰乘三次公交车等等情况分别求出下列模型解然后 比较得出最优解。优化模型:恰乘一次公交车的模型如下:变量全部是0-1变量,共有3*(m)个。Xi,1, M m表示选不选择去第i条公交线的路;yi,匸引mg示选不选择乘第i线公交车;Zi, 1, 2" 表示选不选择从第i条公交车下车后走到目的地的路。(它们都是取1表示选择而取0表示不选择。)恰乘一次公交车的模型如下:目标函数:据用户选择的情况用点权和边权构造,共同点都是最小值。(1)步

16、行时间最少:(2)总时间最少:目标函数min a SniASd,miZdyWc討dVV其中3, E 二 L,2.5,E 二T,3E=L,2E订min v Sm.1,cXc r Sd,m 1乙目标函数.cdd<(3) 车费最少:min F 二3,",zi Tiy i g m ::1, m ::;120E 二 T,E 二 L,单一,E二L,分段目标函数:约束条件(共2m+1个):m' y =1i4只选择一条公交线;yi 乞X , yi <Zi i =1,2,|(,m要乘第i条公交线就要走相应的两条路。恰乘两次公交车的模型如下:步行时间: mmmin m/W1*Sd,m

17、 1 Zd时间最少:mmi n'Sn1,c1X1c14mm+y+yJ Sm 十c2Xc2 Jc2Wd=1i1十ySd,miZyigm 十i1=1mi1 “i21i2mi2 “+zi21i2 |yi2gm1m1VEyi2WE 1费用最少:min F6,E2, E-iiy i 1 g m 1, m 120Ji2+ 二 y i2 g mTm*12o约束条件:m送yi1mi13%2 2可以选择两条公交线路;- Xii, yi2 - Xi2%咗Z"乘公交线要走的两条相应的路线。恰乘乘三次公交车模型步行时间的目标函数在的基础上添加mJSm1,c3Xc3c3=1时间最少的目标函数在的基础上

18、添加mm匚 Sm+1 c3Xc3 J 曲i3Ti3i3yi3gm 1m 1VE费用最少:min F9,E=T=* 3, E = L_ mi31 VJ yi3g m-1,m4ti3£ "mz.空i2mVy i2 g m 1,m 1i1 兰20 20ii 1 y i1 g m+m+l20约束条件即在的基础上添加i3的变量即可。五、模型求解:问题一:由于题目所给的公交乘路信息是.txt文本文件,为了将实际问题 能用数学模型来解决,我们编写程序将其导入 matlab。(程序见附录 1)°对于问题1,我们仅仅考虑公汽线路,为此,我们将所有的公汽 路线与站点(3957个)关系

19、构成一个图网,为了求得最小代价的选 择路线,我们先建立起直达矩阵(程序见附录2),再由改进floyd算法(程序见附录3)即可求出两公汽站点之间线路选择的最小代价(乘换次数、时间最短、费用最少),乘换次数为主、时间最短和费用最 少为次为约束条件用搜索法(见附录程序 5)搜出最优线路,具体结 果如下所示:起点站T终点 站乘换 次数时间(分 钟)车费(元)线路S3359t S18281893S3359 匕吗 S1784 乂叫 S1828S1557t S048121123S1557艺叫 S1919乂叫S3186-Wd S0481S0971t S048511193L013dL417dS0971、S218

20、4* S485S0008t S00731832S0008匕63 S2083显9 S0073S0148t S048521063S0148-E°9 S0036乂叫_ _ _ _ .L156uS3351、S0485S0087t S36762523S0148仝叫 S0036-12叫S2210竺S0485问题二:对于问题2,我们在考虑公汽线路的同时,还需将地铁线路(2条地铁线路,39个地铁站点)考虑进去,同样,将所提供的公汽(含地铁转换的公汽)网络抽象成一个有向赋权图,建立直达矩阵(程 序见附录4),再由改进floyd算法(程序见附录3)即可求出两公汽 站点之间线路选择的最小代价(乘换次数、时

21、间最短、费用最少),以换乘次数为主、时间最短与费用最少为次为约束条件用搜索法 (见 附录程序6)搜出最优线路,具体结果如下所示:起点站T终点 站乘换 次数时间 (分 钟)车费(元)线路S3359t S18281893S3359 兰竺t S1748三叫 S1828S1557t S048121123S1557匕叫S1919旦叫S3186匕 J S0481S0971t S048511193S097-101 型t S2184 土亠 S0485S0008t S00731832|_159dL474S0008 旦叫 S0400 兰 J S0073S0148t S048521063T1S0148旦 J S14

22、87竺d21tS046A9 S0485S0087t S36760503T 2S0087 竺36- S3676问题三:问题3又增设了所有站点之间的步行时间,为了给出任意两站点之间线路选择问题的数学模型。我们则考虑大众化的想法(优先考虑 乘换次数):1若两个站点之间有直达的公交车,若只有一条,我们 毫无条件地选择;若不止一条,则我们可以利用模型三的优化模型进 行时间和费用的比较,取最优解;2同理,若要经过转乘一次、二 次等转乘情况,若转乘线路只有一种,则选择之;若转乘线路有多种, 则利用模型三的优化模型进行时间和费用的比较,取最优解。六、模型优缺点:将公交图网能用有向赋权图并建立直达矩阵,再利用最

23、短路算法及搜索算法得出线路选择的最优线路(含时间最少、费用最少等);对于第三问题中的模型,在加入步行时间后,我们能考虑到在乘 换次数最少为优先的条件下,利用优化模型进行比较是全面些。鉴于公交系统网络的复杂性,我们虽然采用了修改floyd算法,编译运行上不太好,有待改进。七、参考文献:1蔡志杰,丁颂康数学工程学报-公交线路选择模型2007年12月 1005-3085 ( 2007) 08-0117-042朱参世一种Warshall和Fl oyd 算法的优化方法研究 2010年第四期 1006-2475(2010)04-0043-033刘韵,何建农 基于交通网络最短路径搜索的改进算法2007年10

24、02-8331( 2007)14-0220-03附录:% 建立排序函数function A = T_SORT( A ,n , p )% T_SORT( A ,n , p )% A根据第n行排序% p=1升序,2降% powered_BY_* SIZE=size(A);if p=1xx,idx=sort(A(n,:);for i=1:SIZE(1)A(i,:)=A(i,idx);endelseif p=2xx,idx=sort(A(n,:),'descend');for i=1:SIZE(1)A(i,:)=A(i,idx);endend1、%数据处理读入matlab :%读取数据

25、clear L afid = fopen('1.1公汽线路信息.txt','r');i=1;while 1tline = fgetl(fid);if ischar(tline), break, endif strcmp(tline,")continueendif strcmp(tline(1),'L')str=tline;continueelseif strcmp(tline,'END')breakendif strcmp(tline,'P=1;continueelseif strcmp(tline,'P

26、=2;continueendif strcmp(tline(1:2),'单一票制1元。)分段计价。)上行')Li,1=str;Li,2=P;上行'Li,3='Li,4=tline(4:end);i=i+1;continue下行')环行')elseif strcmp(tline(1:2),'Li,1=str;Li,2=P;Li,3='下行';Li,4=tline(4:end);i=i+1;continueelseif strcmp(tline(1:2),'Li,1=str;Li,2=P;Li,3='环行 1&

27、#39;Li,4=strcat(tline(4:end),tline(10:end);i=i+1;% 计算来回Li,1=str;Li,2=P;Li,3='环行 2'Li,4=strcat(tline(4:end),tline(10:end);i=i+1;continueelseif strcmp(tline(1),'S')Li,1=str;Li,2=P;Li,3='来回 1'Li,4=tline;i=i+1;% 计算来回Li,1=str;Li,2=P;Li,3='来回 2'Li,4=tline;i=i+1;continueende

28、ndfclose(fid);for i=1:size(L,1)tline=Li,4;t=findstr(tline,'S');temp=zeros(1,length(t);环行2')if strcmp(Li,3,'来回 2') | strcmp(Li,3,'for j=length(t):-1:1 temp(length(t)-j+1)=str2double(tline(t(j)+1:t(j)+4);endelsefor j=1:length(t) temp(j)=str2double(tline(t(j)+1:t(j)+4);endendL2i

29、,1=temp;end for i=1:3957if floor(i/10)=0Citi=strcat('S000',num2str(i);elseif floor(i/100)=0Citi=strcat('S00',num2str(i);elseif floor(i/1000)=0Citi=strcat('S0',num2str(i);elseCiti=strcat('S',num2str(i);endendCit3958='D01Cit3959='D02Cit3960='D03Cit3961='

30、D04Cit3962='D05Cit3963='D06Cit3964='D07Cit3965='D08Cit3966='D09Cit3967='D10Cit3968='D11Cit3969='D12Cit3970='D13Cit3971='D14Cit3972='D15Cit3973='D16Cit3974='D17Cit3975='D18Cit3976='D19:S0567 , S0042 ,:S1487':S0303 , S0302':S0566'

31、:S0436 , S0438 ,:S0392 , S0394 ,:S0386 , S0388 ,:S3068 , S0617 ,:S1279':S2057 , S0721 ,:S0070 , S2361 ,:S0609 , S0608':S2633 , S0399 ,:S3321 , S2535 ,:S3329 , S2534':S3506 , S0167 ,:S0237 , S0239 ,:S0668':S0180 , S0181'S0025'S0437 , S0435'S0393 , S0391'S0387 , S0385&#

32、39;S0619 , S0618 ,S0722 , S0720'S3721'S0401 , S0400'S2464'S0168'S0238 , S0236 ,S0616'S0540'Cit3977='D20:S2079 ,S2933 ,S1919 , S1921 , S1920'Cit3978='D21:S0465 ,S0467 ,S0466 , S0464'Cit3979='D22:S3457'Cit3980='D23:S2512'Cit3981='D24:S053

33、7 ,S3580'Cit3982='D25:S0526 ,S0528 ,S0527 , S0525'Cit3983='D26:S3045 ,S0605 ,S0607'Cit3984='D27:S0087 ,S0088 ,S0086'Cit3985='D28:S0855 ,S0856 ,S0854 , S0857'Cit3986='D29:S0631 ,S0632 ,S0630'Cit3987='D30:S3874 ,S1426 ,S1427'Cit3988='D31:S0211 ,S

34、0539 ,S0541 , S0540'Cit3989='D32:S0978 ,S0497 ,S0498'Cit3990='D33:S1894 ,S1896 ,S1895'Cit3991='D34:S1104 ,S0576 ,S0578 , S0577'Cit3992='D35:S3010 ,S0583 ,S0582'Cit3993='D36:S3676 ,S0427 ,S0061 , S0060'Cit3994='D37:S1961 ,S2817 ,S0455 , S0456'Cit399

35、5='D38:S3262 ,S0622'Cit3996='D39:S1956 ,S0289 ,S0291'2、建立公汽间的直达矩阵clear SS(1:3957,1:3957)=zeros(1,1,'uint16');%按Ulnt16 格式建立 1 行 1 列的零巨阵for i=1:1040t=L2i,1;for j=1:length(t)-1for k=j+1:length(t)temp=St(j),t(k);str=Li,1;n,m=size(temp);if n=1 && temp(1,1)=0temp(n,1)=str2d

36、ouble(str(2:end);if Li,2=2if (k-j)>40temp(n,2)=3;elseif (k-j)>20temp(n,2)=2;elsetemp(n,2)=1;endelsetemp(n,2)=1;temp(n,3)=k-j;elsetemp(n+1,1)=str2double(str(2:end);if Li,2=2if (k-j)>40temp(n+1,2)=3;elseif (k-j)>20temp(n+1,2)=2;elsetemp(n+1,2)=1;endelsetemp(n+1,2)=1;endtemp(n+1,3)=k-j;endS

37、t(j),t(k)=temp;endendendfor i=1:3957for j=1:3957if length(Si,j)=1Si,j=T_SORT(Si,j',3,1)'endendendTime=zeros(3957,3957,'uint8');for i=1:3957for j=1:3957if length(Si,j)=1Time(i,j)=size(Si,j,1);endendendTT=zeros(3957,3957,'uint8');for i=1:3957for j=1:3957temp=Si,j;if temp(1,1)=0

38、TT(i,j)=temp(1,3);endEnd%时间、费用的直达矩阵(换乘直达线路数矩阵)ee,rr=size(S);ss=zeros(ee);for i=1:eefor j=1:rrif Si,j=0 ss(i,j)=length(Si,j(:,1);endendendfor i=1:eefor j=1:rrif ss(i,j)=0;ss(i,j)=Inf;endendendfor i=1:eefor j=1:rrif i=j;ss(i,j)=0;endendend2.2 (间直达矩阵)ee,rr=size(S);ttt=zeros(ee);for i=1:eefor j=1:rrif S

39、i,j=0ttt(i,j)=min(Si,j(:,3);endendendfor i=1:eefor j=1:rrif ttt(i,j)=0;ttt(i,j)=Inf;end endfor i=1:eefor j=1:rrif i=j;ttt(i,j)=O;endendend2.3 (费用直达矩阵)ee,rr=size(S);ppp=zeros(ee);for i=1:eefor j=1:rrif Si,j=0ppp(i,j)=min(Si,j(:,2);endendendfor i=1:eefor j=1:rrif ppp(i,j)=0;ttt(i,j)=Inf;endendendfor i

40、=1:eefor j=1:rrif i=j;ppp(i,j)=0;endendend3、。算子算法function D,path,k,min1,path1=floyd(a,start,terminal)D=a;n=size(D,1);path=zeros(n,n);for i=1:nforj=1:nif D(i,j)=infpath(i,j)=j;end, end, endwhile 1<=j<=nfor k=1:nDO(k,j)=D(k,j);endendfor k=1:nfor i=1:nforj=1:nif D(i,k)+DO(k,j)<D(i,j)D(i,j)=D(i

41、,k)+DO(k,j);path(i,j)=path(i,k);endif D(i,k-1)+DO(k-1,j)<D(i,j)D(i,j)=inf;if D(i,k)+DO(k,j)<D(i,j)D(i,j)=inf;kend,endendendendif nargin=3min1=D(start,terminal);m(1)=start;i=1;path1=;while path(m(i),terminal)=terminalk=i+1;m(k)=path(m(i),terminal);i=i+1;endm(i+1)=terminal;path1=m;end4、考虑地铁的直达矩阵

42、fid = fopen('B2007data/2.1地铁 T1 线换乘公汽信息.txt','r');i=1;while 1tline = fgetl(fid);if ischar(tline), break, endif strcmp(tline,")continueendif strcmp(tline(1),D)Di,1=tline(5:end);i=i+1;endendfclose(fid);fid = fopen('B2007data/2.2地铁 T2 线换乘公汽信息.txt','r');while 1tline

43、= fgetl(fid);if ischar(tline), break, endif strcmp(tline,")continueendif strcmp(tline(1),D)Di,1=tline(5:end);i=i+1;endendfclose(fid);tx=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,12,27,28,29,30,31,32,18,33,34,35,36,37,38,39+3957;DL1,1="DL2,1="for j=1:23DL1,1=

44、strcat(DL1,1,'S',num2str(tx(j);endfor j=24:41DL2,1=strcat(DL2,1,'S',num2str(tx(j);endDL2,1=strcat(DL2,1,'S',num2str(tx(24);for i=1:1040for j=1:41tline=Dj,1;t=findstr(tline,'S');for k=1:length(t)Li,4=regexprep(Li,4,strcat('S',tline(t(k)+1:t(k)+4),strcat('S&

45、#39;,num2str(tx(j);endendendLt 仁L;Lt11041,1='T001'Lt11041,2=3;Lt11041,3=' 来回 1'Lt11041,4=DL1,1;Lt11042,1='T001:Lt11042,2=3;Lt11042,3=' 来回 2'Lt11042,4=DL1,1;Lt11043,1='T002'Lt11043,2=3;Lt11043,3=' 环行 1'Lt11043,4=strcat(DL2,1,DL2,1(6:end);Lt11044,1='T002

46、'Lt11044,2=3;Lt11044,3=' 环行 2'Lt11044,4=strcat(DL2,1,DL2,1(6:end);for i=1:1044tline=Lt1i,4;t=findstr(tline,'S');环行2')temp=zeros(1,length(t);if strcmp(Lt1i,3,'来回 2') | strcmp(Lt1i,3,'for j=length(t):-1:1temp(length(t)-j+1)=str2double(tline(t(j)+1:t(j)+4);endelsefor

47、 j=1:length(t) temp(j)=str2double(tline(t(j)+1:t(j)+4);endendLt2i,1=temp;end5、N=87;M=3676;%直达if Time(N,M)=0temp=SN,M;for i=1:size(temp,1)disp(strcat('直达车为:L',num2str(temp(i,1)endreturnend clear U U2% 一次转车t=1:3957;T2=Time(N,:).*Time(:,M):if sum(T2)=0x=1;t=t(T2=0);for i=1:length(t)t1=SN,t(i);t

48、2=St(i),M;t1= double(t1);t2=double (t2);for j=1:size(t1,1)for k=1:size(t2,1)U(x,1)=1;%转站次数总时间U(x,2)=(t1(j,3)+t2(k,3)*3+5+3;%U(x,3)=t(i);%转站点U(x,4:5)=t1(j,1) t2(k,1);%车辆%是否始发站temp=0;for k1=1:1040if str2double(Lk1,1(2:end)=U(x,5)if L2k1,1(1,1)=t(i)temp=1;breakendendendU(x,6)=temp;U(x,7)=-sum(Time(:,t(

49、i)+.sum(Time(t(i),:);%人流负载U(x,8)=t1(j,2)+t2(k,2);%费用x=x+1;endendendreturnend%二次转车t=1:3957;x=1;for i=1:3957if Time(N,i)=0for j=1:3957if Time(j,M)=0 && Time(i,j)=0t1=SN,i;t2=Si,j;t3=Sj,M;t1= double(t1);t2=double (t2);t3=double( t3);for k1=1:size(t1,1)for k2=1:size(t2,1)for k3=1:size(t3,1)U2(x,

50、1)=2;%转站次数%总时间U2(x,2)=(t1(k1,3)+t2(k2,3)+t3(k3,3)*3+10+3;U2(x,3)=t(i);%转站点U2(x,4)=t(j);%转站点车辆1,2U2(x,5:6)=t1(k1,1) t2(k2,1);%是否始发temp=0;for kk=1:1040if str2double(Lkk,1(2:end)=U2(x,6)if L2kk,1(1,1)=t(i)temp=1;breakendendendU2(x,7)=t3(k3,1);%车辆 3%始发站数for kk=1:1040if str2double(Lkk,1(2:end)=U2(x,7)if

51、L2kk,1(1,1)=t(j)temp=temp+1;breakendendendU2(x,8)=temp;%人流量U2(x,9)=sum(Time(t(j),:)-.sum(Time(:,t(j)-.sum(Time(:,t(i)+.sum(Time(t(i),:);费用U2(x,10)=t1(k1,2)+t2(k2,2)+t3(k3,2);x=x+1;endendendendendendend6、N='S0087'M='S3676'%映射if strcmp(N(1),'S')for i=1:41t=findstr(Di,1,N);if is

52、empty(t)N=tx(i);breakendendif ischar(N)N=str2double(N(2:end);endendif strcmp(M(1),'S')for i=1:41t=findstr(Di,1,M);if isempty(t)M=tx(i);breakendendif ischar(M)M=str2double(M(2:end);endend%直达if Time(N,M)=0temp=SN,M;for i=1:size(temp,1)if temp(i,1)>1040disp(strcat('直达地铁为:',Lt1temp(i,1),1)disp(strcat('直达汽车为:',Lt1temp(i,1),1)endendendclear U U2% 一次转车t=1:3996;T2=Time(N,:).*Time(:,M):if sum(T2)=0x=1;t=t(T2=0);for i=1:length(t)t1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论