题
假设你想从A点到B点,让你使用谷歌的公交路线,它会告诉你:
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米等待在冷或热)。那岂不是很好,如果谷歌实际上标榜这种可能性?我现在的问题是:什么是用于显示前3路由更好的算法,在给定的时间表不确定
谢谢!
解决方案
如果你拿不确定性考虑那么就不再是“最佳路线”,而是有可能是在运输过程中的总时间最小化的“最佳策略”;但是,它不能被表示为指令的线性序列,但更多的是一种总体规划的形式,即“去汽车站X,等到10:00总线Y,如果没有到达步行到车站Z ...”这将是非常困难的,以呈现给用户(除了被计算上昂贵的生产)。
有关的指令的固定序列,可以计算出它的实际工作出来的概率;但什么是确定性用户的级别要接受?你会满足于,比如说,成功率80%?当你再错过你的连接中的一个卡的房子在最坏的情况下,例如摔倒如果你错过了火车离开每两小时。
我写了很多年去一个类似的方案来计算在芬兰长途巴士旅程,我只是报道了传输时间假设每一辆巴士是按计划进行。然后基本上用不到15分钟的传输时间或所以每一个计划被忽略,因为他们是风险太大(有有时只有一个或两个每天长途客车在给定的路由)。
其他提示
如何增加表达为不同类型的旅程元件的不确定性的水平权重。
在都柏林城市公交服务是出了名的不及时,你能误差40%的保证金添加到任何与都柏林巴士时间表,给人一种最佳和最坏的情况。你也可以因素,在高峰时段的慢性交通延误。然后用户可以看到,它们可以具有实际进行的连接的20%或80%的机会。
您可以排序“最可能是正确的”因子“最好”的旅程,并包括显示给用户的结果,此数据。
我的两个美分:)
实证。记录实际到达时间VS预定到达时间,并计算每个的平均值和标准偏差。在考虑可能的路线,计算出给定的腿将到达晚足以让你错过下腿,使平均等待时间P(on time)*T(first bus) + (1-P(on time))*T(second bus)
的概率。这得到,如果你必须要考虑多个分支,每个可能迟到独立,以及多种可能的未来,你的腿可能会错过更复杂,但总的原则成立。
灾难性故障应该是第一检查。
此,当你试图连接到天是路线的一个关键部分是最后一班车是特别重要的。骑手的需要的知道是发生了什么,所以他并没有得到太多分心,知道风险。
之后,它可以评估最坏情况下的单个未命中。
然后,如果你真的想获得幻想,看一看犯罪统计的街区或中转站,候车点。