Netlogo 如何解决错误:观察者无法运行代码

Netlogo 如何解决错误:观察者无法运行代码,netlogo,Netlogo,运行以下代码时: to modify let elements n-values 7 [(list)] ask turtles [ let a item leader elements set a lput (who + 1) a set elements replace-item leader elements a ] let CS [] let prevCS CS set CS 0 foreach elements [ show element

运行以下代码时:

to modify
  let elements n-values 7 [(list)]
  ask turtles [
  let a item leader elements
    set a lput (who + 1) a
    set elements replace-item leader elements a 
]
  let CS []
  let prevCS CS
  set CS 0

  foreach elements [
show elements  
print ("elements")     
    if length ? > 0 [
    set S lput (sort ?) S
      set CS CS + getValue (sort ?)
      ]
  ]
end
我得到的错误如下:

this code can't be run by the observer
error while observer running IF 
在线:

如果长度是多少?>0

我不知道如何纠正错误,任何帮助都将不胜感激

提前谢谢你。

普山

正如JenB所建议的,您真的应该升级到NetLogo 6.1.1。版本5.3.1不再受支持,其他人回答您的问题将越来越困难

也就是说,让我推测一个答案。在代码段中

 if length ? > 0 [
  set S lput (sort ?) S
  set CS CS + getValue (sort ?)
 ]
您可以引用变量S和过程getValue。S在中没有定义,所以它必须是一个全局变量(应该可以),或者是一个turtles自己的变量(不可以)。观察员无法直接访问它。类似地,getValue可能被设计为由海龟而不是观察者运行,这也会给您带来相同的错误

希望这有帮助,
Charles

您使用的是旧版本的NetLogo吗?这个语法已被取代。这将使我们很难提供帮助,因为我们无法测试Netlogo 5.3.1中的任何代码