技术说明: OSRM VS Gosmore枪战

我们需要一大堆点至点的路线,为我们多站路由系统. 由于我们使用OpenStreetMap的作为该源, we’;已经成立了两个著名的OSM路由系统之间的比较: Gosmore和OSRM.

首先, 我们建立了这个测试我们自己的需要. It’;不是意味着要代表所有情况下所有的路由需求. 的结果和结论不必是有效的你. 如果你理解了这一点,并同意, 继续阅读.

为什么: 距离矩阵

为了找到最快 多站路线, 我们需要知道所有点之间的转B行程持续时间. 从一个原点位置访问4目的地, 我们需要的路线5×4 = 20的腿. 这次旅行距离矩阵指数增长. 随着40个目的地, it’;第41×40 = 1.640腿, 80目的地6.480腿, 等等.

所以, 多久你的车载导航拿地找到一个目的地的路线? If it’;s快速, 它会在一秒内这样做. 这似乎快, 但随着1.000 legs that’;Ş超过16分钟. We don’;不想我们的用户等那么久. 我们需要做好准备,做在小于, 它包括优化本身.

因此, 我们尽量减少我们实际需要为我们的优化腿的数量, 我们要以最快路由系统提供多个专用服务器运行.

什么: OSM路由器

OpenStreetMap的OpenStreetMap的, 世界的免费地图, 是我们使用我们的多站的路由优化模型基地. It’;免费的使用和整个地球只有几十GB的下载. 还有就是使用OSM的路由计算的自由软件一堆.

前, 我们选择了著名的 Gosmore 作为路由器以其良好的性能, 稳定大方许可证. It’;Ş编程,C ++和专用Linux服务器上安装我们的伟大工程. 但是它的发展是不是太活跃,似乎更瞄准往Android设备的单机导航.

最近, 另一个著名的路由机 OSRM 改变了相当严格的许可证. 以前它是在AGPL协议授权. Since October 2013 it’;S下的非常宽松的可用 (简) 2-clause BSD许可证. It’;仿佛注定要作为服务运行, 这似乎更多地面向我们的需要. It’;S还C ++和它的发展似乎更加活跃.

注意: 还有更多的 路由器 为OpenStreetMap的.

怎么样: 设置多路径

我们使用了最新的Gosmore和OSRM, 从同一来源的英特尔i7的建立2.6GHz的机器8 GB RAM, 运行Ubuntu Linux桌面13.10. Gosmore是构建无头 (没有GUI). 对于这两个路由器我们准备荷兰地图, 作为他们的文档中描述.

一个PHP脚本作为一个包装调用两个路由器. 那是: OSRM被用作休息的服务和Gosmore作为一个普通的系统命令 (EXEC 以1秒的CPU限制). 该脚本生成随机腿, 这是由两个随机位置由 (岁月, LNG) 在荷兰的固定区域. 这些位置可能不是真实地址, 它们也可以在森林或湖泊之中. 我们的用户做输入各种位置,他们需要为工作或休闲参观, 不一定只有家庭或企业.

我们有Gosmore和OSRM都找到每条腿路线. 我们检查阉路线被发现, 阉的行进时间是有效的和测量所花的时间进行计算. 我们由每个持续时间,估计的最小值和最大值进行比较验证. 那些从腿部距离来计算 直线距离, 最高限速130公里每小时 (最短持续时间) 和5公里/小时的步行速度 (最大持续时间).

检测结果

在脚本中的一个运行应足够, 我们跑了三次. 输出:

运行#1
 总的腿: 1000
 Total time OSRM: 7.851sec, Gosmore: 170.296 sec
 Success OSRM: 96.5%, Gosmore: 94.6%
 Too slow OSRM: 0%, Gosmore: 0%
 Too fast OSRM: 0%, Gosmore: 0%
运行#2
 总的腿: 1000
 Total time OSRM: 7.941sec, Gosmore: 174.774 sec
 Success OSRM: 96.8%, Gosmore: 94.7%
 Too slow OSRM: 0%, Gosmore: 0%
 Too fast OSRM: 0%, Gosmore: 0%
运行#3
 总的腿: 1000
 Total time OSRM: 7.785sec, Gosmore: 168.599 sec
 Success OSRM: 95.5%, Gosmore: 94.9%
 Too slow OSRM: 0%, Gosmore: 0%
 Too fast OSRM: 0%, Gosmore: 0%

获胜者,冠军: OSRM (更快, 但脂肪)

两个路由器具有较高的成功率. 关闭所有腿100%的成功路由. 被击溃那些腿, 满足所有的有效性检查. 但OSRM更快, 速度快了很多. 它计算在小于8秒为1000的腿路由, 其中,Gosmore花费大约为2分50秒.

基于该检测结果, 我们有一个明确的赢家和OSRM似乎更适合我们的工作. 它具有相同的质量Gosmore, 但是快得多.

存在要由一种句话. 我们跑这个测试荷兰相当小地图上. 至今, 我们并没有在获得成功OSRM为整个地球运行, 这是我们需要为我们的公共服务路由. Gosmore也服务于遍布在相当小的行星路线, 又便宜, 但专用服务器 (目前: Amazon EC2的c3.large). 所以, 而OSRM前景十分看好, 我们需要另一个努力使其为我们工作.