Network programming 如何避免在两个节点之间添加两次链接

Network programming 如何避免在两个节点之间添加两次链接,network-programming,netlogo,Network Programming,Netlogo,我已经完成了以下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 <

我已经完成了以下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
设置
;; 在这里,我创建了节点并围绕一个圆对它们进行排序
清除所有
创建节点数
布局圆形海龟max pxcor
;; 这里我添加了链接
让我0
而[i<链接数][
我随机抽取两个节点并将它们链接起来
设node1为随机数目的节点
设node2为随机数目的节点
如果节点1!=节点2[
询问turtle节点1[创建与turtle节点2的链接]
] 
集合i+1
]
重置滴答声
结束

问题是,这也可能会在已经连接的节点之间添加链接。有没有办法知道两个节点是否已连接,这样如果它们已经连接,我就可以随机抽取另一个数字?

链接邻居?
会告诉您。这是一个海龟记者,需要一个论点;你想知道它是否与之连接的海龟。因此:

询问n-海龟的链接数量[与其他海龟中的一只建立链接,而不是与邻居?我自己建立链接]

我会成功的。请记住,这将使您的网络具有特定的结构(我认为是随机网络?),但我不是这方面的专家

或者

重复链接数[
询问其中一只海龟[与另一只海龟建立链接[不链接邻居?我自己]
]
会给你另一个结构


两者之间的区别在于,在前者中,每只海龟都会创建一个指向另一只海龟的链接。在后者中,同一只海龟可能会被随机选择几次来创建与另一只海龟的链接。

我喜欢亚瑟的答案。但尝试创建一个已经存在的链接不会产生任何效果,因此您也可以摆脱
变量,只做
,而[count links
。这里的第二种方法给出了一个随机网络(在鄂尔多斯仁义意义上,固定数量的链接变量),这是OP代码通过选择海龟对试图做的。第一种版本创建了一个不同的结构,而不是随机网络。