假设您想要从A点到达B点。您使用Google Transit路线,并告诉您:
Route 1:
1. Wait 5 minutes
2. Walk from point A to Bus stop 1 for 8 minutes
3. Take bus 69 till stop 2 (15 minues)
4. Wait 2 minutes
5. Take bus 6969 till stop 3(12 minutes)
6. Walk 7 minutes from stop 3 till point B for 3 minutes.
总时间= 5等待+ 40分钟。
Route 2:
1. Wait 10 minutes
2. Walk from point A to Bus stop I for 13 minutes
3. Take bus 96 till stop II (10 minues)
4. Wait 17 minutes
5. Take bus 9696 till stop 3(12 minutes)
6. Walk 7 minutes from stop 3 till point B for 8 minutes.
总时间= 10等待+ 50分钟。
总而言之,1号公路看起来更好。然而,在实践中真正发生的事情是69号巴士由于交通而落后3分钟,我最终失去了6969号公共汽车。下一班公共汽车6969至少在30分钟后到来,相当于5等待+ 70分钟(包括30米)在寒冷或炎热中等待)。如果谷歌真的宣传这种可能性,那不是很好吗?我现在的问题是:考虑到时间表的不确定性,显示前三条路线的更好算法是什么?
谢谢!
答案 0 :(得分:3)
如何为不同类型的旅程元素添加表示不确定性的权重。
都柏林市的公共汽车服务出了名的不合时宜,你可以增加40%的误差幅度与都柏林巴士时间表有关,给出最好的&最坏的情况。你还可以考虑高峰时段的长期交通延误。然后,用户可以看到他们可能有20%或80%的机会实际建立连接。
您可以按“最可能正确”的因素对“最佳”旅程进行排序,并将此数据包含在向用户显示的结果中。
我的两分钱:)。
答案 1 :(得分:2)
对于英国铁路系统,每个交换节点都有一个相关的“允许的最短转移时间”。然后,路由规划器here的接口具有“高级”选项,允许用户接受默认值,或者添加半小时的增量。
在您的示例中,在步骤2中设置“允许的最小传输时间”(例如10分钟)将阻止建议路由1。当然,这意味着可能的最短旅程时间会增加,但这就是权衡。
答案 2 :(得分:1)
如果考虑到不确定性,那么就不再有“最佳路线”,而是可以采用“最佳策略”来最大限度地减少运输中的总时间;然而,它不能表示为线性的指令序列,而是更多的一般计划形式,即“去公交车站X,等到公共汽车Y的10:00,如果它没有到达步行到车站Z ......“这对于用户而言是非常难以呈现的(除了生产计算成本昂贵之外)。
对于固定的指令序列,可以计算它实际运行的概率;但是用户想要接受的确定性水平是多少?你会满足于80%的成功率吗?如果你错过了一个连接,那么在最坏的情况下卡片会掉下来,例如:如果你错过了每隔一小时就会离开的火车。
我多年来写了一个类似的程序来计算芬兰的长途巴士行程,我刚刚报告了假设每辆公交车都按计划进行的转机时间。然后基本上每个转移时间不到15分钟的计划都会被忽视,因为它们风险太大(在某条路线上,有时每天只有一两条长途巴士)。
答案 3 :(得分:1)
实证。记录实际到达时间与预定到达时间,并计算每个的平均值和标准偏差。在考虑可能的路线时,计算给定航段到达的概率足以让您错过下一航段,并计算平均等待时间P(on time)*T(first bus) + (1-P(on time))*T(second bus)
。如果你不得不考虑多条腿,每条腿可以独立延迟,以及你可能错过的多条可能的下一条腿,这会变得更加复杂,但一般原则仍然存在。
答案 4 :(得分:1)
灾难性失败应该是第一次检查。
当您尝试连接当天最后一班公共汽车时,这一点尤其重要,这是该航线的关键部分。车手需要知道发生了什么,这样他就不会太分散注意力并且知道风险。
之后它可以评估最坏情况下的单次失误。
然后,如果你真的想要看中,请看看等候点所在的社区或中转站的犯罪统计数据。