我使用表扩展作为一系列代理所拥有的变量。
此表的内容包含引用另一个代理集(events
)的代理的值。
作为表格密钥,我使用e-ids
一个列表,其中包含who
品种中每个代理的events
个数字。
以下过程初始化表:
to setup-tables
ask walkers [
set we-tfound table:make
set we-interest table:make
foreach e-ids [ [?] -> table:put we-tfound ? 0
table:put we-interest ? 1 ] ]
ask links [
set popularity table:make
foreach e-ids [ [?] -> table:put popularity ? 0 ] ]
end
其他人的回答建议不要使用who
个数字,并使用例如构造ask agents [...]
来迭代代理。
但是,我不知道怎么可能是使用代理迭代table:keys
的最好方法,或者比使用id更好的方法。
非常感谢您的帮助
答案 0 :(得分:1)
由于代理不能用作表中的键,因此使用who
数字是完全合理的。这里的危险是,如果一只乌龟死了,你最终会得到一个与现有乌龟实际上并不相符的条目。 (这也是代理不允许作为表中的键的原因。)您可以is-turtle? turtle key
查看key
是否与现有的乌龟相对应。
要将table:keys
转换回代理集,您可以执行以下操作:
turtle-set map turtle table:keys my-table
因此,对于ask
表中键的所有海龟,你可以:
ask turtle-set map turtle table:keys my-table [ do-stuff ]
map turtle table:keys
将who
个数字列表转换为海龟列表。 turtle-set
然后将其转换为代理集。