【问题标题】:NetLogo : nw:save-matrix ordering of the nodesNetLogo : nw:save-matrix ordering of the nodes
【发布时间】:2015-05-23 00:47:41
【问题描述】:

我正在使用网络扩展在 NetLogo 5.1 中生成不同类型的网络。

我使用 nw:save-matrix 来存储网络的未加权连接矩阵,然后将其加载到 R 中以执行一些更高级的计算。

在这个矩阵中,我想知道哪条线/列对应于哪只海龟。我首先认为顺序只是[谁]的递增顺序(即线/矩阵的第 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)) (链接集排序链接)

我什至通过 [who] 明确指定了每只海龟:

nw:set-context (turtle-set (turtle 80) (turtle 117) (turtle 140) (turtle 153) ......

但是这些尝试都没有成功……我还注意到顺序不是随机的。例如,我知道度数最高的节点是海龟 80,但是 nw:save-matrix 生成的矩阵总是对应于第 766 行/列。

这也是链接排序的问题吗?关于 nw:save-matrix 实际工作原理的任何想法?我应该使用另一种策略在 R 中获取这个“有序”连接矩阵吗?

最好的,

【问题讨论】:

    标签: r social-networking netlogo


    【解决方案1】:

    目前,没有一致的排序。然而,这不是故意的。我为它创建了一个错误: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
    

    我没有机会对此进行测试,但它应该可以解决问题。

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

    【讨论】:

    • 感谢 Bryan 的澄清和非常有用的代码!
    猜你喜欢
    • 2022-12-27
    • 2019-06-14
    • 2020-12-19
    • 2022-12-01
    • 2015-05-20
    • 1970-01-01
    • 2022-12-26
    • 2022-12-15
    • 2022-12-01
    相关资源
    最近更新 更多