2015-06-22 133 views
1

我是新来的NetLogo和编码/一般编程,我正在编写计算海龟之间距离的代码。如果他们太靠近,他们需要离开,如果他们太远,他们需要靠近。NetLogo:海龟之间的最小距离

它们不能接近1/2的补丁,也不能超过1个补丁。如果它们之间的距离不在1/2和1之间,那么它们需要移动,直到它们在这个范围内。

我必须链接他们做到这一点,或者我可以做到这一点不链接?

+0

首先,他们绝对不需要链接。查看NetLogo字典中的'distance'基元。你是在创造海龟还是在模拟过程中这样做? – JenB

+0

我正在尝试使用距离基元。它告诉我“集合”需要2个输入。这就是我要求的acells [设置距离acell one-of [0.33 1.05 0.65]] – Amy

+0

我正在尝试在设置中执行此操作,而不是在模拟过程中执行此操作。 – Amy

回答

2

既然你正在做这个设置,那么你可以做的是让NetLogo逐渐创建海龟,并确保每个海龟都是合适的距离。有一个合乎逻辑的问题,第一只乌龟不应该进行距离测试,因为没有其他的乌龟,并且你认为有足够的乌龟可以适应这个距离限制的世界。

尽管如此,这里有一些代码(9龟)。如果你尝试创造太多的海龟,它确实会冒无尽的循环风险。随着海龟数量的增加,它的效率也非常低,因为海龟会随机放置,直到找到合适的位置,可能需要多次尝试。

to setup 
    clear-all 
    create-turtles 1 
    repeat 8 
    [ let min-x min [xcor] of turtles - 1 
    let max-x max [xcor] of turtles + 1 
    let min-y min [ycor] of turtles - 1 
    let max-y max [ycor] of turtles + 1 
    create-turtles 1 
    [ loop 
     [ setxy random-float (max-x - min-x) + min-x random-float (max-y - min-y) + min-y 
     let close-turtles other turtles-on (patch-set patch-here neighbors) 
     let how-close distance min-one-of close-turtles [distance myself] 
     if how-close > 0.5 and how-close < 1 [stop] 
     ] 
    ] 
    ] 
end