我正在尝试建立一个模型,其中海龟决定根据网络环境改变颜色。
方法是"检查"周围乌龟的颜色,然后为有问题的乌龟设置一个if语句来切换颜色(只有2种颜色)。
具体来说,我想知道乌龟怎么能看到""或检查其他海龟'颜色(或其他属性)。
如果可能的话,我还想创建一个滑块,用于"有多少链接"乌龟可以看到他们邻近的海龟' (或邻居的邻居等)颜色。
我是Netlogo和Stackoverflow的新手,所以如果我应该对我的模型和/或问题进行任何修改,请告诉我。
谢谢!
卡洛斯
答案 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为你的滑块变量。希望有所帮助!