Netlogo 如何让海龟比较来自两个不同补丁的变量?
在我的模型中,面片有一个称为接近度的变量。我希望我的海龟们将自己的补丁与另一个补丁(我称之为候选补丁)的接近度值进行比较,如果值更高,则移动到候选补丁 以下是我尝试过的:Netlogo 如何让海龟比较来自两个不同补丁的变量?,netlogo,Netlogo,在我的模型中,面片有一个称为接近度的变量。我希望我的海龟们将自己的补丁与另一个补丁(我称之为候选补丁)的接近度值进行比较,如果值更高,则移动到候选补丁 以下是我尝试过的: patches-own [proximity occupied?] turtles-own [attachment-rate] to move-patch let my-proximity proximity let candidate-patches patches with [occupied? = FALSE
patches-own [proximity occupied?]
turtles-own [attachment-rate]
to move-patch
let my-proximity proximity
let candidate-patches patches with [occupied? = FALSE and proximity > my-proximity]
if (my-proximity - proximity) < attachment-rate
[ move-to max-one-of candidate-patches [proximity]
]
end
patches自己的[近距离占用?]
海龟自有[附着率]
移动补丁
让我靠近
让候选修补程序使用[Occessed?=FALSE和approxity>my approxity]修补程序
如果(我的接近度-接近度)<附着率
[移动到最多一个候选修补程序[接近]
]
结束
在我的代码中,这不是正在发生的事情。海龟们正在比较自己的斑块与自身的接近度值,因此不会移动 我的接近度-接近度是从自身中减去一个数字,因此将始终为0。但这并不能解释为什么海龟不动,它应该让它们一直动。因此,问题可能是您没有为海龟设置连接速率(默认值为0,除非您告诉它是其他值) 如果你重新组织你的代码一点,它应该工作,更容易阅读逻辑。我认为,只有当距离的改善足够大时,您才希望海龟移动(尽管代码的编写方式是,如果距离也只有很小的减少,它就移动):
to move-patch
let candidate max-one-of other patches with [not occupied?] [proximity]
if [proximity] of candidate > proximity + attachment-rate [move-to candidate]
end