NetLogo : nw:save-节点的矩阵排序
NetLogo : nw:save-matrix ordering of the nodes
我正在使用网络扩展在 NetLogo 5.1 中生成不同类型的网络。
我使用 nw:save-matrix 来存储网络的未加权连接矩阵,然后我将其加载到 R 中以执行一些更高级的计算。
在这个矩阵中,我想知道哪一行/哪一列对应于哪只乌龟。我首先认为顺序只是 [who 的递增顺序](即矩阵的第 1 行/第 1 列将仅对应于 ID 最低的海龟)。不幸的是,情况似乎并非如此。
我尝试了 nw:set-context 的不同规范,目的是在网络上下文中对海龟进行排序。例如:
nw:set-context (turtle-set sort turtles)) (link-set sort links)
nw:set-context (turtle-set map [turtle ?] (sort [who] of turtles))
(link-set sort links)
我什至通过他们的 [who] 明确指定了每只乌龟 :
nw:set-context (turtle-set (turtle 80) (turtle 117) (turtle 140) (turtle 153) ......
但是这些尝试都没有成功...我还注意到顺序不是随机的。例如,我知道入度最高的节点是海龟 80,但是 nw:save-matrix 产生的矩阵总是对应于第 766 行/列。
这也是 link 订购的问题吗?知道 nw:save-matrix 是如何工作的吗?我应该使用另一种策略在 R 中获得这个“有序”连接矩阵吗?
最佳,
目前没有一致的排序。然而,这不是故意的。我为它创建了一个错误:https://github.com/NetLogo/NW-Extension/issues/151
作为解决方法,您实际上可以非常轻松地自己生成矩阵文件。像这样的东西就可以做到,尽管它包括所有链接和海龟,而不仅仅是上下文中的那些。如果您使用的是有限的上下文,那么应该不会太难调整:
to save-matrix [ filename ]
if file-exists? filename [ file-delete filename ]
file-open filename
let turtle-list sort turtles
foreach turtle-list [
let source ?
foreach turtle-list [
let target ?
ifelse [ link-neighbor? target ] of source [
file-type "1 "
] [
file-type "0 "
]
]
file-print ""
]
file-close
end
我没有机会测试这个,但它应该可以解决问题。
已使用更正的代码进行测试和更新。
我正在使用网络扩展在 NetLogo 5.1 中生成不同类型的网络。
我使用 nw:save-matrix 来存储网络的未加权连接矩阵,然后我将其加载到 R 中以执行一些更高级的计算。
在这个矩阵中,我想知道哪一行/哪一列对应于哪只乌龟。我首先认为顺序只是 [who 的递增顺序](即矩阵的第 1 行/第 1 列将仅对应于 ID 最低的海龟)。不幸的是,情况似乎并非如此。
我尝试了 nw:set-context 的不同规范,目的是在网络上下文中对海龟进行排序。例如:
nw:set-context (turtle-set sort turtles)) (link-set sort links)
nw:set-context (turtle-set map [turtle ?] (sort [who] of turtles)) (link-set sort links)
我什至通过他们的 [who] 明确指定了每只乌龟 :
nw:set-context (turtle-set (turtle 80) (turtle 117) (turtle 140) (turtle 153) ......
但是这些尝试都没有成功...我还注意到顺序不是随机的。例如,我知道入度最高的节点是海龟 80,但是 nw:save-matrix 产生的矩阵总是对应于第 766 行/列。
这也是 link 订购的问题吗?知道 nw:save-matrix 是如何工作的吗?我应该使用另一种策略在 R 中获得这个“有序”连接矩阵吗?
最佳,
目前没有一致的排序。然而,这不是故意的。我为它创建了一个错误:https://github.com/NetLogo/NW-Extension/issues/151
作为解决方法,您实际上可以非常轻松地自己生成矩阵文件。像这样的东西就可以做到,尽管它包括所有链接和海龟,而不仅仅是上下文中的那些。如果您使用的是有限的上下文,那么应该不会太难调整:
to save-matrix [ filename ]
if file-exists? filename [ file-delete filename ]
file-open filename
let turtle-list sort turtles
foreach turtle-list [
let source ?
foreach turtle-list [
let target ?
ifelse [ link-neighbor? target ] of source [
file-type "1 "
] [
file-type "0 "
]
]
file-print ""
]
file-close
end
我没有机会测试这个,但它应该可以解决问题。
已使用更正的代码进行测试和更新。