我正在尝试建立一个模型,在这个模型中,海龟决定根据它们在网络中的环境来改变颜色。
方法是“检查”周围海龟的颜色,然后为有问题的海龟设置一个if语句来切换颜色(只有两种颜色)。
具体地说,我想知道一只海龟如何“看到”或检查其他海龟的颜色(或其他属性)。
如果可能的话,我还想创建一个滑块“有多少链接”可以看到乌龟的邻居乌龟(或邻居的邻居等)的颜色。
我是Netlogo和Stackoverflow的新手,所以如果我应该对我的模型和/或问题进行任何修改,请让我知道。
谢谢!
卡洛斯
发布于 2017-07-25 22:12:07
欢迎来到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“替换为您的滑块变量。希望这能有所帮助!
https://stackoverflow.com/questions/45304031
复制相似问题