Netlogo,如何让海龟沿着补丁之间的路径走向目的地

Netlogo, how to make turtles follow paths between patches of the towards a destination

你好,我正在尝试模拟游客在国家公园内的移动,模型的想法是 游客 遵循 路径 这个国家公园,他们在 营地 停留了一段时间。

我有两个问题,使用 NW 我找到了如何获得两个 节点 之间的最短路径,但我无法让 Tourists 沿着那条路走。我遇到的第二个问题是 Tourists 有一个 destination 并且我希望节点使用与游客相同的补丁来获得相同的目的地并且给游客下命令,让它沿着那条路走。

此脚本同时使用 NW 和 GIS 扩展,我上传了我在 https://github.com/derek-corcoran-barrios/netlogoPNTP 中使用的脚本和栅格,以便您可以 运行 使用栅格轻松地使用它。

感谢您的帮助

干杯

1) 我假设您有报告补丁与其目标之间路径长度的过程。对于这个答案,我们称它为 distance-to-target。让游客节点的每个 link-邻居节点 运行 并将游客移动到具有最短值的节点。

请记住,这是通用代码,可能需要根据您的需要进行调整。

ask tourists  
   [
    set node-here min-of ([link-neighbors] of node-here) [distance-to-target]
   move-to node-here; this makes them move 
   ]

实际上,如果我理解正确的话,我认为这可能会回答您的两个问题。

网络扩展原语 nw:turtles-on-path-to returns list 个位于到达目的地的最短路径上的节点。这是你找到的原始人吗?假设你有一个名为 mypath 的海龟变量来存储它,你想要这样的东西来获取路径:

ask turtles
[ ... ; decides target
  set mypath nw:turtles-on-path-to target
]

和类似这样的东西在路上移动。它将移动到列表中第一个节点的位置,然后从列表中删除第一个节点,以便新的第一个节点成为下一步。

...
move-to item 0 mypath
ifelse length mypath > 0
  [ remove-item 0 mypath ]
  [ print "at destination" ]
...