如何让乌龟比较两个不同补丁的变量?

时间:2019-08-27 12:20:44

标签: netlogo

在我的模型中,补丁具有一个称为接近性的变量。我希望我的海龟将自己的补丁与另一个补丁(称为“候选补丁”)的接近度值进行比较,如果值更高,则移至候选补丁。

这是我尝试过的:

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

在我的代码中,这不是正在发生的事情。乌龟正在将自己的贴片与其自身的接近度值进行比较,因此没有移动。

1 个答案:

答案 0 :(得分:1)

我的接近度-接近度是从其自身中减去一个数字,因此始终为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