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

时间:2017-10-09 02:57:29

标签: list netlogo agent-based-modeling

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

问题在于我无法绘制它们。

在界面中定义为全局变量: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。

我很感激任何帮助。

谢谢,

1 个答案:

答案 0 :(得分:4)

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

两种可能的解决方案:

  • reset-ticks移至setup程序的末尾。这样,当您的绘图更新时,size-set将被正确初始化。除非你有特别的理由不这样做,否则这是你应该选择的解决方案。 NetLogo中的标准是仅在reset-ticks结束时致电setup

  • 除非你有充分的理由,否则你不应该这样做,但你的绘图陈述中也可能有某种“保护条件”:if is-list? size-set [ plotxy ticks item 0 size-set ]。请注意使用plotxy代替plot来确保您仍然在正确的 x 位置进行绘图,即使您的保护条件会导致您跳过某些刻度。