Skip to main content

构建平衡区域工具的工作原理

构建平衡区域工具利用遗传算法,根据您指定的条件在研究区域内创建空间连续的区域。 您可以创建包含相等要素数的区域、基于一组属性值的相似区域,或两者同时创建。 该工具还提供了多种选项,用于选择面积大致相等、形状尽可能紧凑以及能够使其他变量保持一致的汇总统计数据(例如平均值和比例)的区域。

示例情景

可将此工具用于以下类型的场景:

  • 零售公司希望划分销售区域,使每位经理负责相等的销售额和员工数量,而无需考虑每个区域内的门店数量。

  • 气候变化导致许多地区的年野火发生次数增加,从而推高了这些区域的灭火成本。 地方和国家政府可以通过创建行政辖区,利用该工具来平衡灭火的工作量和成本。

  • 可以创建警察巡逻区,以平衡警员之间的工作量和呼叫响应。 通过平衡每个街区群的犯罪指数,并确保警方响应的及时性和有效性,可以缓解某些地区人员过剩或不足的问题。

区域构建与选择的定义条件

为了使工具构建出最佳平衡的区域,您必须提供用于定义“最优区域”的条件。 您可以提供两种类型的条件:区域构建条件和区域选择条件。 该工具通过在“区域构建”和“区域选择”两个步骤之间进行交替来平衡区域,您为每个步骤指定的条件将决定工具最终推荐的平衡区域。

区域创建步骤会构建许多随机增长的区域,直到满足区域构建条件。 区域构建条件应被视为您对区域的硬性要求,所有区域都会以符合这些条件的方式进行增长(有关区域如何增长的更多详细信息,请参阅使用遗传算法增长区域部分)。 随后,区域选择步骤将对每组区域进行评估排名,并根据它们对区域选择条件的符合程度选出最佳区域。 通常,区域选择条件应被视为偏好而非硬性要求,它们用于从已满足区域构建条件的区域中进行二次筛选。

选择用于区域构建和区域选择的条件取决于您的具体情况。系统为区域创建方法参数提供了以下选项,以帮助您正确定义条件:

  • 属性目标 - 每个区域的某一属性总和大致相同,且必须指定该目标总和。 创建的区域数量取决于该属性的全局总和。 例如,此选项可用于创建均包含约 1,000 名客户的服务区。 如果所有输入要素中总共有 5,000 名客户,则将创建大约 5 个区域,每个区域包含约 1,000 名客户。 如果总共有 200 万名客户,则将创建大约 2,000 个区域,每个区域包含约 1,000 名客户。

  • 定义的区域数量 - 区域数量必须等于指定的数值,且每个区域包含大致相同数量的要素。 当您明确知晓所需的区域数量,且需要每个区域包含相同数量的输入要素时,此选项非常有用。

  • 区域数量和属性目标 - 将上述两种选项结合,在指定数量的区域之间平衡某一属性的总和。 例如,此选项可用于创建恰好 20 个服务区,且每个区域内的销售额大致相同。 对于此选项,您无需提供期望的属性总和,因为它是通过将属性的全局总和除以区域数量来自动计算的。 此选项不会使每个区域的要素数量相等(不过,您可以将要素数量相等的偏好设置为区域选择条件,这将在后文中进行说明)。

  • 自定义种子位置 - 每个区域将根据种子位置点输入要素参数,从一组固定的种子位置开始增长。 创建的区域总数由种子位置的数量决定。 种子位置的数量基于种子位置点和输入要素确定,规则如下:

    • 如果输入要素为多边形,则与种子位置点相交的多边形将被选为起始位置。 区域将通过聚合附近的要素从这些种子位置开始增长。

    • 如果输入要素为点,则最接近每个种子位置点的点将被选为种子要素。

    您可以使用区域构建条件参数提供其他变量及其权重。

    如果您有固定的位置并希望围绕这些位置增长区域,请选择此选项。 例如,您可以在现有消防通道周围创建防火防御空间。

区域构建条件

对于区域创建方法参数的每个选项,所需的区域构建条件各不相同,所有区域都会持续增长,直到满足这些条件。

  • 属性目标 - 您必须提供想要平衡的属性,并在带目标的区域构建条件参数中提供一个总和。 (可选)您可以提供具有不同总和的多个属性,并为每个属性指定权重,以便在选择具有最低适应度评分的地点时,某些属性比其他属性具有更高的优先级。

  • 定义的区域数 - 您必须使用目标区域数参数来提供区域数量。

  • 区域数和属性目标 - 您必须在区域数参数中提供区域数量,并在区域构建条件参数中提供要平衡的属性。 您同样可以提供多个属性并提供权重来对其进行优先级排序。

  • 自定义种子位置 - 您必须在种子位置点参数中提供区域增长的起始种子位置。 区域数将由种子位置点数量和输入要素共同决定。 您可以使用区域构建条件参数提供其他变量及其权重。

