在地理上分配权力(人)的想法或工具[关闭]
Posted
技术标签:
【中文标题】在地理上分配权力(人)的想法或工具[关闭]【英文标题】:Idea or tool for distribution of power force (people) geographically [closed] 【发布时间】:2013-03-01 12:59:34 【问题描述】:我有很多有坐标的地方,当出现问题时,我会有人维护这些地方。 我正在寻找一种方法来放置现场人员,以便他们尽可能靠近大量站点。
这个想法是这样的: 我有 3000 个带有 lat&long 的网站。 我想选择我有多少可用的人,并根据这些信息获得分配他们的最佳坐标。
我不是在寻找现有的工具(但如果存在我可以寻找它),但我不知道如何从这样的东西开始(我可以使用 mysql、php、Gmaps,我学习了另一种语言/工具,如果它对我有帮助)。 谢谢
【问题讨论】:
嘿,我想我有可以帮助你的工具。我们可以以您可以使用它们的方式处理坐标pinntag.com 我不知道这是否能解决我的问题,我有 3000 个坐标,我可以将它们映射到 gmaps 中……但我需要 n 名员工的最佳位置(分布),以便它们覆盖最大位置数(或接近可能的最大站点数) 【参考方案1】:在给定的一组位置上分配任意数量的人的问题是optimization 问题。更具体地说,它可以解释为clustering 问题。在A Curious Animal 博客中可以找到一个用 JS 实现的漂亮集群示例。
正如您在上面的示例中看到的那样,聚类意味着对相邻位置进行分组。换句话说,它是一种计算,可以在给定的一组位置上产生位置组(集群)的最佳分布。如果我们声明一个集群是一个人而不是一个位置组,我们就会得到您的问题陈述。
由于人数是您的输入,我建议使用 k-means 聚类算法(short explanation、available software list @wikipedia)。
编辑:
在使用优化算法时,一般有两个注意事项:
所选算法旨在解决您的(类别)问题 某些输入参数组合可能会导致奇怪的、不可接受的结果第一点需要一些算法知识,而第二点是试错问题,正如您所注意到的那样。此外,输入的细微差异会导致输出的巨大差异。
上面的链接指出 k-means 算法“不适用于non-globuar clusters”。
从他的对立面开始会更容易 - globular cluster 定义为:“更精确的数学术语是 convex,这大致意味着您可以在两个集群成员之间绘制的任何线都停留在边界内集群的。”:
一个非球状簇(非凸点集)如下所示:
可能你的“薄卵形簇”是非凸的?
另一个重要特征(也在上面的链接中说明)是 k-means 是一种non-deterministic 算法,这意味着它可能(并且很可能会)在多次运行时为相同的输入产生不同的输出。
发生这种情况是因为该算法随机对集群进行初始分区 - 并且最终输出对该初始分区高度敏感。根据使用的实现,您可能在此处有一些修改空间。
如果这不能带来令人满意的结果,那么剩下的唯一事情就是尝试另一种算法(因为已经给出了位置)。我会建议我在商业产品中使用的QT clustering algorithm。它是一种确定性聚类算法,将最小聚类大小和阈值距离 - 点到聚类中心的距离作为输入。
但是,使用这种方法,您将需要修改算法本身。当“不能再形成具有最小集群大小的集群”时,该算法通常会停止。您需要修改算法以在达到所需的集群数量时停止。最小集群大小值应该可以为 1,但您可能需要尝试不同的阈值距离值。
这是我偶然发现的一些code sample in C#。希望对您有所帮助。
【讨论】:
谢谢@linski 昨天我在 Weka 上尝试了 kmeans,使用了每个站点的 lat、long、name 并定义了我需要的集群数量。我喜欢结果,有一些奇怪的簇(当我映射它们时形状),也许更接近正方形/圆形的形状比薄的和卵形的组更好(中心远离 2 个部分),但我必须分析它们更好的是,我认为这是一个尝试和错误的问题。任何其他建议都会受到欢迎。 欢迎您,我为迟到的答复道歉。 我想我会坚持使用 k-means,它们是凸的,但有时卵形的最长边之间的距离很大。但我认为我可以忍受这一点,我将尝试使用相同的数据再次运行 kmeans 以查看可能的更改,并可能尝试 QT 以查看发生了什么。再次感谢。以上是关于在地理上分配权力(人)的想法或工具[关闭]的主要内容,如果未能解决你的问题,请参考以下文章