[英]NetLogo : getting turtles to direct-link if a condition is true
我正在嘗試在 netlogo 中實現 YOYO 領導者選舉算法,該算法的第一步是將鏈接(直接鏈接)從最小值定向到最大值,但僅限於鄰居之間! 我試過命令
[`ask turtles with [ [ who ] of self < [who] of one-of link-neighbors ]
create-direct-to turtle [who] of one-of link-neighbors ]`
這會創建從 min 到 max(neighbors)的直接鏈接,但也會創建從 max 到 min(neighbors)的直接鏈接,我不知道出了什么問題:(這是一個屏幕截圖,如果你注意到從 0 到 2 的直接鏈接還有從 2 到 0,我的目標是只有從 0 到 2
您的問題是,每次您執行one-of
,它都會隨機選擇。 所以你在第一行測試一個隨機的鏈接鄰居,發現它是真的,然后隨機 select 一個鏈接鄰居來連接。
[ ask turtles with [ [ who ] of self < [who] of one-of link-neighbors ]
create-direct-to turtle [who] of one-of link-neighbors
]
更一般地說,這似乎是實現目標的一種奇怪方式。 首先,鏈接鄰居是海龜已經鏈接到的海龜。 link
是所有鏈接品種的通用名稱(我認為您已經創建了一個稱為直接鏈接的品種)。
我不完全清楚你所說的最小值和最大值是什么意思,因為你的代碼只是從小到大who
值,而不管其他who
值可用。 如果你想創建一個從每一個烏龜到每一個who
值更高的烏龜的鏈接,這里有一些代碼:
ask turtles
[ let targets turtles with [who > [who] of myself]
create-links-to targets
]
一般來說,在 NetLogo 代碼中使用who
是不好的做法。 who
是一個完全任意的標識符,僅跟蹤海龜的創建順序。 如果你的海龜死了,那么你的代碼可能會崩潰,因為它指的是不再存在的海龜。 或者也許在某個時候你會有兩種烏龜—— who
不在乎你的烏龜是人、狗、工廠還是……
這可能是極少數例外之一,但您可能需要考慮您的意圖who
什么。 例如,由於這是一個領導 model,也許你可以有一個名為“魅力”的變量,所有鏈接都是從魅力值較低的海龜到魅力值較高的海龜。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.