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

Posted

技术标签:

【中文标题】Netlogo,如何让海龟沿着通往目的地的补丁之间的路径【英文标题】:Netlogo, how to make turtles follow paths between patches of the towards a destination 【发布时间】:2015-08-31 17:14:48 【问题描述】:

您好,我正在尝试模拟游客在国家公园内的移动,该模型的理念是游客沿着这个国家公园的路径,他们在营地停留片刻。

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

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

感谢您的帮助

干杯

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

这是一个很好的答案,我以前不能这样做,所以自从几个月前我发布了这个问题以来,我转向了另一种解决方法,但我认为你的答案是比我得到的那个更好。我终于退出网络并使用补丁属性来完成它。 你永远不需要像setxy ([xcor] of node-here) ([ycor] of node-here)这样的结构,因为你可以使用move-to node-here【参考方案2】:

网络扩展原语nw:turtles-on-path-to 返回一个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" ]
...

【讨论】:

以上是关于Netlogo,如何让海龟沿着通往目的地的补丁之间的路径的主要内容,如果未能解决你的问题,请参考以下文章

如何让海龟在 netlogo 中从世界边界反弹

NetLogo - 如何显示海龟的当前坐标

如何让一只乌龟能够在 Netlogo 中保存其他乌龟 ID?

Netlogo - 将补丁标签的位置设置为中心

NETLOGO:如果一块地有两只乌龟,我该如何让乌龟死掉?

创建补丁的“行程”代理集