我正在尝试编写计算海龟之间距离的代码。如果距离太远,它们需要移开,如果距离太近则需要靠近。
它们不能超过补丁的1/2,也不能超过1补丁。如果它们彼此之间的距离不在1/2和1之间,那么它们需要移动直到它们在此范围内。
我是否必须将它们链接起来才能执行此操作,还是可以将其取消链接?
答案 0 :(得分:3)
由于你在设置中这样做,那么你可以做的是让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