在给定经度和纬度坐标的情况下,如何创建优化的步行清单?


10

我正在开展一项政治运动,在接下来的几周中,数十名志愿者将进行敲门促销。给定一个包含名称,地址和长/纬度坐标的列表,可以使用哪些算法来创建优化的步行列表。


3
交叉发布似乎形式不佳。为什么使用此标记的SQL?
航空

解决(大约)旅行推销员问题(TSP)...
Debasis

除了经纬度之外,地理情况如何?网格城市?一个几乎是树形的郊区,通往小路的小路?具有巨大的影响力。
Spacedman

Answers:


6

正如史蒂夫·卡列斯塔德(Steve Kallestad)所说,这是一个TSP问题,有许多出色的免费求解器可以找到近似解。

对于您要寻找的东西,可能工作量太大,但是您可以尝试将其中一种求解器与Google Maps API结合使用,以找到适合您的坐标的真实步行距离:https : //developers.google.com/maps / documentation / directions /#DirectionsRequests

(我从未使用过此API,所以我不知道它会多么简单或有效)


4

人们看到与旅行商问题紧密相关的事物,并认为无法解决。

关于此主题的大量工作已经完成,并且并非全部表明没有解决方案。根据参数和所需的解决方案,您可能可以找到可行的方法。

您可能想看一下OpenOpt python库。

另一个需要研究的资源是TSP解器和生成器

如果使用R,则有可用TSP软件包

实际上,为您的问题实施解决方案在这里涉及太多内容,但这应该是一个很好的起点。在这些软件包中,以及在我为您提供的链接中的文档中,您会发现有很多可用的算法策略。您有一个很小的地理区域和一小组“销售人员”,因此在合理的时间范围内计算策略所需的计算能力应该在桌面上可用。

实际上,您不需要找到绝对最佳的策略。您只需要一个很好的。选择看起来不怎么让人压倒的TSP包,然后尝试一下。


我同意史蒂夫·K(Steve K)的观点,解决此问题的关键是针对近似最佳或只是好的路线策略。很多时候“最佳”和“足够好”之间的区别并不大。
MrMeritology 2014年

当然可以找到最佳值,它可能要花比宇宙年龄更长的时间才能迭代所有可能性。您的答案没有提及此。
Spacedman

2

正如@SpacedMan 在评论中指出的那样,街道布局将对步行清单的优化产生巨大影响。您在问题的标题中仅包含“纬度和经度”;但是解决该问题并不会导致“步行清单”,而是会导致“乌鸦飞翔的清单”。

将您的街道布局看成是一个图形,并用边权重来描述距离,并试图找到所有必需地址之间的最短遍历,这会使您将问题视为“ 最短路径问题 ”。Dijkstra的算法是最著名的解决方案(还有其他解决方案)。在其简单的实现中,它收敛于O(n 2,如果您的地址列表大小适中,则可以接受。否则,请在以上链接中查找优化的版本。

至于开始解决该问题的图书馆和资源,因为您没有指定语言或平台,所以让我指出在Open Street Maps Wiki以及总体上它们的框架和库页面中的路由求解器编译


1

这是个疯狂的主意:与认识社区并以前做过门到门工作的志愿者交谈。获得他们的建议和想法。他们可能会有见识,不会产生任何算法,并且这些修改对于任何计算机生成的路由列表都是有价值的。一个例子:避免在灯光昏暗或没有灯光的情况下穿越繁忙的街道。另一个例子:在同一条街道的相对两侧工作的成对志愿者会比单独在那条街道工作的志愿者感到安全。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.