0
我在格上有一些代理。如果我們考慮一個代理$ i $,那麼我將根據代理$ i $的特性爲所有剩餘的代理分配不同的概率。現在我的目標是從指定概率的剩餘代理中選擇一個代理$ j $,並創建從代理$ i $到代理$ j $的鏈接。這我必須爲所有代理人格做。 [每次概率根據不同的代理$ i $而改變] 有人可以幫助如何在netlogo上實現這一點。 謝謝。如何在netlogo中使用隨機代理創建鏈接
我在格上有一些代理。如果我們考慮一個代理$ i $,那麼我將根據代理$ i $的特性爲所有剩餘的代理分配不同的概率。現在我的目標是從指定概率的剩餘代理中選擇一個代理$ j $,並創建從代理$ i $到代理$ j $的鏈接。這我必須爲所有代理人格做。 [每次概率根據不同的代理$ i $而改變] 有人可以幫助如何在netlogo上實現這一點。 謝謝。如何在netlogo中使用隨機代理創建鏈接
如果您沒有更多地限制問題,計算會變得昂貴。這裏的基本思想是,假設你有一個assign-probabilities
記者:
to form-links ;;turtle proc
let %others [self] of other turtles ;;list of other turltes
let %p assign-probabilities %others
let %idx random-index %p
create-link-with item %idx %others
end
to-report random-index [#p] ;;input probability dist as list
let %draw random-float 1
let %cum-p item 0 #p
let %ct 0
while [%draw > %cum-p] [
set %ct (%ct + 1)
set %cum-p (%cum-p + item %ct #p)
]
report %ct
end
這裏有一些東西,可以幫助使計算成本更低。如果烏龜沒有被創建或者死亡,你可以在安裝過程中只計算一次烏龜(並且設置爲烏龜屬性)。如果概率不隨時間變化,則可以對概率做同樣的處理。在後一種情況下,您可能想要計算累積概率(一次),並使用二分算法生成隨機索引。
另請參閱彩票示例,在NetLogo的模型庫的代碼示例部分。並在https://github.com/NetLogo/Rnd-Extension查看'rnd:weighted-one-of' –