当我尝试在他们拥有的半径的不同补丁组上创建代理时,出现运行时错误。
我在这里寻找答案,但是我不完全理解它们。使用(如果有)吗?人们经常这样做。我如何在这里实现该功能或还能做什么?
to set-farm-in-radius [d]
move-to one-of patches with [not any? other patches in-radius d with
[belongs-to != nobody]]
set farm patches in-radius farm-size
ask farm [set belongs-to myself]
let c random 6 + 61
ask farm [set pcolor c]
end
我希望它能奏效,因为“移动到一个补丁程序”命令似乎非常简单。
答案 0 :(得分:0)
因此,move-to one-of patches
是一个非常安全的命令,在乌龟环境中运行时,它绝不会失败。
但是您正在做更多的事情:
move-to one-of patches with [not any? other patches in-radius d with [belongs-to != nobody]]
因此patches with [not any? other patches in-radius d with [belongs-to != nobody]]
可以为其中的代理集提供0个补丁。并且one-of
空代理集将为您提供nobody
。
所以类似的方法可能会更好:
let open-patches patches with [not any? other patches in-radius d with [belongs-to != nobody]]
ifelse (any? open-patches) [
move-to one-of open-patches
set farm patches in-radius farm-size
ask farm [set belongs-to myself]
let c random 6 + 61
ask farm [set pcolor c]
] [
; handle the case where there are no open patches...
]
请注意,编写代码后,所有“农场”看起来都很容易被占用,并且没有合适的开放空间,具体取决于您拥有多少只海龟。