Netlogo由乌龟向周围的补丁进行概率运动

时间:2014-07-23 11:50:24

标签: netlogo

我想要一只乌龟以概率的方式移动到它的邻居中的一个补丁。补丁变量的概率值。 这与遗传算法选择非常相似。 我希望能够实施任何选择技术。

更新

补丁概率值:表示选择补丁的机会。所以一个零概率的补丁没有被选中的机会。并且总是会选择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

2 个答案:

答案 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-ofRnd extension基元也可以实现这一点:

let winner rnd:weighted-one-of neighbors4 [ [score] of ? ]