在Netlogo网络中,海龟如何看待"其他龟的特性?

时间:2017-07-25 12:55:41

标签: netlogo

我正在尝试建立一个模型,其中海龟决定根据网络环境改变颜色。

方法是"检查"周围乌龟的颜色,然后为有问题的乌龟设置一个if语句来切换颜色(只有2种颜色)。

具体来说,我想知道乌龟怎么能看到""或检查其他海龟'颜色(或其他属性)。

如果可能的话,我还想创建一个滑块,用于"有多少链接"乌龟可以看到他们邻近的海龟' (或邻居的邻居等)颜色。

我是Netlogo和Stackoverflow的新手,所以如果我应该对我的模型和/或问题进行任何修改,请告诉我。

谢谢!

卡洛斯

1 个答案:

答案 0 :(得分:2)

欢迎使用Stack Overflow!通常,您希望每个帖子都坚持一个问题,既简单又有类似问题的未来用户的利益。同样,在适用的情况下,您应该尝试包含一些代码以显示您目前为止所尝试的内容,以及任何必要的设置 - 您想要制作minimal, complete, and verifiable example。在这种情况下,我认为你没问题,因为你的问题很清楚并且解释得很清楚,但如果你将来有更复杂的问题,你将更有可能通过遵循这些指导原则获得有用的答案。

对于您的第一个问题,看起来您想要of基元 - 请查看dictionary entry以获取详细信息。 of可以通过几种方式使用,包括允许代理检查另一个代理的变量(如颜色)的值。看看这个示例代码:

to setup
  ca
  reset-ticks
  crt 10 [
    setxy random 30 - 15 random 30 - 15
    create-link-with one-of other turtles
  ]
end

to go
  ask turtles [
    set color [color] of one-of link-neighbors
  ]
end

每次调用go程序时,其中一只海龟的颜色会改变为其link-neighbors之一的颜色。如果运行时间足够长,所有连接的海龟应该以相同的颜色结束。

对于您的第二个问题,我建议您查看Nw extension,这是一个可以更轻松地与Netlogo网络打交道的扩展程序。具体来说,看看nw:turtles-in-radius,它应该适用于您的滑块方法。要使其正常工作,请使用

添加扩展程序

extensions [ nw ]

代码开头。然后,假设与上面相同的设置,你可以玩像

这样的东西
to network-radius
  ask one-of turtles [
    set color red
    ask other nw:turtles-in-radius 2 [
      set color white
    ]
  ]
end

当您调用上面的network-radius程序时,您应该会看到一只乌龟变成红色,并且该乌龟的2个链接中的任何海龟变成白色。要切换到滑块,只需交换" 2" out为你的滑块变量。希望有所帮助!