NetLogo:处理分布中的无限概率

时间:2014-03-18 12:39:18

标签: probability netlogo infinity

在netlogo中,我根据随机数选择特定的旅行距离分布。然后,基于所选择的分布,我计算到达特定距离处的多个特定补丁的概率。对于其中一个分布,概率接近0的无穷大。当选择此特定分布并且其中一个补丁是乌龟已经存在的位置(距离= 0)时,这会产生错误。 Netlogo将给出错误"数学运算产生的数字对于NetLogo而言太大了#34;。有没有办法解决这个错误,比如当这个错误弹出时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函数或参数值..

1 个答案:

答案 0 :(得分:1)

您有两种选择:

1)通过检测零情况并做一些特殊事情,修改计算首先不产生错误的概率的代码。 (在不知道代码是什么的情况下,我可以更具体。)

2)使用carefully原语(dictionary entry)包装概率的计算,捕获错误并防止它停止模型。

此外,概率如何接近无穷大?它不应该接近1.0吗?