开车出发前,打开导航,输入目的地,会给推荐好几条路线,通常第一条是最优路线。并且哪里堵车也一目了然,畅通的地方都是绿色,缓行会用黄色表示,堵车则会用红色表示。如果行驶过程中遇到堵车,它还能告诉我们,前方拥堵,预计需要8分钟通过,就连通过所需的时间它都知道。那么,它到底是怎么看见堵车,又是怎么算出时间,以及规划最优路线的?
其实依赖更多的,是靠导航的使用者上传的数据,再依靠精密的算法得出来的。在以前,智能手机还很少的时候,导航仪需要单独买,用导航的人还不多。数据太少了,算法也不智能,就做不到这些,是否堵车根本不知道,只能做到最基础的规划路线。
而现在用导航的太多了,使用的人不仅是用户,本身还是数据提供者。有个专业术语叫浮动车数据,就是众包数据。当打开导航软件,哪怕只是让它在后台运行,手机也会定时向服务器发送一组匿名信息,你在哪、速度多少、朝哪个方向走。
单看一辆车,这数据毫无意义。但当一个路段上同时有几十辆、几百辆车在传数据时,后台就能算出这段路的平均车速。所以使用的人太少了不行,必须用户多才行。
比如说,一条限速60的城市道路,平时的平均速度能到40,突然某个时段,平均速度到了30,这就说明车辆有点多,跑不起来,算是缓行。
如果到了10,就说明拥堵,地图显示红色。如果到了5,出现走走停停,甚至多辆车在原地长时间不动,就是严重拥堵。通过看这些数据,算是上帝视角了,好比我们从高处看一条道路的堵车情况,源头在哪里,堵车堵到哪里了,大家的行驶速度如何,一目了然。
根据大家的平均速度,以及堵车的长度,就很容易算出需要多久通过。当然,这只是个大约数,很多时候都不准。我遇到最多的是预计的通过时间太短了,比如它说预计10分钟通过,走了5分钟后,它还预计10分钟通过,它悄悄变了。
偶尔也有预计正确的,或者是通过时间比预计时间短的。虽有差别,但不会差的很大,不会出现预计10分钟,结果一个小时,除非道路状态有了新的变化,那预计的时长也会跟着变。
除了用户上报的浮动数据,导航还有一个信息来源,和交管部门对接的官方数据。现在导航和很多城市的交管部门都有合作,信息互通。所以哪里有事故,哪里道路临时封闭,道路施工等,导航都能第一时间知道,不用自己来算。还有一个是用户主动上报,有时它也会主动问你拥堵的原因,比如问你这里拥堵是否有事故,或者事故是否还存在等。司机只需简单回答是或不是就可以,这也是在收集数据,后续显示更准确。
还有一种路是定期拥堵,有的路段工作日的7-9点,肯定拥堵,并且拥堵时长和平均速度都差不多。导航也会记住,这属于长年积累的历史规律,这对于规划路线有很大用处。比如说你在远方几个小时后要经过这里,并且恰好是拥堵的时间点经过,导航也会提前预知到。
怎么算出的最优路线?通常是耗时最少的会优先推荐,而不是距离最短。它会把路分成一段一段的,每个路口也都单独标记,记录各个路段和路口的权重高低。计算出每段路的预计通行时间,能遇到多少红绿灯,把等红灯的时间都会算上。最终算出通行时间,推荐一条时间相对短,路程也相对短的道路为最优。随着车辆往前行驶,它会实时监测前方路况,如果发生改变,预计的时间也会跟着改变。遇到堵车,甚至还会推荐其他更优路线,问你是否需要切换。