在 Netlogo 中不断更新的列表中绘制一个项目

plot an item in a list which keeps updating in Netlogo

我在界面中为一些生产者代理定义了一组属性作为全局变量,然后将它们分配给一个列表(在设置中),该列表也是全局的,代理将使用其内容。

问题是我无法绘制它们。

在界面中定义为全局变量:p1-size = 9, p2-size = 13, p3-size = 14.5, p1-rate = 80, p2-rate = 50, p3-rate = 98

to setup

  ca  ; clear-all
  reset-ticks
  file-close-all
  setup-patches
  create-prod ; create producers
  set size-set ((list p1-size p2-size p3-size))
  set rate-set ((list p1-rate p2-rate p3-rate)) 

我想绘制和监控利率的变化情况,但我在定义这个时遇到了错误:

plot item  0 size-set

大小设置是全局的,但错误显示“ITEM 应为字符串或列表,但得到的是数字 0。

对于这方面的任何帮助,我将不胜感激。

谢谢,

reset-ticks 原语具有更新绘图的副作用。在您的代码中,您在 reset-ticks 之前调用 设置 size-set 的值,因此在您的情节调用 plot item 0 size-set 时,您的 size-set 全局仍然有其默认值 0

两个可能的解决方案:

  • reset-ticks 移动到 setup 过程的末尾。这样, size-set 将在您的绘图更新时正确初始化。除非您有非常特殊的理由不这样做,否则这是您应该选择的解决方案。 NetLogo中的标准是只在setup.

  • 的末尾调用reset-ticks
  • 除非你有充分的理由,否则你不应该这样做,但你也可以在你的策划声明中加入某种"guard condition":if is-list? size-set [ plotxy ticks item 0 size-set ]。请注意 plotxy instead of plot 的使用,以确保您仍在正确的 x 位置绘图,即使您的保护条件导致您跳过一些刻度。