
打开打车软件系统告诉你司机还有3分钟到达。这个数字听起来很简单背后其实是一套很复杂的预测系统。作为一篇技术科普文章今天来拆解一下出行APP里的ETAEstimated Time of Arrival究竟是怎么算出来的以及为什么自研这个功能会这么难。一、最简单的ETA距离除以速度最初级的ETA算法是这样的ETA 剩余距离 / 平均速度比如司机距离乘客还有2公里假设平均车速30km/h那ETA就是4分钟。这个方法简单但在实际使用中误差极大原因有几个平均速度不准确早高峰和深夜的速度完全不同甚至同一条路不同路段速度差异巨大路况不考虑遇到红绿灯、拥堵、事故实际用时可能翻倍路线不是直线地图上2公里的直线距离实际开车可能要绕3.5公里二、进阶版ETA结合路网和实时路况更好的ETA算法需要两个关键数据源1. 路网数据把城市道路抽象成图Graph每条路段有长度、限速、通行能力等属性。ETA计算本质上是在这张图上做最短路径搜索同时考虑每段路的实际行驶时间。2. 实时路况路网上的每条道路在不同时间段的实际车速是不同的。好的地图平台会聚合大量车辆探针数据实时更新路段速度让ETA计算能反映当前实际状况。三、更难的问题司机的行为预测即使有了好的路网数据和路况数据ETA还有一个难题预测司机会怎么开。同样的起终点不同司机可能走完全不同的路线而且司机路线并不一定是算法推荐的最优路线。所以高质量的ETA系统还需要历史轨迹学习分析该区域司机的历史行驶习惯预测最可能走的路线动态更新随着司机实际行驶不断修正剩余ETA停留检测识别司机停在等红灯还是接乘客避免ETA计算错误四、为什么自研ETA这么难ETA系统的质量高度依赖数据量。你需要足够多的历史轨迹数据才能建好路段速度模型足够多的实时探针才能反映当前路况足够多的订单数据才能学到不同区域的行为规律对于一个从零开始的出行平台来说这些数据在早期根本积累不了。这也是为什么滴图这类从滴滴业务中抽离出来的地图服务在ETA精度上有天然优势——背后跑过数十亿次真实订单的数据训练。结语如果你正在开发出行类APP不建议自研ETA接入专业的地图服务是更务实的选择。滴图开放平台pc-login邀请码symkv4几分钟拿到Key直接调用经过亿级订单验证的ETA接口。