2017-08-07 248 views
0

我嘗試在Netlogo中生成有向圖。兩個節點之間應該只有一個鏈接。我用下面的代碼片段:Netlogo:創建到新鄰居的鏈接


breed [nodes node] 
directed-link-breed [edges edge] 

. 
. 
. 

ask nodes 
[ 
    create-edges-to ((other nodes) with [not edge-neighbor? self]) 
] 

它使節點之間建立兩條鏈路(從和)。我的錯誤是什麼?

在此先感謝!

Eric。

+3

我想你想'自己'而不是'自我' –

+1

盧克 - 你應該這樣做,因爲它可以被接受 – JenB

回答

1

存在兩個問題:首先,在上下文中使用self來檢查節點是否連接到自身。你想要myself在這裏。

其次,因爲你是用直接的聯繫,如果A連接 B,B被認爲是A的鏈接鄰居,反之則不行(因爲它直接。)想想link-neighbor爲,「有沒有從龜A到龜B的方式「。

NetLogo同時提供in-link-neighbour?和out-link-neighbor?解決這個問題。所以你可以這樣做:

ask nodes [ 
    create-edges-to other turtles with [not out-edge-neighbor? myself] 
] 

請記住,因爲這是每個單獨的烏龜運行,你將有一個線性度分佈。如果這就是你的意圖,那麼太棒了!但它可能不是。 (編輯:實際上想通了,如果你想讓所有的海龜通過一個定向鏈接連接,沒有辦法,所以不要介意。)

+0

好的,謝謝 - 它適用於「我自己」。但鏈接方向似乎無關緊要:(來自Netlogo幫助)「 -neighbor?turtle link-neighbor?如果在烏龜和調用者之間存在鏈接(無論是直接還是無向,傳入或傳出),則報告爲真。 – Eric

+0

@Eric你是對的,這不是因爲「我自己」工作的鏈接方向,而是因爲「其他海龜」是評估他們是否有鏈接到*問*烏龜, myself'。使用「我」的僞代碼就像「與任何尚未鏈接到我的海龜創建鏈接」,而不是「自我」,這將是「與任何尚未鏈接到自己的烏龜創建鏈接」 –

+0

謝謝盧克澄清。 – Eric