绘制非连续代理集的属性
Plotting attribute of a non-consecutive agentset
如何在 netlogo 中绘制代理集的属性,每个都用不同的笔。
考虑到还有其他类型的代理,并且要绘制的代理集的 who 编号在开始时并不都是连续的 distribution/creation。
我认为你的问题确实是,"how can I associate each agent in an agentset with a pen?" 让我们调用代理集 myset
。
如果代理集在模拟过程中是静态的(没有代理创建或死亡),那么你可以引入全局mylst
并设置一次到代理列表:set mylst [self] of myset
.然后,您可以根据需要将笔与列表成员相关联。 (例如,您还可以制作一个笔列表,以便代理在 mylst
中的索引与其在 mypens
中的笔索引相同。)
您可以使用 table
并将每个笔名映射到代理。 (我可能最喜欢这个解决方案。)
如果这些代理构成一个品种,您可以为该品种指定一个 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
命令。)
如何在 netlogo 中绘制代理集的属性,每个都用不同的笔。 考虑到还有其他类型的代理,并且要绘制的代理集的 who 编号在开始时并不都是连续的 distribution/creation。
我认为你的问题确实是,"how can I associate each agent in an agentset with a pen?" 让我们调用代理集 myset
。
如果代理集在模拟过程中是静态的(没有代理创建或死亡),那么你可以引入全局
mylst
并设置一次到代理列表:set mylst [self] of myset
.然后,您可以根据需要将笔与列表成员相关联。 (例如,您还可以制作一个笔列表,以便代理在mylst
中的索引与其在mypens
中的笔索引相同。)您可以使用
table
并将每个笔名映射到代理。 (我可能最喜欢这个解决方案。)如果这些代理构成一个品种,您可以为该品种指定一个
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
命令。)