我有10,000个地理点(POS),10个销售员,和一个起点。的目标是避免销售人员之间的歧视,每个人都应该走相同的距离和相同数量的销售点。
要做到这一点,我认为应该适用这些规则:
我的解决方案是按距离对GPS坐标点数组进行排序,然后将每个点分配到一个路径,直到循环结束,但怀疑这是否有效。
实现这一目标的最简单算法是什么?
发布于 2019-09-18 05:28:07
你有一个很好的起点,从一开始就按距离排序。现在把10,000点看作1000个同心圆环,每个环10点。我们所要做的就是把每一个戒指上的一个点分配给一个销售员,如下所示:
如果你从外到内迭代环,路径长度的差异就会变小(而不是从小环变大)。
你可以从最外面的圆环上给每一个销售员播种每一个点。
对于“最近”的步骤,您只需将最后一个添加点连接到正在考虑添加的当前点。对于每个销售员的点集,路径不会是最短的,但是每个路径都会有相同的无效率,而且总体上路径长度差异将收敛到零。
如果你想改进每个销售员的路径,当你考虑添加一个点时,你可以在候选人的“in set”中找到两个最近的点,然后在它们之间插入,或者如果这个距离小于两个最近点的距离之和,就把它附加到‘结束’点之一。
https://stackoverflow.com/questions/57891590
复制相似问题