【问题标题】:How to create Cost Distance Matrix using google-distance-matrix?如何使用 google-distance-matrix 创建成本距离矩阵?
【发布时间】:2019-01-17 05:26:30
【问题描述】:

我知道如何使用

获取两个位置之间的距离
 var distance = require("google-distance-matrix");
 distance.key('API-KEY');
 distance.mode('driving');
 distance.units('imperial');
 var origins = [platlong.toString()];
 var destinations = [dlatlong.toString()];
 distance.matrix(origins, destinations, function(err,Data){
         console.log(Data.rows[0].elements[0].distance.value);
 }};

但是如何获得 3 个或更多位置的成本距离矩阵

[
    [0, 2, 3],
    [2, 0, 4],
    [3, 4, 0]
]

为了使用 VRP 算法,我需要上面的成本距离矩阵。

我只知道创建成本距离矩阵的一种方法是循环 m x n 次,即 3 个位置 3 x 3 = 9 次。

在 15 个位置的实时场景中,我必须循环 15 x 15 = 225 次

所以我需要提供 225 次 API-Key,这将非常昂贵。

有什么方法可以便宜地找到成本距离矩阵,而不是通过谷歌距离矩阵循环 m x n 次

【问题讨论】:

    标签: javascript node.js matrix google-api google-distancematrix-api


    【解决方案1】:

    您可以在假设距离 A->B 与 B->A 相同且不进行 A->A 循环向上的假设下减少查找。这意味着对于 15 个位置,您可以得到 15*14/2 = 105。这仍然很多,但比以前少了一半。

    【讨论】:

    • 实时场景A->B和B->A不一样
    • 从我家到办公室是 14 公里,从办公室到家是 17 公里,因为从办公室到家。在两者之间,我不能像从家到办公室一样走,因为这是一条 2 公里的单向路。所以我需要在从办公室到家之间采取另一种方式。所以实际上在企业解决方案中,你的答案是行不通的。
    【解决方案2】:

    托管自己的路由引擎,我经常用这个https://github.com/Project-OSRM/osrm-backend

    此选项仅在不需要实时数据时有用。

    【讨论】:

      猜你喜欢
      • 2015-06-11
      • 1970-01-01
      • 2019-10-04
      • 2020-09-11
      • 1970-01-01
      • 2021-08-23
      • 1970-01-01
      • 2019-07-13
      • 1970-01-01
      相关资源
      最近更新 更多