2014-07-23 2 views
0

Я хочу черепаху Вероятно перейти к одной из патчей в ее соседях. Значение вероятности для переменной патча. Это очень похоже на выбор генетического алгоритма. Я хочу реализовать любую технику выбора.Netlogo Вероятностное движение черепахой к окружающим пластырям

UPDATE:

Значение вероятности заплатки: означает шанс получить этот патч, выбранный. Таким образом, патч с нулевой вероятностью не имеет шансов получить выбранный. А патч со 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 

ответ

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

Это то, что может быть достигнуто с rnd:weighted-one-of первообразной Rnd extension:

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

Отлично! Не знал об этом. Спасибо! –

Смежные вопросы