如何修改优先附件模型

问题描述 投票:0回答:1

我正在尝试编写一种优先连接模型,其中每个新节点连接到 4 个旧节点,而不是一个。该程序的核心是一个选择 4 个节点列表的过程,其中每个节点出现在列表中的概率与其度数(即链路邻居数)成正比。这是代码:

举报寻找合作伙伴 让临时海龟对海龟进行分类 让结果[]

重复 4 [ 设置 temp-turtles 洗牌 temp-turtles 如果不为空?临时海龟[ 让总邻居总和(地图(计数链接邻居)临时海龟) 让我们选择随机浮动的总邻居 让胜利者无人知晓

  foreach temp-turtles [
    x ->
    let turtle-neighbors [count link-neighbors] of x
    if winner = nobody [
      ifelse pick < first turtle-neighbors [
        set winner x
      ] [
        set pick pick - first turtle-neighbors
      ]
    ]
  ]

  if winner != nobody [
    set temp-turtles remove-item (position winner temp-turtles) temp-turtles
    set result lput winner result
  ]
]

]

报告结果 结束

我不断收到与“map”和“of”语法相关的错误。我是 Netlogo 新手,非常感谢您的帮助!

netlogo
1个回答
0
投票

map
的问题是您在
count link-neighbors
周围使用了括号而不是方括号。
map
需要一个匿名过程,这需要括号被识别。但是,我认为您不必要地使用地图。看起来您正在尝试将所有
temp-turtles
的链接邻居数量相加。只需使用

let total-neighbors sum [count link-neighbors] of temp-turtles

应该可以解决问题。

of
将为您提供每个 temp-turtle 的链接邻居数量列表,您可以直接求和。

我不清楚你遇到了什么问题

of
。看来使用正确。能详细说一下吗?

最后,我想知道你对

pick
的使用。我知道这不是你的问题,但是
pick
可能是一个非常大的数字,肯定大于任何给定乌龟的链接邻居的数量。我怀疑你的

ifelse pick < first turtle-neighbors

情况并不经常如此。

© www.soinside.com 2019 - 2024. All rights reserved.