首页 > 解决方案 > 在保持全局方向的同时下坡移动补丁变量

问题描述

我正在一个具有不同土地覆盖类型的景观中建立一个分散模型:城市、森林、住宅等。这些土地覆盖类型中的每一种都有一个运动阻力斑块变量,它们存在于斑块簇中:

城市 - 4 + 随机浮动 1.0

住宅 - 9 + random-float 1.0

森林 - 1 + 随机浮点 1.0。

我希望我的海龟将阻力值从一个森林斑块群下移到另一个。然而,我遇到的问题是,因为阻力值不是以梯度分布的,如果其邻居的阻力相同,海龟将保持原地不动,或者如果该方向的阻力较低,则海龟会向后远离森林斑块.

模型库中大多数使用下坡/上坡功能的模型都有山等梯度景观,但我的是随机分布的。

我怎样才能让我的海龟下坡,同时保持朝向森林斑块的全局方向,这样它们就不会向后移动?

谢谢!

标签: netlogo

解决方案


在我看来,这更像是一个建模问题,而不是一个 Netlogo 问题。如果海龟已经访问了该集群中的所有森林斑块,您希望它们如何移动?

两个想法:

  • 他们移动到所有邻近补丁中阻力最小的补丁,这些补丁更接近他们的目的地,例如min-one-of
    face destination   ; destination is a patch
                       ; could be a global variable set in setup
    let candidates (patch-set patch-right-and-ahead 30 1
                              patch-left-and-ahead 30 1 
                              patch-ahead 1)
    move-to min-one-of candidates [value]  ; turtle moves to the candidate patch with the smallest "value"
  • 或者,如果他们了解整个景观,他们可以使用路径搜索算法(例如 A*)来最小化路径上的阻​​力总和。

推荐阅读