我已经制定了以下netlogo程序,该程序创建了一个网络,该网络具有给定数量的节点和节点之间的无向链接:
to setup
;; Here I created the nodes and sort them around a circle
clear-all
create-turtles number-of-nodes
layout-circle turtles max-pxcor
;; Here I add the links
let i 0
while [i < number-of-links] [
;; I randomly extract two nodes and link them
let node1 random number-of-nodes
let node2 random number-of-nodes
if node1 != node2 [
ask turtle node1 [ create-link-with turtle node2 ]
]
set i i + 1
]
reset-ticks
end
问题是,这也可能在已连接的节点之间添加链接。有没有办法知道两个节点是否连接,如果它们已经连接,我可以随机提取另一个数字?
答案 0 :(得分:2)
link-neighbor?
会告诉你的。这是一个乌龟记者,它需要一个论点;如果它连接到你想要知道的乌龟。所以:
ask n-of number-of-links turtles [create-link-with one-of other turtles with [not link-neighbor? myself]]
会做到这一点。请记住,这会给你的网络一个特定的结构(我认为随机网络?)但我不是那方面的专家。
可替换地,
repeat number-of-links [
ask one-of turtles [create-link-with one-of other turtles with [not link-neighbor? myself]
]
会给你另一种结构。
两者之间的区别在于,在前者中,每只乌龟都会创建一个到另一只乌龟的链接。在后者中,可以多次随机选择相同的乌龟来创建与另一只乌龟的链接。