Netlogo:创建到新邻居的链接
Netlogo: Creating links to new neighbors
我尝试在 Netlogo 中生成有向图。两个节点之间应该只有一个link。我使用以下代码片段:
breed [nodes node]
directed-link-breed [edges edge]
.
.
.
ask nodes
[
create-edges-to ((other nodes) with [not edge-neighbor? self])
]
它不断在节点之间创建两个 links(从和到)。我的错误是什么?
提前致谢!
埃里克
有两个问题:首先,在您使用它的上下文中使用 self
检查节点是否连接到自身。你要 myself
这里。
其次,因为你使用的是定向links,如果A连接到 B,B被认为是A的link邻居,但是反之亦然(因为它是定向的。)将 link-neighbor
视为 "is there a way to get from turtle A to turtle B".
NetLogo 提供在-link-邻居?和出-link-邻居?解决这个问题。所以你可以这样做:
ask nodes [
create-edges-to other turtles with [not out-edge-neighbor? myself]
]
请记住,因为这是 运行 每只海龟的度数分布,所以度数分布是线性的。如果这就是您的意图,那就太好了!但它可能不是。 (编辑:实际上仔细想想,如果你想让所有的海龟都由一个有向连接 link,你不可能不这样做,所以没关系。)
我尝试在 Netlogo 中生成有向图。两个节点之间应该只有一个link。我使用以下代码片段:
breed [nodes node]
directed-link-breed [edges edge]
.
.
.
ask nodes
[
create-edges-to ((other nodes) with [not edge-neighbor? self])
]
它不断在节点之间创建两个 links(从和到)。我的错误是什么?
提前致谢!
埃里克
有两个问题:首先,在您使用它的上下文中使用 self
检查节点是否连接到自身。你要 myself
这里。
其次,因为你使用的是定向links,如果A连接到 B,B被认为是A的link邻居,但是反之亦然(因为它是定向的。)将 link-neighbor
视为 "is there a way to get from turtle A to turtle B".
NetLogo 提供在-link-邻居?和出-link-邻居?解决这个问题。所以你可以这样做:
ask nodes [
create-edges-to other turtles with [not out-edge-neighbor? myself]
]
请记住,因为这是 运行 每只海龟的度数分布,所以度数分布是线性的。如果这就是您的意图,那就太好了!但它可能不是。 (编辑:实际上仔细想想,如果你想让所有的海龟都由一个有向连接 link,你不可能不这样做,所以没关系。)