NetLogo:使用补丁自有变量会给出错误消息
NetLogo: the use of a patches-own variable gives an error-message
我对 turtle/patch 上下文和观察者上下文之间的区别有疑问。
问题出现在我的代码的最后一行。我想要一定数量的补丁来做某事,这个数量由我在上面定义的变量定义。当我使用 ask n-of 5 patches 它工作正常,但是当我用变量替换 5 时它会给出错误消息(你不能在 turtle/patch 上下文中使用 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-ontbossing
是一个 patches-own
变量。因此,您要求 NetLogo 根据所有补丁之间可能不同的变量询问一些补丁。这与说 ask n-of ( pcolor / 10 ) patches
相同 - 在这种情况下它并没有真正意义。 n-of
需要它的参数是一个单一的数值,这就是 5 起作用的原因。据我所知,出现此特定错误的原因是,从 NetLogo 的角度来看,您正在尝试访问 patches-own
变量,然后直接进入 tick
调用。将 kans-op-ontbossing
替换为观察者可以访问的值,您应该可以开始了。
我对 turtle/patch 上下文和观察者上下文之间的区别有疑问。 问题出现在我的代码的最后一行。我想要一定数量的补丁来做某事,这个数量由我在上面定义的变量定义。当我使用 ask n-of 5 patches 它工作正常,但是当我用变量替换 5 时它会给出错误消息(你不能在 turtle/patch 上下文中使用 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-ontbossing
是一个 patches-own
变量。因此,您要求 NetLogo 根据所有补丁之间可能不同的变量询问一些补丁。这与说 ask n-of ( pcolor / 10 ) patches
相同 - 在这种情况下它并没有真正意义。 n-of
需要它的参数是一个单一的数值,这就是 5 起作用的原因。据我所知,出现此特定错误的原因是,从 NetLogo 的角度来看,您正在尝试访问 patches-own
变量,然后直接进入 tick
调用。将 kans-op-ontbossing
替换为观察者可以访问的值,您应该可以开始了。