2015-06-18 41 views
1

我做了創建與節​​點之間的給定數量的節點和無向鏈接的網絡下面的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 

的問題是,這可能還要在已連接的節點之間添加鏈接。有沒有辦法知道兩個節點是否連接,如果它們已經連接,我可以隨機提取另一個數字?

+1

我喜歡Arthur的回答。但是試圖創建一個已經存在的鏈接什麼也不做,所以你也可以去掉'i'變量,並且'只要'count鏈接<鏈接數量''。 –

回答

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] ] 會給你另一種結構。

兩者的區別在於,在前者中,每隻海龜都會創建一個鏈接到另一隻海龜。在後者中,可以隨機選擇相同的烏龜數次以創建與另一隻烏龜的鏈接。

+0

第二種方法給出了一個隨機網絡(在Erdos-Renyi意義上,固定數量的鏈接變體),這是OP代碼試圖通過選擇龜對來完成的。第一個版本創建了一個不同的結構,它不是一個隨機網絡。 – JenB

相關問題