【问题标题】:Algorithm to find point of minimum total distance from locations找到距位置最小总距离的点的算法
【发布时间】:2012-02-01 20:04:06
【问题描述】:

我正在构建一个基于在给定一组位置的情况下寻找“方便的会面点”的应用程序。

目前我将“方便”定义为“最小化总行程距离”。这与以下示例所示的查找质心不同(为方便起见,使用笛卡尔坐标而不是纬度和经度):

  • A 位于 (0,0)
  • B 在 (0,0)
  • C 位于 (0,12)

这些点的最小总行程位置在 (0,0),总行程距离为 12;质心在 (0,4) 处,总行程距离为 16 (4 + 4 + 8)。

如果位置被限制在其中一个点,问题似乎会变得更简单,但这不是我想要的限制(不像,例如,this otherwise similar question)。

我似乎无法提出任何算法来解决这个问题 - 欢迎提出建议!

【问题讨论】:

  • 您希望使用哪种语言来实施您的解决方案?
  • Python 会是理想的,但我会接受几乎所有不是 APL / INTERCAL 或类似的东西

标签: algorithm coordinates distance


【解决方案1】:

这是一个解决方案,它找到地理中点,然后迭代探索附近的位置,以将其调整为最小总距离点。

http://www.geomidpoint.com/calculation.html

这个问题也和

很相似

Minimum Sum of All Travel Times

这是一篇关于您要解决的一般问题的维基百科文章:

http://en.wikipedia.org/wiki/Geometric_median

【讨论】:

  • 那个问题以及大多数答案都涉及我不想要的“位置是要点之一”约束;但是您链接的解决方案似乎可行,谢谢
  • @KristianGlass - 查看 wikipedia 文章,它没有考虑该约束,并且提到第一个链接的方法是常用的解决方案。
【解决方案2】:

在某种程度上,您似乎正在寻找的是三角形的质心,顶点的权重相等。那将指向重心坐标。

当超出三角形时,有广义重心坐标的解决方案,您可以通过修改顶点的权重来为人指定优先级。仍然无法解释的是真实地图上的距离(不能只向任何方向直线行驶),但这可能是一个开始?

【讨论】:

    【解决方案3】:

    一种选择是定义一个目标(和梯度)函数并使用通用优化库,例如scipy.optimizefmin_cg 将是尝试解决您的问题的好算法。您的目标将是斧头引用的Geometric median Wikipedia page 的“定义”部分中定义的距离总和。您的目标函数的参数是 y

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-04
      • 2013-01-28
      • 1970-01-01
      • 2011-04-03
      • 2021-08-20
      • 1970-01-01
      • 2011-12-09
      相关资源
      最近更新 更多