区域选择条件

区域选择条件是附加选项,允许您针对区域构建步骤中创建的区域指定您的偏好。 这些条件与区域构建条件结合使用,以确定该工具最终推荐哪些区域。 大多数区域选择条件适用于区域创建方法参数的所有选项。 以下各节介绍了每个区域选择选项及其适用场景。

区域特征条件

区域特征参数选项通常与区域的面积大小和形状相关。 您可以使用以下任一或全部选项:

  • 面积相等 - 优先考虑面积几乎相等的区域。 此选项仅在输入要素为多边形时适用。

  • 紧凑性 - 优先考虑形状接近圆形的区域。 此选项始终适用。

  • 要素数量相等 - 优先考虑由大致相同数量的要素组成的区域。 当使用定义的区域数量选项时,此选项不适用,因为该区域创建方法已经通过区域构建条件确保了要素数量相等。

属性考虑条件

要考虑的属性参数允许您指定未用作区域构建条件的其他属性,以便在区域过程中予以考虑。 这使您能够使区域保持某一属性的一致总和、平均值、方差或中位数。 您还可以提供多个属性,例如,您可以使各区域拥有相同的总人口(总和),同时拥有大致相同的收入中位数(中位数)。

此选择条件适用于所有区域创建方法。 用于此参数的属性必须是连续型属性,而非分类属性。

保持分类变量的比例

保持比例的分类变量参数允许您指定一个分类变量,用于平衡各个区域中各类别所占的比例。 您还必须选择一种比例方法,以指定如何平衡这些比例。 提供了以下比例方法:

  • 保持比例 - 优先考虑在每个单独的区域内保持相同类别相对比例的区域。 例如,如果您用于保持比例的分类变量表示森林和非森林的二元土地覆盖分类,并且 60% 的要素具有森林土地覆盖类型,40% 的要素具有非森林土地覆盖类型,则此选项将倾向于生成每个单独区域都由 60% 的森林和 40% 的非森林组成的区域。

  • 保持整体比例 - 创建区域时,将使各区域中主导类别的整体比例与总体类别的比例相匹配。 例如,如果分类变量表示要素位于陆地还是水域,并且 60% 的要素位于陆地上,则此选项将倾向于生成大约 60% 的区域主要位于陆地、40% 的区域主要位于水域的区域。

此选择条件适用于所有区域创建方法。 用于此参数的变量必须是分类变量,而非连续型变量。

基于距离的条件

要考虑的距离参数允许您倾向于选择靠近另一组要素(或多组要素)的区域。 例如,如果您正在构建医疗管理区域,则可以倾向于选择靠近现有医院的区域。 区域与要素之间的距离定义为:该区域内所有要素到作为“要考虑的距离”提供的最近要素之间距离的中位数。

选择区域条件的场景

区域构建和区域选择条件有许多可用选项,根据您对区域的需求和偏好,可能无法立即确定应使用哪些参数。 以下列出了几种场景以及在这些场景中应使用的参数。

场景 1:将房源分配给房地产经纪人

您是房地产中介机构的分析师。 您拥有一个要素类,其中包含该地区所有可用房源及其价格。 您的机构中有 12 名房地产经纪人,您希望将房源分配给他们中的每一个人,使每个经纪人获得相同数量的房源,并且每个区域中房产的总成本大致相同。 您还希望区域靠近现有的房地产分部。

为此,您可以使用区域创建方法参数中的区域数量和属性目标选项。 在目标区域数参数中指定 12(每个经纪人一个),并在区域构建条件参数中选择代表每处房产成本的字段。 在区域特征参数中选择要素数量相等选项,以倾向于选择为每个经纪人分配大致相等数量房产的区域。 为了考虑与最近房地产分部的距离,请在要考虑的距离参数中提供一个代表分部位置的要素类。

场景 2:创建新的行政区边界

创建新的行政区边界以平衡每个行政区内的人口数量是一项复杂而艰巨的任务,几乎每个政府层级都必须频繁执行。 利用在小型社区中收集的人口和人口统计数据,您希望创建每个行政区大约有 10,000 人的行政区。 此外,大约 75% 的人口居住在城市地区,25% 居住在农村地区。 您希望大约 75% 的区域以城市为主,25% 的区域以农村为主,以便妥善代表每个群体。

为此,您可以使用区域创建方法参数中的属性目标选项。 选择代表每个社区人数的字段,并在带目标的区域构建条件参数的列中指定 10,000。 在保持比例的分类变量参数中指定代表社区是城市还是农村的字段,并在比例方法参数中选择保持整体比例选项。

