NetLogo - 随机设置 - 每个补丁的随机值 - 错误

时间:2015-03-29 20:49:51

标签: netlogo

作为设置过程的一部分,我尝试使用滑块设置将显示的贴片密度并指定随机值。接口上的滑块用于密度范围0到100,并且使用接口上的输入设置补丁的随机值。这通常会在区域中设置为4.因此,如果设置了50%,则该过程将使用随机值分配50%的补丁。

当我这样做时,我收到以下错误:“预期命令”和代码中突出显示变量'error-count'。

;; The density of patches to be set with a random value is set using variable init-errors on interface.
;; Every patch uses a task which reports a random value.
;; The random value is set using variable error-count on interface
to setup-random
   ask patches [
     if (random-float 100.0) < init-errors
     [setup task random error-count]
   ]
end

2 个答案:

答案 0 :(得分:1)

您需要更改:

setup task random error-count

setup task [ random error-count ]

任何时候任务主体不仅仅是一个原语(&#34;简洁的任务语法&#34;),它需要用方括号括起来。您正在获取的错误消息是因为task random是有效的语法; NetLogo将其解释为task [ random ? ]的缩写。然后它不知道如何处理以下error-count,因此错误。

答案 1 :(得分:0)

我不完全清楚你正在使用的任务语法(特别是为什么setup位于该行的开头)或者为什么你想在这里使用任务 - 但这可能是一个区别编码风格。但NetLogo编译器让你知道它希望在单词random之后有一个命令,但得到一个值。由于随机确实需要一个值,我认为这与设置和任务元素有关。这是另一种做你想做的事情的方式,这可能更容易。我还将非零错误补丁变为绿色,以便您可以看到它们。此代码假定您在问题描述中定义了两个滑块。

patches-own [errors]

to setup-random
   ask patches [
     if (random-float 100.0) < init-errors
     [ set errors random error-count
       set pcolor green ]
   ]
end