2017-07-25 90 views
1

我正在尝试构建一个模型,其中海龟决定根据网络中的环境更改颜色。在Netlogo网络中,海龟如何“看”其他海龟的属性?

该方法将是“检查”周围海龟的颜色,然后为有问题的龟设置if语句以切换颜色(将只有2种颜色)。

具体我想知道一只乌龟怎么可以“看见”或检查其他乌龟的颜色(或其他属性)。

如果可能的话,我还想创建一个“多少链接”龟可以看到他们的邻居龟(或邻居等邻居)的颜色滑块。

我是Netlogo和Stackoverflow的新手,请让我知道是否应对模型和/或问题进行任何修改。

谢谢!

Carlos

回答

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”替换为滑块变量即可。希望有所帮助!