в netlogo я выбираю конкретное распределение расстояния проезда на основе случайного числа. Затем, основываясь на выбранном распределении, я вычисляю вероятность добраться до ряда определенных участков на определенном расстоянии. Для одного из распределений вероятность приближается к бесконечности около 0. Это создает ошибку, когда выбрано это конкретное распределение, и один из участков находится там, где черепаха уже находится (расстояние = 0). Netlogo выдаст ошибку «математическая операция произвела слишком большое число для NetLogo». Есть ли способ обойти эту ошибку, например, чтобы netlogo использовал максимально возможное число при появлении этой ошибки?
Код выглядит так:
to create-window
get_state
get_parms
set i 0
set j 0
while [i < windowsize]
[
set j 0
while [j < windowsize]
[
let dist (sqrt (((item j xlist) - xcor) ^ 2 + ((item i ylist) - ycor) ^ 2))
matrix:set window i j ((wshape / wscale) * ((dist / wscale) ^ (wshape - 1)) * exp (-((dist / wscale) ^ wshape)))
set j j + 1
]
set i i + 1
]
end
to get_state
set state random 3 + 1
end
to get_parms
if state = 1 [
set wscale 0.01856659
set wshape 1.43983152]
if state = 2 [
set wscale 0.18418573
set wshape 0.92631983]
if state = 3 [
set wscale 1.07631234
set wshape 1.78987126]
end
Состояние 2 - это то, с которым возникла проблема (если расстояние равно 0), но я хочу иметь возможность легко изменять эти параметры, поэтому я бы предпочел не использовать функцию if на основе номера состояния или значений параметров.