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

我没有机会测试这个,但它应该可以解决问题。

已使用更正的代码进行测试和更新。