我正在尝试编写一种优先连接模型,其中每个新节点连接到 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 新手,非常感谢您的帮助!
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
情况并不经常如此。