我希望這是一個簡單的解決方案,但我遇到困難。使用代理變量而不是常量在Netlogo中輪盤選擇
問題:
我想體重的東西由變量不是一個常量
設置發生的可能性
我的代理人是農場。
農場擁有四個變量,代表其上的奶牛,山羊,豬和綿羊的數量爲 。
當一個農場想要 除去動物,我想的可能性,以除去一個 特定物種的成員被直接正比於每 物種的量在農場(即,如果有7只山羊,2頭牛和1頭豬, 有一種接受山羊70%的概率,並採取一隻羊百分之零 概率)
我發現公式是這樣的,當你知道確切的數字每個值的重量:
to-report random-weighted [values weights]
let selector (random-float sum weights)
let running-sum 0
(foreach values weights [
set running-sum (running-sum + ?2) ; Random-Weighted Created by NickBenn
if (running-sum > selector) [
report ?1
]
])
end
和在rnd擴展中描述的方法。但是,當我把「牛」放入而不是常數時,這兩種方法都會拋出「預期不變」的錯誤。
喜歡的東西:
to example1
let values ["Cow" "Sheep" "Goat" "Pig"]
let probabilities [2 0 7 1]
let indices n-values length values [ ? ] ; Made by Nicolas Payette
let index rnd:weighted-one-of indices [ item ? probabilities ]
let loca item index values
end
效果很好,但如果我是來取代它:
to example1
let values ["Cow" "Sheep" "Goat" "Pig"]
let probabilities [Num-Cows Num-Sheep Num-Goats Num-Pigs]
let indices n-values length values [ ? ] ; Made by Nicolas Payette
let index rnd:weighted-one-of indices [ item ? probabilities ]
let loca item index values
end
失敗。
讓概率(列表Num-Cows Num-Sheep Num-Goats Num-Pigs) – Alan