netlogo - 在保持全局方向的同时下坡移动补丁变量
问题描述
我正在一个具有不同土地覆盖类型的景观中建立一个分散模型:城市、森林、住宅等。这些土地覆盖类型中的每一种都有一个运动阻力斑块变量,它们存在于斑块簇中:
城市 - 4 + 随机浮动 1.0
住宅 - 9 + random-float 1.0
森林 - 1 + 随机浮点 1.0。
我希望我的海龟将阻力值从一个森林斑块群下移到另一个。然而,我遇到的问题是,因为阻力值不是以梯度分布的,如果其邻居的阻力相同,海龟将保持原地不动,或者如果该方向的阻力较低,则海龟会向后远离森林斑块.
模型库中大多数使用下坡/上坡功能的模型都有山等梯度景观,但我的是随机分布的。
我怎样才能让我的海龟下坡,同时保持朝向森林斑块的全局方向,这样它们就不会向后移动?
谢谢!
解决方案
在我看来,这更像是一个建模问题,而不是一个 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*)来最小化路径上的阻力总和。
推荐阅读
- powershell - 导入 CSV 文件,获取基于监视器串行的 csv 数据
- windows - 创建目录和子目录崩溃
- angular - 当将 ngFor 用作投影内容时,如何从其上下文中拔出 ngFor,并将其插入到包装它的组件的上下文中?
- android - 我可以用我想要的任何名称在 res 中创建文件夹吗?
- selenium - Kotlin 中的 Serenity Widget 元素
- python - 如何聚合某些列,同时将其他列保留在 Python 中
- excel - vba中的工作表范围函数
- python - 当程序打开时屏幕分辨率发生变化时,如何修复 Kivy 布局的位置?
- angular - 我可以在构造函数和 ngOnInit 中调度请求操作吗?
- javascript - 遍历查询集中传递给模板的特定数量的元素