希望你能帮助我!我有一个关于以下代码的NetLogo问题:
breed [tourists tourist]
turtles-own [satisfaction]
to setup
clear-all
reset-ticks
end
to go
tick
ask n-of initial-number-tourists patches
[
sprout 1 [
set color white
set size 1
]
]
ask turtles
[ let nearest min-one-of turtles [distance myself]
if-else distance nearest < 0.0000001 [ set satisfaction 0 ]
[ set satisfaction 1 ]
]
ask turtles with [satisfaction = 0] [die]
end
目的是萌芽"initial-number-tourists";在每一次滴答的开始。然后,他们根据附近是否有海龟计算自己的"满意度",让满意度为0的海龟死亡。然后,剩下的海龟(满意的)将再次发芽,并再次计算它们的满意度。
代码正在工作,然而,产生了意想不到的结果。发生的事情是,海龟都是发芽的,它们每一次都死去。下一个滴答声;它们再次发芽,又全部死亡。即使我将距离阈值设置得非常低,就像我在我提供的代码中所做的那样。
希望你能帮助我!!亲切的问候
你遇到的问题是,离每只乌龟最近的乌龟是它自己!因此,到nearest
的距离始终为零,每只海龟的满意度将设为零。你想要的是other
龟中最接近的,
let nearest min-one-of other turtles [distance myself]
(您的距离阈值将意味着所有海龟的satisfaction
为1,但我假设这是您在测试中想要完成的。由于海龟在斑块的中心发芽,因此< 1.0
的阈值将达到相同的效果。
注意:惯例是把tick
放在go
过程的末尾,而不是开头。