我有一群海龟,猴子在我的模型中,他们应该移动半天,另一半睡觉。当它们移动时,它们吃水果并从中获得能量,当它们移动时也会失去能量,如果它们有-10的能量,它们会挨饿(从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 发布于 2014-06-17 22:15:24
还张贴在Net徽标用户组上 -代码在那里。
在你的模型中,听起来你好像是在让猴子在滴答声中来回走动。因此,在每一个周期中,一只猴子移动大约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)你让他们寻找最好的补丁,然后你让他们随机移动。你想让他们搬到最好的地方吗?如果是这样的话,使用移动-一个-最好的补丁。
https://stackoverflow.com/questions/24243086
复制相似问题