簡體   English   中英

NetLogo:如果條件為真,讓海龜直接鏈接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM