在我的模型中,补丁具有一个称为接近性的变量。我希望我的海龟将自己的补丁与另一个补丁(称为“候选补丁”)的接近度值进行比较,如果值更高,则移至候选补丁。
这是我尝试过的:
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
在我的代码中,这不是正在发生的事情。乌龟正在将自己的贴片与其自身的接近度值进行比较,因此没有移动。
答案 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