4

您好,我正在尝试模拟游客在国家公园内的运动,该模型的理念是游客沿着这个国家公园的小径走,他们会在露营地停留一段时间。

我有两个问题,使用 NW 我发现了如何获得两个节点之间的最短路径,但我不能让游客遵循那条路径。我遇到的第二个问题是游客有一个目的地,我希望节点使用与游客相同的补丁来获得相同的目的地并向游客下达命令,以便它遵循该路径。

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

谢谢您的帮助

干杯

4

2 回答 2

2

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

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

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

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

于 2015-11-24T01:10:58.197 回答
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" ]
...
于 2015-11-24T07:59:23.930 回答