3 S0148错误!未找到引用源。L308上行L417下行L156上行??????S0036??????S3351??????S0485 14117106 3 评价说明:经Matlab运行程序,得出了3条优化线路。乘坐这3条线路所花费的时间和金钱都相同,且均需要换乘两次。不存在换乘一次的线路。
乘客可以选择任意一条线路。
(6)S0087→S3676
线路(条)时间(分)金钱(元)公汽线路?换乘站初始站错误!未找到引用源。错误!未找到引用源。?????途经站数?????? (换乘站??????)目标站 1 公汽线路途经站数公汽线路途经站数 2 3 4 65 L454上行L209下行S0087错误!未找到引用源。??????S3496?????? 1192 S3676 L454上行L209下行S0087错误!未找到引用源。??????S1893?????? 121071 2 S3676 S0087错误!未找到引用源。L120上行L454上行L462上行?S0236??????S3676 ??????S0541?????25752 3 S0087错误!未找到引用源。L454上行L120上行L462上行??????S0541??????S2336??????S3676 53652 3 评价说明:经Matlab运行程序,得出了4条优化线路。其中,1、2条换乘一次,所花费的金钱相同,但是1条比2条节省了6分钟。3、4条换乘两次,所花的金钱相同,且比1、2条多1元,但节省了时间。
所以建议乘客选择1、3、4条。 4.2
问题二
4.2.1 问题二的分析
已知相邻地铁站平均行驶时间(包括停站时间): 2.5分钟;
11
地铁换乘地铁平均耗时:4分钟(其中步行时间2分钟); 地铁换乘公汽平均耗时:7分钟(其中步行时间4分钟); 公汽换乘地铁平均耗时:6分钟(其中步行时间4分钟);
地铁票价:3元(无论地铁线路间是否换乘);其它的公汽时间信息与问题一相同。
题目要求同时考虑公汽与地铁线路,设计任意两公汽站点之间线路选择问题的数学模型与算法。在此,我们考虑了总时间和总费用两个函数,讨论方法与一题类似,只是加入了地铁,分为乘坐地铁和完全不坐地铁两种。
4.2.2 模型的建立及求解 模型二
设f,g分别为乘坐公交和地铁线路的费用函数:
xi?0;?0,?1, 0?xi?20;?0,?f(xi)?? g(y)???3,?2, 20?xi?40;?xi?40?3,y?0; y?0总时间函数:
T?3?xi?2.5y?5z1?4z2?7z3?6z4 (0?zi?2,?zi?2) (3)
i?1i?134总费用函数:
F??f(xi)?g(y) (4)
i?13其中xi表示乘客在公交线路Li上乘坐的站数;y表示乘客在一次地铁线路上乘坐的总站数;z1,z2,z3,z4分别表示公汽换乘公汽,地铁换乘地铁,地铁换乘公汽,公汽换乘地铁的次数。
目标:找出任意给定的两站点的乘车线路,使T和F相对最小。
算法思路:由于假设同一地铁站对应的任意两个公汽站之间可以通过地铁站换乘且无需支付地铁费,那么不妨把同一地铁站所对应的几个公汽站合并成一个站。
地铁线路
T1?D01?D02???D23, T2?D24?D25???D39?D24。
1、可以乘坐地铁的线路。
12
(1)若初始站点和目标站点都在地铁线路T1或者T2上,那么,只乘坐地铁T1或者T2便可以直达。其中,若都在线路T2上,就选择经过站数最少的方向。
若初始站点和目标站点分别在地铁线路T1和T2上,那么,需要进行一次地铁换乘地铁才能到达。
(2)若只有初始站点或只有目标站点在地铁线路上,则需要换乘公汽才能到达目标站点。
①初始站点ail0?Tp,p?1,2,目标站点bjr0?T1且bjr0?T2,bjr0?LBj。 当有LBj和地铁相交时,即存在LBj,有bjr?LBj,使得bjr?Ty,q?1或2。
1?i?m,1?j?s。
若1?r?r0,那么,从初始站点ail0(记为Da) 乘坐地铁线路,行驶至站点bjr(记为Db),换乘公汽线路LBj至目标站点bjr0。1?a?39,1?b?39。即
ail0??Da?????Tp???bjr??Db?????LBj???bjr0 (q?p) ail0??Da?????Tp???Tq???bjr??Db?????LBj???bjr0 (q?p)
其中, q?p时需要地铁换乘地铁。
若不满足1?r?r0,或者当没有这样的LBj时,说明在地铁换乘公汽后,还需要进行公汽换乘公汽。由于这样的情况几乎不存在,故不作考虑。
②目标站点bjr0?Tp,初始站点ail0?T1且ail0?T2,p?1,2 同理可得结论。
(3)若初始站点和目标站点都不在地铁线路上,则先乘坐公汽,换乘地铁,再由地铁换乘公汽。
地铁线路既和LAi相交又和LBj相交时,即
地铁线路既不包含初始站点ail0又不包含目标站点bjr0。但是存在LAi、LBj,
1?i?m,1?j?s,有
ail?LAi,使得ail?Tp,记ail为Da,
bjr?LBj,使得bjr?Tq,记bjr为Db,
p?1,2,q?1或2,1?a?39,1?b?39。
13
若l0?l?n,那么,从初始站点ail0乘坐LAi线路,行驶至站点ail(记1?r?r0,为Da),换乘地铁线路至站点bjr(记为Db),换乘LBj线路至目标站点bjr0。即
ail0???LAi???ail?Da????Tp???bjr?Db????LBj???bjr0 (q?p) ail0???LAi???ail?Da????Tp???Tq???bjr?Db????LBj???bjr0(q?p)
其中, q?p时需要地铁换乘地铁。
若不满足l0?l?n,1?r?r0,或者不存在LAi、LBj都与地铁线路相交,说明需要在地铁线路前或后进行公汽与公汽的换乘。由于这样的情况几乎不存在,故不作考虑。
2、只乘坐公汽的线路。
完全排除地铁线路,与解决问题一的方法相同。
4.1.3 问题二的结果
(程序见附录8.4) (1)S3359→S1828
应用Matlab编出的程序显示出没有在地铁站附近车站转站的的转站台,所以此时不坐地铁的结果完全和“问题一”中的第一小题的结果相同。
因此在这种情况下,建议在这些站点乘客应当首先考虑坐公汽。具体情况请参照“问题一”的的结果。
(2)S1557→S0481
同(1)的结论。
14
图1 北京地铁图
(3)S0971→S0485
通过S0971的路线同时又能够到达地铁站的线路分别为:L160上行,L263下行,L119上行,L024下行,L119下行,L013上行,分别到达地铁的D01,D02,D26;另外一方面,与终点站S0485相连并能够到达地铁站的公交线路分别是L375上,L469下行,L051上行,L417下行,L395下行,分别到达地铁站的D21,D22和D20。
可以乘坐地铁:
线路(条)时间(分)金钱(元)线路?换乘站初始站错误!未找到引用源。错误!未找到引用源。?????途经站数?????? (换乘站??????)目标站 1 线路途经站数线路途经站数 2 3
138.5 138.5 138.5 L160上行T2?T1?(D21)S0971错误!未找到引用源。??????(D26)?????289L051上行??????S0485 5L160上行T2?T1?(D21)S0971错误!未找到引用源。??????(D26)?????289L469下行??????S0485 5L160上行T2?T1?(D21)S0971错误!未找到引用源。??????(D26)?????289L395下行??????S0485 56 6 6 只乘坐公汽:
15