Netlogo:如何绘制节点的程度与平均值"奖励"有这种程度的海龟?

时间:2017-08-14 12:03:44

标签: netlogo

我正在构建一个试图模拟基于网络的市场的模型。在这个模型中,海龟/节点得到一个名为 points 的奖励,这是一个海龟自己的变量。

我现在试图绘制节点的程度与具有给定程度的节点具有的平均点数的图表。我试图通过从界面选项卡创建一个图来做到这一点,但我无法使这个工作。

以下是绘图设置窗口的图像。

enter image description here

enter image description here

有人知道我该怎么做才能做到这一点?

另外,我一直得到这些"运行时错误:无法找到空列表的最大值"在我创建的所有图/直方图中。目前这并不是什么大不了的,因为它们似乎工作得很好,但是如果你知道为什么这些出现请告诉我!

事先感谢,

卡洛斯

1 个答案:

答案 0 :(得分:1)

为了简单起见并避免重载您的绘图设置,我喜欢使用to-report程序来完成这样的操作。作为一个快速示例,请尝试以下设置:

海龟自己的[积分程度]

to setup
  ca
  crt 50 [
    set degree 5 + random 5    
    set points random 10
    setxy random-xcor random-ycor
  ] 
  reset-ticks
end

每个to-report为现有度数列表,每个度数的平均点数,以及这些平均点值的最大值:

to-report degrees-list 
  report sort remove-duplicates [degree] of turtles 
end

to-report avg-points-list
  let avg-list map [ i ->
    mean [points] of turtles with [ degree = i ]
  ] degrees-list
  report avg-list
end

to-report max-avg
  report precision ( max avg-points-list + 1 ) 2
end

在此示例中,degrees-list报告[ 1 2 3 4 5 ]avg-points-list报告[6.5 3.9285714285714284 6 3.75 4.2]max-avg报告类似7.5的内容 - 请注意当然,由于设置是随机的,因此确切的值会有所不同。

现在,您可以设置绘图窗口:

Plot setup details

实际绘图由foreach中的plot pen原语处理,plotxy使用avg-points-list绘制degrees-list中的点值与{{1}中的对应值}}。应该给出一个看起来像这样的情节:

Example plot

希望这就是你所追求的!