Netlogo:设置一个变量为某种颜色的邻居数
Netlogo: Set a variable to the number of neighbors of a certain color
我只是想计算具有特定颜色的补丁并将该计数添加到变量中。然后,如果邻居的数量超过阈值,补丁会改变颜色,但我得到一个 Set expected 2 输入。我认为这是一个基本问题,但阅读后我没有得到我需要的结果。
patches-own
[reforestar
;deforestar
;temperatura
;humedad
;dosel
]
to setup
clear-all
set-default-shape turtles "frog top"
ask patches with [
pxcor <= 30 and
pxcor >= min-pxcor and
pycor <= 60 and
pycor >= min-pycor ] [
set pcolor 35 ;
]
;potrero
ask patches with [
pxcor <= 60 and
pxcor >= 30 and
pycor <= 60 and
pycor >= min-pycor ] [
set pcolor 44 ;
]
;borde
ask patches with [
pxcor <= 90 and
pxcor >= 60 and
pycor <= 60 and
pycor >= min-pycor ] [
set pcolor 66 ;
]
end
to go
ask patches [ deforestacion ]
end
to potrerizar
if pcolor = 44 [
ask patches [ set potrerizado count neighbors with [pcolor = 35] ]]
end
to deforestacion
if potrerizado >= 3 [if random 100 <= tasa-deforestacion
[set pcolor = 35]]
提前致谢
关于 set
,确实是因为 set
需要两个输入:要设置的变量及其新值,这两个输入之间没有任何其他符号 - see here。您在 to setup
.
中也正确使用了它
在 NetLogo 中,=
用于评估条件(即它需要两个输入,一个在右边,一个在左边,它 returns true
或false
)。因此,写作
set pcolor = 35
等同于写
set true ; if the patch has pcolor = 35, or
set false ; if the patch has pcolor != 35.
none 其中在 NetLogo 中有意义。
至于其余的:目前,您的代码所做的完全取决于界面中设置的 potrerizado
的值:
- 如果小于 3,则没有任何反应;
- 如果至少为3,补丁将有一定几率变成棕色(
set pcolor 35
)。这意味着,迟早,它们都会变成棕色。
在代码中,目前从未使用 to potrerizar
。
无论如何,我可以看到 to potrerizar
要求补丁更改 potrerizado
,这是一个 global
变量。
可能您想要的是 potrerizado
作为 patches-own
而不是 global
,但这只是我根据我在这里看到的内容的猜测。
不太重要,你有一些多余的条件:每个补丁总是有 pxcor >= min-pxcor
(以及你在 to setup
中的类似条件)。
我只是想计算具有特定颜色的补丁并将该计数添加到变量中。然后,如果邻居的数量超过阈值,补丁会改变颜色,但我得到一个 Set expected 2 输入。我认为这是一个基本问题,但阅读后我没有得到我需要的结果。
patches-own
[reforestar
;deforestar
;temperatura
;humedad
;dosel
]
to setup
clear-all
set-default-shape turtles "frog top"
ask patches with [
pxcor <= 30 and
pxcor >= min-pxcor and
pycor <= 60 and
pycor >= min-pycor ] [
set pcolor 35 ;
]
;potrero
ask patches with [
pxcor <= 60 and
pxcor >= 30 and
pycor <= 60 and
pycor >= min-pycor ] [
set pcolor 44 ;
]
;borde
ask patches with [
pxcor <= 90 and
pxcor >= 60 and
pycor <= 60 and
pycor >= min-pycor ] [
set pcolor 66 ;
]
end
to go
ask patches [ deforestacion ]
end
to potrerizar
if pcolor = 44 [
ask patches [ set potrerizado count neighbors with [pcolor = 35] ]]
end
to deforestacion
if potrerizado >= 3 [if random 100 <= tasa-deforestacion
[set pcolor = 35]]
提前致谢
关于 set
,确实是因为 set
需要两个输入:要设置的变量及其新值,这两个输入之间没有任何其他符号 - see here。您在 to setup
.
在 NetLogo 中,=
用于评估条件(即它需要两个输入,一个在右边,一个在左边,它 returns true
或false
)。因此,写作
set pcolor = 35
等同于写
set true ; if the patch has pcolor = 35, or
set false ; if the patch has pcolor != 35.
none 其中在 NetLogo 中有意义。
至于其余的:目前,您的代码所做的完全取决于界面中设置的 potrerizado
的值:
- 如果小于 3,则没有任何反应;
- 如果至少为3,补丁将有一定几率变成棕色(
set pcolor 35
)。这意味着,迟早,它们都会变成棕色。
在代码中,目前从未使用 to potrerizar
。
无论如何,我可以看到 to potrerizar
要求补丁更改 potrerizado
,这是一个 global
变量。
可能您想要的是 potrerizado
作为 patches-own
而不是 global
,但这只是我根据我在这里看到的内容的猜测。
不太重要,你有一些多余的条件:每个补丁总是有 pxcor >= min-pxcor
(以及你在 to setup
中的类似条件)。