【问题标题】:Draw equal paths from the same geographic point从同一地理点绘制相等的路径
【发布时间】:2019-09-11 14:40:22
【问题描述】:

我有 10'000 个地理点 (POS)、10 个销售员和一个起点。 目标是为了避免对销售人员的歧视,每个人都应该走相同的距离和相同数量的销售点。

为了实现这一点,我认为应该应用这些规则:

  1. 为每个销售员分配一条从起点开始的路径,具有相同数量的地理点 (POS)。
  2. 每条路径应具有相同的距离。

我的解决方案是按距离对 GPS 坐标点数组进行排序,然后将每个点分配给一条路径,直到循环结束,但怀疑这是否可行..

实现这一目标的最简单算法是什么?

【问题讨论】:

  • 这听起来像是旅行商问题的变体,所以任何合适的算法都应该适合。
  • 听起来好像没有简单的算法。
  • 请注意,可能无法获得 10 个具有相同顶点/点数的等长不同路径。
  • en.wikipedia.org/wiki/Travelling_salesman_problem 我找到了这个算法,但我想它不会解决我的问题
  • 嗯,有很多算法可以解决这个问题,有些是精确的,有些是启发式的。为什么你认为其中一种算法不能解决你的问题?请注意,您的问题是原始问题的变体,因为您需要获得 10 条路线,这些路线应该具有尽可能相似的特征,因此您需要调整您找到的算法。由于这类问题通常更多是理论上的问题(至少描述暗示了这一点)我想这是 your 任务的一部分,以找到合适的解决方案 - 我们会尽力提供帮助,但 需要做这项工作。

标签: java google-maps


【解决方案1】:

您有一个很好的起点,可以按距起点的距离对点进行排序。现在将 10,000 个点视为 1000 个同心环,每个环有 10 个点。我们所要做的就是从每个戒指中为推销员分配一个点,如下所示:

  • 按销售员当前点的路径长度排序
  • 从路径最长的推销员开始:
    • 让推销员取最近的点(当前环中的 10 个)
    • 继续下一个推销员(当前环剩余 9 个点)
    • 其他 8 位销售员以此类推

如果你从外到内迭代环,路径长度的差异会变小(而不是从小环到大环)。

您可以用最外圈的每个点为每个推销员播种。

对于“最近”步骤,您只需将最后添加的点连接到正在考虑添加的当前点。对于每个推销员的点集,路径不会是最短的,但每个点的效率都相同,并且路径长度差异总体上会趋于零。

如果您想改善每个推销员的路径,在考虑添加一个点时,您可以在“in set”中找到与候选人最近的两个点并将其插入它们之间,或者将其附加到“end”之一如果该距离小于到两个最近点的距离之和,则点。

【讨论】:

    猜你喜欢
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多