NetLogo:如何让乌龟在一次滴答后返回



希望你能帮助我!我有一个关于以下代码的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过程的末尾,而不是开头。

最新更新