NetLogo:如何创建与定义数量的其他海龟的链接

NetLogo:如何创建与定义数量的其他海龟的链接,netlogo,Netlogo,我想创建一个(无标度)网络,其中每只海龟都与特定数量的其他海龟连接,比如说四只。为了让一些海龟有很多连接,而其他海龟只有很少的连接(但不少于四个),我的想法是让每只海龟有四个输出链接,而输入链接必然会有所不同。使用Scott和Koehler的《NetLogo现场指南》第131页上的Barabasi Albert无标度网络构建代码作为起点,我的代码包含在下面 我的问题是如何让每只海龟与另外四只海龟连接 breed [liberals liberal] breed [conservatives co

我想创建一个(无标度)网络,其中每只海龟都与特定数量的其他海龟连接,比如说四只。为了让一些海龟有很多连接,而其他海龟只有很少的连接(但不少于四个),我的想法是让每只海龟有四个输出链接,而输入链接必然会有所不同。使用Scott和Koehler的《NetLogo现场指南》第131页上的Barabasi Albert无标度网络构建代码作为起点,我的代码包含在下面

我的问题是如何让每只海龟与另外四只海龟连接

breed [liberals liberal]
breed [conservatives conservative]

to setup
    clear-all
    set-default-shape turtles "circle"
    create-liberals 5 [
    set adopt? false
    let n count turtles
    set color blue
    ]
create-conservatives 20 [
    set adopt? false
    let n count turtles
    set color red
    ]
    let m 4
    let p .05
    set my-threshold my-threshold
ask turtles[
    let me self
    let degrees max-n-of m turtles [count link-neighbors]
    foreach (sort degrees) [ [?] ->
    let chance random-float 1.0
    if ( ? != self) and (chance < p ) [
    ask self [ create-link-to ? ]
    ]
    ]
]
ask turtles with [(count out-link-neighbors) = 0 ] [
let degrees max-n-of m turtles [ count link-neighbors ]
let t one-of degrees
foreach (sort degrees) [ 
ask self [ if ( t != self) [ create-link-to t] ]
]
]
reset-ticks
end
breed[自由派]
繁殖[保守派]
设置
清除所有
将默认形状海龟设置为“圆形”
创造自由主义者5[
设置采用?错误
让我们数一数海龟
设置颜色为蓝色
]
创建保守派20[
设置采用?错误
让我们数一数海龟
设置颜色为红色
]
让m 4
让我们看看第05页
设置我的阈值我的阈值
问海龟[
让我自己
让m只海龟的最大n度[计算链接邻居]
foreach(排序度)[?]->
让机会随机浮动1.0
如果(?)=self和(偶然性

上面的代码是我尝试重新创建Paul Ormerod模型的一部分,该模型可在

上获得,因为您正在进行定向网络,因此只要告诉每只海龟选择4只其他海龟并连接到它们,就不会有任何问题。这方面的准则是:

ask turtles
[ create-links-to n-of 4 other turtles
]
请注意,在无向网络中,这要困难得多,因为它们“接收”的链路会导致整体链路过多。然后你需要做一些类似的事情

然而,这不会达到你所说的优先依恋(无标度、Barabasi-Albert或任何你想称之为的)学位分布的目标。产生这一结果的机制是,海龟选择海龟,使用加权随机选择与它们建立联系,权重为标准化程度。您需要
rnd
扩展,这将获得
weighted-n-of
原语


我还注意到您的代码中存在一些与(我认为)优先附件算法如何工作和/或NetLogo如何工作相关的一般性问题。
weighted-n-of
原语将消除您查看随机数的需要,并将大大简化您的代码。然而,我不清楚
let degrees max-n-of m海龟[count link neights]
应该做什么,但它似乎正在创建一个包含四只最高度数海龟的列表。但优先连接算法允许使用低阶节点创建链接,只是概率较低。

Hi JenB!谢谢你的快速回复。我确实很困惑,因为我刚刚开始学习ABM和NetLogo,所以上面的代码必然包含一个反复尝试的过程中的错误。我将熟悉“rnd”扩展。你是否用其他语言编程,或者你对编程也不熟悉?除了任何其他问题,我强烈建议您以更迭代的方式编写代码。例如,让代码工作以创建网络,然后担心不同种类的海龟。我以前只使用过Stata,所以后退一步可能是最好的办法@亨里克欢迎来到SO;如果答案解决了您的问题,请接受它(请参阅)。