我的模型中有一群海龟,猴子,他们应该移动半天并为另一半睡觉。当他们移动时,他们会吃水果并从中获取能量,他们在移动时也会失去能量,如果他们有7个能量他们饿死(他们以100的能量开始)我假设蜱是一天。现在发生的事情是,在我添加了移动和睡眠状态之后,他们都只在一两个嘀嗒声后挨饿,我无法弄清楚原因。我认为问题在于倒计时或滴答......下面是部分代码。非常感谢!
to move
ask monkeys [
move-monkeys
set count-down count-down - 1
if count-down <= 0
[set state task sleep
set count-down 0.5 + 0.5
]
]
end
to sleep
ask monkeys [
set count-down count-down - 1
set label count-down
if count-down <= 0
[set state task move
set label ""
set count-down 0.5 + 0.5
]
]
end
to move-monkeys
ask monkeys [
set best-patch patches with-max [calories] in-radius 3
right random 360 fd 1
set energy energy - 10 ;; monkeys lose energy when they move.
if is-patch? best-patch
[ ifelse patch-here = best-patch
[eat-fruit]
[evaluate]]
if energy < 10
[output-print "starve"
set nostarve nostarve + 1
die]
]
end
答案 0 :(得分:2)
also posted on Netlogo user group - 代码在那里。
在你的模型中,听起来你正让猴子在蜱之间移动。因此,对于每个周期,猴子移动12小时。你不会看到所有这些,除非你要求猴子更新显示器 - 这在你找到错误时可能会有所帮助。如果你这样做,只能使用几只猴子。
我能看到的一些事情
1)为什么需要睡眠和移动周期?他们在睡觉时恢复精力吗?如果没有,请让他们在24小时内移动12小时,否则不要做任何其他事情。当他们停下来时,他们会将计数重置为12或他们每隔几个小时移动一次。像
这样的东西ask monkeys
[
ifelse my-time >=0
[move
set my-time my-time - 1]
[set my-time 12] -sets my-time 12 and stops whats it's doing
]
2)你要求他们寻找最好的补丁,然后让他们随机移动。你想让他们搬到最好的补丁吗?如果是这样,请使用移动到一个最好的补丁。