Я хотел бы добавить вероятность стихийного бедствия в моей окружающей среде ABM, которая следует за power law (часто несколько повреждений, реже промежуточных повреждений, редко сильных повреждений, очень редко полного повреждения).Как добавить правдолюбие власти к модели Netlogo
Я закодированы до сих пор следующие:
to environment ;environmental hits
create-hits 1 [ ; I do not know if it makes sense to do that?
set shape "circle"
set color white
set size 0.05
setxy random-xcor random-ycor
]
ask hits [
ifelse pcolor = red [die] ;if already red, then stop
[ ask n-of random (count patches) patches [ set pcolor red ]] ;otherwise turn red on an random amount of patches
]
end
Теперь, я не знаю, как добавить стохастический элемент, как сильный «удар» может быть (таким образом, насколько патчи могут быть затронуты) и насколько вероятным (согласно силовому закону) должно случиться (или не происходить) каждый тик. Может кто-нибудь мне помочь?
Это окончательный код (ответил Алан):
to environment
create-hits 1 [
set shape "circle"
set color white
set size 0.05
setxy random-xcor random-ycor
]
ask hits [
let %draw (random-float 100)
let %strength 0 ;; no damage
if (%draw < 50) [set %strength (%strength + 1)] ;;1 for little damage
if (%draw < 10) [set %strength (%strength + 1)] ;;2 for middle damage
if (%draw < 5) [set %strength (%strength + 1)] ;;3 for strong damage
if (%draw < 1) [set %strength (%strength + 1)] ;;4 for complete destruction
ifelse pcolor = red [die]
[ ask n-of %strength patches [ set pcolor red ]]
]
end
Непонятно, какова сила удара. Однако в NetLogo существует несколько функций генерации случайных чисел, которые называются «случайными» и «случайными». Чтобы взять самый простой случай, если вы хотите, чтобы вероятность того, что что-то случилось, была 0,73, вы можете сказать «если random-float 1 <0.73 [...]». Цифры, возвращаемые 'random-float', следуют равномерному распределению, но есть и другие функции, которые предоставляют другие дистрибутивы. Затем вычислите математику, чтобы построить распределение вероятности, которое вы хотите от одной из случайных функций NetLogo. (Это не проблема NetLogo.) – Mars