【发布时间】:2019-12-24 14:29:30
【问题描述】:
我正在编写代码,让代理在世界各地漫游以觅食。
找到食物后,他们应该在找到食物的地方停留一段时间。但是我有一个问题是让他们在食物补丁上停留一段时间。
特定时间:每只海龟都有自己的变量“s”,“s”是由 NetLogo 生成的随机数,该数字不应在每个刻度内改变,我有一个问题要使“s”没有' t 改变。
例如,乌龟 1 的“s”=60,乌龟 1 找到食物后,会在食物上停留 60 刻。乌龟 1 在那里停留了 60 刻后,它将离开食物,“s”的值将再次重置为另一个随机值。而且每只海龟都有不同的“s”值
我尝试使用计时器编码,但每次代理遇到食物时计时器只会减少(就像他们只是在食物上行走而不是呆在那里)我不能使用bk 1 or fd -1 命令,因为乌龟只是保持在他们向后走 1 刻后向前移动。
感谢任何帮助。
代码如下:
turtles-own
[
food
location
s
]
patches-own
[
food-quality
]
to go
move
forage
end
to move
ask turtles
[fd 1]
end
to forage
set s random 100
ask turtles
[ [ if food < food-quality ;meaning that turtle will only keep the best food's value each time they found food
[set food food-quality ;food-quality is patch-own, the food's value
set location patch-here]
if s >= 50
[stay] ]
]
]
end
to stay
set s s - 1 ;decrement-timer
if s = 0
[move
set label ""
reset-s
]
end
to reset-count-down
set s random 100
end
编辑:使问题更清晰并更新一些代码。
【问题讨论】:
-
你还没有描述问题(如果可能的话,还要去掉不相关的代码)。请解释您希望乌龟停留的情况是什么。一般的方法是使用
with在go程序中只选择那些你想移动的海龟。 -
我已经编辑并简化了我的代码,感谢您的时间@JenB :')
标签: netlogo