我想要一只乌龟以概率的方式移动到它的邻居中的一个补丁。补丁变量的概率值。 这与遗传算法选择非常相似。 我希望能够实施任何选择技术。
更新
补丁概率值:表示选择补丁的机会。所以一个零概率的补丁没有被选中的机会。并且总是会选择100%概率的补丁。:
UPDATE2: 以下我发现我认为这样做但我认为理解得很清楚:
report last first filter [first ? >= rand-num] probabilities
试过这个其他代码,请检查一下是否有意义:
ask neighbors4[calculate-proabalities]
let patchset neighbors4
let pick random-float sum [score] of patchset
let winner nobody
ask patchset[
if (is-patch? winner = false)
[
ifelse (score > pick)
[set winner self]
[set pick pick - score]
]
]
report winner
答案 0 :(得分:1)
您基本上是在模型库中重复彩票示例中的代码。 (归因将是一个好主意。)目前还不清楚为什么你改变了胜利者存在的测试。我实际上会完全抛弃它,就像这样。
to-report local-winner [#candidates]
ask #candidates [calculate-score]
let %pick random-float sum [score] of #candidates
let %winner nobody
ask #candidates [
ifelse score > %pick [
set %winner self stop
] [
set %pick (%pick - score)
]
]
report %winner
end
ask myturtle [move-to local-winner neighbors4]
请注意,这假设(如示例代码中)补丁可以单独计算其得分。如果没有,您将需要进行适当的更改。另请注意,您不能简单地从ask
内部报告,哪一个可能会尝试尝试。
答案 1 :(得分:1)
使用rnd:weighted-one-of
的Rnd extension基元也可以实现这一点:
let winner rnd:weighted-one-of neighbors4 [ [score] of ? ]