【发布时间】:2019-03-12 18:46:59
【问题描述】:
我有一个 NetLogo 模型,其中代理从其他代理检索多个变量列表。返回这些列表的顺序至关重要,因为每个列表中的变量都相互关联。但是,我相信每次都会以随机顺序从其他代理返回列表。例如,采取以下简化的测试用例:
turtles-own [testlist1 testlist2 testlist3 testlist4]
to setup
random-seed 1
clear-all
create-turtles 5
ask turtles [
create-links-with other turtles
set testlist1 []
set testlist2 []
set testlist3 []
set testlist4 []
set testlist1 lput [who] of self testlist1
set testlist2 lput [who] of self testlist2] ;identical to testlist1
end
to go
ask turtles[
set testlist3 reduce sentence [testlist1] of link-neighbors
show testlist3
set testlist4 reduce sentence [testlist2] of link-neighbors
show testlist4]
end
对于我的用例,testlist3 和 testlist4 中的值的顺序应该相同,但它们的顺序随机不同。输出:
(turtle 2): [0 3 1 4]
(turtle 2): [3 4 1 0]
(turtle 3): [4 1 0 2]
(turtle 3): [1 0 2 4]
(turtle 0): [4 2 3 1]
(turtle 0): [3 4 2 1]
(turtle 1): [0 4 2 3]
(turtle 1): [4 2 3 0]
(turtle 4): [0 2 1 3]
(turtle 4): [0 3 2 1]
我的问题:在给定过程中以相同顺序从代理集返回多个列表(例如上面的 testlist 和 testlist2)的最佳方法是什么?
用turtle-set sort link-neighbors 替换link-neighbors 不起作用,因为在将排序列表转换回代理集后,代理集中的代理会以随机顺序调用。如果可能的话,我宁愿不必使用 matrix 扩展将整个模型从列表重构为矩阵。
【问题讨论】:
标签: netlogo