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