场景 3:为假释官分配工作负载

您是执法部门的 GIS 分析师,任务是平衡 25 名假释官的个案负荷。 您拥有全市所有罪犯的位置以及每名罪犯的数值风险评估,您希望在使每位假释官负责的罪犯总风险大致相同的前提下,将罪犯均匀地分配给各假释官。 然而,风险的平衡不如让每位假释官分配到相同数量的罪犯那么关键。 此外,您希望区域尽可能紧凑,以减少假释官的出行成本。

为此,您可以使用区域创建方法参数中的定义的区域数选项,并在目标区域数参数中指定 12。 在要考虑的属性参数中指定代表每名罪犯风险的字段,并在区域特征参数中选择紧凑性选项以创建紧凑区域。

场景 4:基于现有消防站创建平衡的应急响应区域

您是城市应急管理部门的 GIS 分析师,需要为消防和急救人员响应定义服务覆盖区域。 该城市拥有现有的消防站,每个消防站都必须作为响应区域的固定种子位置。

您拥有代表人口普查区块和事件需求的数据,并且您希望将这些区域分配给消防站,以便每个消防站服务的总工作量相似,例如人口和历史呼叫量。 虽然平衡工作量很重要,但关键的是,每个区域在其分配的消防站的可接受响应时间内必须是可达的。 因此,您希望区域在地理上保持紧凑,以减少出行距离并提高响应效率。

为此,您可以使用区域创建方法参数中的自定义种子位置选项,并将消防站位置作为种子位置点。 在区域构建条件参数中指定代表人口和总呼叫需求的字段,并在区域特征参数中优先考虑紧凑性。 这可确保区域从每个消防站向外增长,保持空间内聚性,并在尊重固定消防站位置的前提下尽可能均匀地分配工作量。

使用遗传算法增长区域

利用您为区域构建和区域选择定义的条件,构建平衡区域工具会在给定输入要素空间约束的情况下,使用遗传算法 (GA) 增长出最优区域。

GA 基于查尔斯·达尔文最早阐述的自然选择和遗传学进化理论。 根据达尔文的适者生存原则,种群中适应度较高的生物往往能够生存并产生更多后代。

由于可能解的数量通常非常庞大,GA 通过从随机搜索开始并引导搜索向更有前景的方向发展,从而寻找优化解。 GA 优化是自然生物进化的一种抽象,其中每个可能的解(在此场景中指每个可能的区域排列)都类似于种群中的一个个体生物。 随着世代的繁衍,只有适应度最高的个体才能继续生存,且只有最有效的搜索才被允许继续。

该算法首先创建一个随机种群,其中种群中的每个个体都是一个可能的解。 计算每个解的适应度评分,现有种群中具有最低适应度评分(最佳解)的个体将被传递给下一代,而其余不适应的解将被消除。 适应度最高的个体被指定为父代,并允许使用交叉和突变等遗传算子成对产生子代。 每个新世代都是上一世代中适应度最高的个体及其子代的组合。 有时,下一代中会随机引入一些个体(既不是父代也不是子代,称为外来个体),以拓宽算法所发现的可能解的范围。 计算每个新世代中所有个体的适应度评分,并针对给定的代数(默认情况下为 50 代)重复该过程。 最终世代中适应度最高的个体即对应于该工具返回的平衡区域。

选择初始种群

该算法的初始种群是通过在研究区域中随机选择要素或使用自定义种子位置来选择的。 默认情况下,种群将由 100 个个体组成,但该数量可以在种群规模参数中进行更改。 每个随机选择的要素都是一个起始位置(称为种子),区域通过聚合到邻近的要素中以此向外增长。 区域将持续聚合和增长,直到总值达到区域构建条件阈值。 例如,如果您提供 100,000 的人口和 50,000 的户数作为区域构建条件,则值 100,000 和 50,000 分别是人口和户数的阈值,一旦达到所有阈值,区域即停止增长。 对于下一个区域,将在第一个区域之外选择一个新种子并允许其随机增长。 该过程将持续进行,直到所有要素都被分配到某个区域中。

在生物学中,个体的遗传物质包含在染色体中。 染色体由基因组成,基因是生命的遗传单位。 对于该工具,一个可能的解类似于一条染色体,而种子则类似于基因。 这些基因是从父代传递给子代的遗传单位,因此用于创造未来的世代。 下图显示了一个可能解的示例,以及该解中每个区域的种子的 Object ID 值:

构建平衡区域的初始种子

计算适应度得分

