NetLogo:使用补丁自带的变量会发出错误消息



我对turtle/patch上下文和observer上下文之间的差异有问题。问题出现在我的代码的最后一行。我想要一定数量的补丁来做一些事情,这个数量是由我上面定义的一个变量定义的。当我使用ask-n-of 5个补丁时,它可以很好地工作,但当我用变量替换5时,它会给出一条错误消息(你不能在乌龟/补丁上下文中使用tick,因为tick只是观察者(。有人知道为什么它不起作用吗?

patches-own [kans-op-ontbossing]

to setup
clear-all
ask patches [if (random 100) < bosdensiteit [set pcolor green]]
ask n-of world-height patches with [pxcor = pycor][set pcolor blue]
ask n-of world-height patches with [pxcor = max-pxcor / 2] [set pcolor grey]
ask n-of aantal-nederzettingen patches with [pcolor != blue and pcolor != grey] [set pcolor white]
reset-ticks
end
to go
if ticks = 75 [stop]
ask patches [set kans-op-ontbossing ontbossingsgevoeligheid + houtprijs + vraag-naar-landbouwgrond]
ontbos
tick
end
to ontbos
ask patches with [pcolor = green and (pxcor > 30 or pycor > 30)]
[if count (neighbors4 with [pcolor = grey]) >= 1 or count (neighbors4 with [pcolor = blue]) >= 1 or count (neighbors with [pcolor = white]) >= 1
[if random 300 < kans-op-ontbossing [set pcolor brown]]]

ask n-of (kans-op-ontbossing / 10) patches with [pcolor = grey and pxcor = ((max-pxcor / 2) + ticks)][ask patch-at 1 0 [set pcolor grey]]
end

谢谢!

kans-op-ontbossingpatches-own变量。因此,您要求NetLogo根据所有补丁之间可能不同的变量询问一定数量的补丁。这和说ask n-of ( pcolor / 10 ) patches是一样的——在这种情况下,它实际上没有意义。n-of需要它的自变量是一个单一的数值,这就是5起作用的原因。据我所知,出现这个特定错误的原因是,从NetLogo的角度来看,您试图访问patches-own变量,然后直接进入tick调用。将kans-op-ontbossing替换为观察者可以访问的值,您应该可以使用它。

最新更新