5.3 含步行的综合出行策略
一、分析
分析第二问第6个数据S0087→S3676的第二个运行结果,发现一个有趣的现象:结果为:S0087->L454A-S0541->S0540->L462A->S03676。并不含乘坐地铁,全部为公汽线路,且只要换乘一次,途经总站数仅为13,比第一问公汽之间转乘运行结果要好得多。
因为第二问在引入地铁时地铁站附近的不同公汽站之间的换乘相当于同一公汽站的换乘(仅增加了步行时间),具体来说地铁站D31附近的公汽站S0211,S0539,S0541,S0540可以看成一个公汽站。
这样提示我们:如果提供若干公汽站点聚集在一起的信息,那么在进行公汽之间的转乘时可以有更为便捷的线路。也就是说只要提供一定半径范围内各公汽站点的聚集信息,将获得更好的查询结果。
为了解决这类问题 ,将第一问进行扩展,将一定范围内的所有公汽站合并成一点。预期获得更准确的查询。
设 是同一范围内的不同公汽站点,其构成集合为:
(K=1……n),有F( )=0,从公汽站点 到公汽站点 的最佳路线可表示为: ,其中寻找S 、S ,F为费用或时间或站点数功能函数,具体实现有如下两种方法:
1、算法F5.3.1
① 将线路向量 (r=1……520)中的站点 全部替换成
② 采用问题一的算法F3.2.2,计算从 到 的最佳线路。
2、算法F5.3.2
①分别计算 、 所有的线路集合
② (w﹥i)
(u﹤j)
如果有 、 则路线 = 是一条备选线路
③计算 F( )+F(S )并保存最小值的路线
④回到②
算法F5.3.1与算法F5.3.1都是换乘一次的情况,如果换乘一次不能达到目的地,则可以参照前面的算法设计换乘二次或多次的程序。
算法F5.3.1简单,可以利用F5.1.1的程序直接计算,但需要替换原始的线路数据,可能影响实时计算速度。
算例1:出发点为S2336目标点为S0722
分别采用算法F5.1.1和F5.3.2计算有如下结果:
表3:合并站点计算实例
题号 公车转站点和经过的线路 时间 费用 经过站点数 转乘次数
F5.1.1 S2336->L006B->S1110->L389B->S0722 68 2 21 1
F5.3.2 S2336->L6-S0236->S0239->L1080->S722 35 2 8 1
很明显:F5.3.2找到的路线比F5.1.1找到的路线效果好得多。
因为S0236 、S0239没有公汽线路直接相通,F5.1.1无法找到通过他们的线路。但S0236 、S0239是地铁站 D17附近的两个公汽站,算法F5.3.2把一个邻域范围内的所有站点看成是直接相通的。因此F5.3.2获得了更好的结果。 |