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 truefalse)。因此,写作

set pcolor = 35

等同于写

set true   ; if the patch has pcolor = 35, or
set false  ; if the patch has pcolor != 35.

none 其中在 NetLogo 中有意义。


至于其余的:目前,您的代码所做的完全取决于界面中设置的 potrerizado 的值:

  1. 如果小于 3,则没有任何反应;
  2. 如果至少为3,补丁将有一定几率变成棕色(set pcolor 35)。这意味着,迟早,它们都会变成棕色。

在代码中,目前从未使用 to potrerizar

无论如何,我可以看到 to potrerizar 要求补丁更改 potrerizado,这是一个 global 变量。

可能您想要的是 potrerizado 作为 patches-own 而不是 global,但这只是我根据我在这里看到的内容的猜测。


不太重要,你有一些多余的条件:每个补丁总是有 pxcor >= min-pxcor(以及你在 to setup 中的类似条件)。