每个可能解的适应度评分用于衡量生成的区域对该工具中提供的各种区域构建和区域选择条件的符合程度,适应度评分越低表示对条件的符合度越好。 因此,最终目标是寻找一个具有较低适应度评分的解(理想情况下,这将是具有最低可能适应度评分的解,称为全局极小值)。 可能解的适应度评分使用以下公式计算:

\[ \text{Fitness Score of a possible solution} = \sum_{i=1}^{n} \sum_{j=1}^{c} \left( \frac{v_i - v_{ij}}{v_j} \right)^2 \]
  • \(n\) - 解中区域的总数。

  • \(c\) - 用于构建区域和选择解所使用的条件总数。

  • \(V_j\) - 第 j 个条件的阈值。

  • \(V_{ij}\) - 第 i 个区域的第 j 个条件之和。

适应度评分公式应理解为:累加解中每个区域的各项条件值与理想完美值之间的差异程度。 在完美解中(这通常是不可能的),所有区域的条件值均等于其理想值,且适应度评分为零。 除以阈值 (Vj) 可确保适应度评分无单位。 无单位这一点至关重要,因为例如,使用平方米或平方英尺作为面积测量单位将不会影响适应度评分。

输出收敛表参数提供了每一代中最佳解的总适应度评分以及每个单独条件的评分。 系统将随输出表一起创建一个收敛图,以显示这些适应度评分如何在世代交替中发生变化。 算法会尝试寻找比现有解更好的解,因此随着世代的推进,图表中的总适应度曲线通常会下降,直到最终趋于平缓。 这种趋于平缓的趋势表明适应度评分已达到局部极小值(尽管可能不是全局极小值),继续进行后续的世代繁衍可能不会再改善解。

输出收敛图表

除了输出收敛表之外,地理处理消息也将帮助您了解区域的生成效果。 系统将针对每个区域构建和区域选择条件提供均方根误差。 该值越低,表示区域越符合条件。

通过交叉创建新世代

算法生成初始种群后,允许其中一半的个体参与下一代并产生新可能解的子代。 这些个体根据其适应度(由最低适应度评分决定)进行选择,并使用称为交叉的过程进行随机配对以产生子代。 交叉(有时称为重组)是一种遗传算子,用于结合来自两个父代的信息以生成子代。 下图显示了一个对两个父代的种子进行交叉以创建两个新子代的示例:

交叉创建子代

结果,新世代中有一半的个体是上一世代中的父代,另一半是它们的子代。 对于该新世代,将再次计算适应度评分,前半部分个体将晋级到下一世代,从而引导搜索走向更好的解。

通过突变和外来物种扩展可能解

在不断进化的种群中,多样性非常重要,而维持多样性的一种方式就是通过突变。 突变是指在基因序列中引入的微小变化或更改,以创建具有不同遗传密码的个体。 在该工具中,任何经历突变的个体的种子都将被随机重新排列(置换)。 下图显示了一个可能解经历突变并重新排列其种子的过程:

突变改变种子

子代经历突变的概率可以通过突变因子参数进行控制,默认值为 0.1。 引入突变可以拓宽可能解的范围,并且通常允许算法快速收敛到局部最优解。 然而,极高的突变因子会引入过多的变化,从而导致算法效率降低、收敛缓慢(或者根本不收敛)。

拓宽可能解范围的另一种方法是向种群中引入新个体(称为外来个体),这些个体既不是前几世代的一部分,也不是其子代。 引入外来个体可以在保持高收敛速度的同时,增加获得全局极小值(而非局部极小值)的概率。 突变因子控制了每一世代的子代中,被由随机生成种子组成的外来个体所替换的比例。

不相连的组

由于空间约束,有时可能会出现不相连的组,其中该组中的要素与更大研究区域中的任何要素都不相邻。 当输入要素是不连续的多边形(例如岛屿)时,这种情况最为常见。 区域只能通过聚合区域内现有要素的空间邻域要素来增长。 为了解决此问题,该工具将在每个不相连组与该组之外最近的要素之间生成一条链接,以建立邻近关系并允许区域继续增长。 不相连组 ID 字段将被添加到输出要素的属性表中,以便您直观地查看研究区域中哪些要素或要素组已断开连接。

其他资源

  • Coley, D. A. (1999). An introduction to genetic algorithms for scientists and engineers. World Scientific Publishing Company.

  • Lorena, L. A. N., & Furtado, J. C. (2001). Constructive genetic algorithm for clustering problems. Evolutionary Computation, 9(3), 309-327.

  • Patel, N., & Padhiyar, N. (2010, October). Alien Genetic Algorithm for Exploration of Search Space. AIP Conference Proceedings (Vol. 1298, No. 1, pp. 325-330). AIP.