首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NetLogo:邻居和特征向量

NetLogo:邻居和特征向量
EN

Stack Overflow用户
提问于 2017-07-05 18:27:24
回答 1查看 125关注 0票数 0

我想计算邻居和乌龟的邻居,找出一种计算特征向量中心性的方法。因为我不能让NW:扩展程序工作,我的老师也不能。我想过自己构建一个方法。因为在第一轮演讲之前我没有那么多的时间,所以我尽量只计算邻居和乌龟的邻居。我决定有一个乌龟自己的,它计算所有邻居,然后将所有邻居和邻居邻居相加。但是我被困在我的脑海里,不能让它工作。设置Neighborscount计数(链接邻居)

有谁有什么想法吗?另外,让特征向量中心性发挥作用的最后一种方法将非常受欢迎。

EN

回答 1

Stack Overflow用户

发布于 2017-07-05 23:37:00

首先,我的主要建议是让NW正常工作。我很乐意为你效劳。

除此之外,下面假设您使用的是无向网络。如果这不是演员阵容,让我知道。

您所描述的方法的问题是,它会多次计算一些邻居的邻居。相反,您可以获取邻居的邻居代理集,然后对其进行计数:

代码语言:javascript
运行
复制
to-report neighbors-of-neighbors
  report turtle-set [ link-neighbors ] of link-neighbors
end

然后,[ count neighbors-of-neighbors ] of turtle 0将给出turtle 0的邻居的邻居数量。

现在,有几点:

这将包括海龟本身,因为海龟始终是其链路邻居的链路邻居。如果您不想包含海龟本身,那么只需在其中添加一个other[ count other neighbors-of-neighbors ] of turtle 0

这将不包括作为海龟0的链接邻居的海龟,但不链接到海龟0的任何其他邻居。要在中添加这些内容,您可以考虑如下过程:

代码语言:javascript
运行
复制
to-report turtles-in-link-radius [ n ]
  let result turtle-set self
  repeat n [
    set result (turtle-set result [ link-neighbors ] of result)
  ]
  report result
end

例如,可以像这样使用:[ count turtle-in-link-radius 2 ] of turtle 0来计算所有的海龟,最多从海龟0开始计算2跳。这个报告器具有与nw:turtles-in-radius相同的行为,尽管它的速度要慢得多。

现在,我首先注意到你的想法会多次计算一些乌龟。假设你对特征向量中心性之类的东西感兴趣,也许这就是你想要的。在这种情况下,您可以这样做:[ sum [ count link-neighbors ] of link-neighbors ] of turtle 0来获取它,而不必为海龟自己的东西而烦恼。也就是说,如果你使用海龟自己的,你实际上可以计算特征向量中心度本身:

代码语言:javascript
运行
复制
turtles-own [
  ...
  next-ec ;; helper variable for iteratively computing eigenvector-centrality
  eigenvector-centrality
  ...
]

to calculate-eigenvector-centralities
  ask turtles [
    set eigenvector-centrality 1
  ]
  repeat 100 [  ;; the higher this number, the more accurate the value. NW uses 100
    ask turtles [
      set next-ec sum [ eigenvector-centrality ] of link-neighbors
    ]
    let max-ec max [ next-ec ] of turtles
    ask turtles [
      set eigenvector-centrality next-ec / max-ec ;; normalize
    ]
  ]
end

调用calculate-eigenvector-centralities计算所有海龟的特征向量中心度。然后,海龟的特征向量中心将被存储在eigenvector-centrality中。请注意,此代码不适用于断开连接的网络:每个组件都必须独立标准化,这就是NW所做的,但在NetLogo中,如果不使用NW,就没有简单的方法可以做到这一点。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44923639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档