根据agenset中的特定值对代理进行分组

时间:2014-07-25 00:14:18

标签: netlogo

GIVEN:在下一个时间步骤(勾选)中给出一只乌龟的代理集,其中每只乌龟都有它想要移动的补丁。

问题:两只或更多只乌龟可能拥有他们想要移动的相同补丁集

要解决:然后我决定根据海龟的另一个参数来决定哪个将移动到那个补丁并且静止不动。

CONSTRAINT:因此,每个补丁只有一只允许的乌龟。

我如何对此进行编码,agentset没有必要的功能,如删除重复项等。

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以创建包含每只海龟的目标补丁的所有变量的列表(假设这个海龟变量被称为 next-patch )。然后你循环遍历列表,如果一个补丁出现两次(如果j = i),你问乌龟用 next-patch = i选择另一个补丁。

答案 1 :(得分:1)

使用table扩展程序。用ask循环海龟,创建一个表格,将补丁坐标映射到想要移动到那里的海龟列表。写一个resolve-conflicts记者,从这样一个列表中挑选一只乌龟。使用resolve-conflicts遍历表格,为每个目标挑选一只乌龟,并将其移动到目标补丁。

我希望table扩展名应添加groupby原语。这种需求非常普遍。