Netlogo 问:如何计算';集线器集成';/有多少链接邻居也是我的链接邻居?

Netlogo 问:如何计算';集线器集成';/有多少链接邻居也是我的链接邻居?,netlogo,Netlogo,在我正在构建的模型中,我需要让海龟计算其链路邻居的“集线器集成”。所谓“集线器集成”(HI),我指的是以下内容:HI=共享邻居的数量/n-of-your-neights HI是“海龟x”分配给与她共享链接的每一只海龟的值(我们将每只链接的海龟称为“海龟y”)。因此,HI的值是链接到turtle x和y的节点数与链接到turtle y的节点数的分数 我引用了Netlogo字典和Wilensky和Rand的《基于代理的建模简介》一书。尽管如此,如果没有这个社区的帮助,我真的很难(如果不是不可能的话)

在我正在构建的模型中,我需要让海龟计算其链路邻居的“集线器集成”。所谓“集线器集成”(HI),我指的是以下内容:HI=共享邻居的数量/n-of-your-neights

HI是“海龟x”分配给与她共享链接的每一只海龟的值(我们将每只链接的海龟称为“海龟y”)。因此,HI的值是链接到turtle x和y的节点数与链接到turtle y的节点数的分数

我引用了Netlogo字典和Wilensky和Rand的《基于代理的建模简介》一书。尽管如此,如果没有这个社区的帮助,我真的很难(如果不是不可能的话)学习更高级的程序

编辑3---

我非常感谢得到的所有帮助。我终于有了一个运行程序

为了记录在案,“集线器集成程序”的最终代码如下:

to find-hi
  ask turtles [
  foreach  sort link-neighbors [
  ask ? [
  if count [my-links] of self > 1 and count [my-links] of myself > 1 [
  let hi ( calc-HI self myself  )
  run-procedure  ] ] ] ]
end


to-report calc-HI [ XX YY ]
  let sizeX count [my-links] of XX
  let sizeY count [my-links] of YY
  let sizeXY count (turtle-set [link-neighbors] of XX [link-neighbors] of YY)
  report (sizeX + sizeY - sizeXY) / sizeY
end

如果您在reporter中使用print,请尝试改用
report

例如:


有关的更多信息。

我想你应该数一数邻居的数量,而不是全部列出

计算数量的一个共同方法是计算X的邻居,计算Y的邻居,计算X或Y的邻居。同时是X和Y邻居的海龟仍然只会在agentset中出现一次,所以交集的大小是单个计数的和,然后减去并集的大小

此代码期望您指定两个海龟,并从海龟XX的角度报告海龟YY的HI(请注意,没有检查两个海龟之间是否存在链接)。我不确定我是否理解您想要的计算,但您可以根据需要修改

to-report calc-HI [ XX YY ]
  let sizeX count [my-links] of XX
  let sizeY count [my-links] of YY
  let sizeXY count (turtle-set [link-neighbors] of XX [link-neighbors] of YY)
  report (sizeX + sizeY - sizeXY) / sizeY
end

谢谢你的回复。你说得对。报告程序是一条路要走。但是,我仍然在过程中遇到错误://`要报告分子,请询问链接邻居[报告计数[筛选成员?邻居中的谁我的邻居中的谁]]结束`//--我希望分子报告共享邻居的数量。但是我肯定是在使用filter命令时出错了。您是否更改了
报告的所有
打印内容?因为这是你首先要做的。这里似乎有一个概念上的困难。如果turtle X有3个链路邻居(Y1、Y2和Y3),则HI的值可能会因每个链路邻居而异。因此,需要将Y(可能还有X)传递给HI计算过程。否则,它怎么知道该计算哪个呢?我想我明白你的意思了。为了确定,请指定将Y传递给hi计算程序是什么意思?请参阅我的答案,了解当程序被称为“谢谢”时两个海龟被提名的程序。你写的是对的,但我对报告的内容有点困惑。我只需要报告x和y之间共享海龟的数量。我不知道为什么sizeY/(sizeX+sizeY-sizeXY)。我在最初的评论中添加了一个回复,以澄清程序。您的粗体公式包含共享链接数/邻居链接数。这是我用的公式。对不起,我才意识到。你建议的程序计算的是HI,而不仅仅是提名人。太好了!我还有最后一个问题。当我运行这个过程时——询问turtles[if[calc HI]of link Neights=1[run procedure]——我得到了错误“calc HI expected 2 inputs”。为什么会这样?calc HI不是一个值吗?这个过程有两个输入(名为XX和YY),所以你需要传递这两个turtles(例如
calc HI turtle 0 turtle 1
将从turtle 0的角度计算turtle 1的HI
to-report calc-HI [ XX YY ]
  let sizeX count [my-links] of XX
  let sizeY count [my-links] of YY
  let sizeXY count (turtle-set [link-neighbors] of XX [link-neighbors] of YY)
  report (sizeX + sizeY - sizeXY) / sizeY
end