绘制非连续代理集的属性

Plotting attribute of a non-consecutive agentset

如何在 netlogo 中绘制代理集的属性,每个都用不同的笔。 考虑到还有其他类型的代理,并且要绘制的代理集的 who 编号在开始时并不都是连续的 distribution/creation。

我认为你的问题确实是,"how can I associate each agent in an agentset with a pen?" 让我们调用代理集 myset

  1. 如果代理集在模拟过程中是静态的(没有代理创建或死亡),那么你可以引入全局mylst并设置一次到代理列表:set mylst [self] of myset .然后,您可以根据需要将笔与列表成员相关联。 (例如,您还可以制作一个笔列表,以便代理在 mylst 中的索引与其在 mypens 中的笔索引相同。)

  2. 您可以使用 table 并将每个笔名映射到代理。 (我可能最喜欢这个解决方案。)

  3. 如果这些代理构成一个品种,您可以为该品种指定一个 pen 属性,并将其设置为其 pen 名称。 (我不喜欢这个解决方案的唯一原因是它纯粹为了 GUI 目的而干预代理的属性,我尽量避免这种情况。)

编辑:

由于您正在创建和销毁您的代理,但您希望每个代理都控制自己的笔,因此您会遇到一种可能导致大量簿记的奇怪情况。我将建议解决方案 3:向您的代理添加 pen 属性。现在,每次创建代理时,都将以下内容作为其初始化的一部分:

set pen (word "pen" who)
set-current-plot "myplot"
create-temporary-plot-pen pen
plot attribute

此处 "myplot" 是您为此使用的图的名称,attribute 是您正在绘制的属性的名称。然后每个滴答声你都可以拥有这些代理

set-current-plot "myplot"
set-current-plot-pen pen
plot attribute

如果你想通过笔的颜色来区分代理,你将不得不做一些额外的工作。 (有关线索,请参阅 scale-color 命令。)