如何测试死亡率是否正确

时间:2018-07-08 15:40:23

标签: netlogo probability agent-based-modeling population

这个问题与我前段时间问过的a question有关。

我正在尝试在NetLogo中创建一个种群。因此,我试图从死亡率开始。但是,我不确定如何测试我的代码是否有效。濒临灭绝的海龟的年龄似乎还不错,但是当我打印平均死亡年龄时,它太高了,我不知道该怎么解决。

该模型可用here

问题可能是我的死亡概率的计算方法如下:

  if (gender = "female") [
    let die-val mortality-female age ; mortality prob included for the age of the turtle
    if (die-val >= random-float 1)[
       set prob-die? true
    ]
  ]

1 个答案:

答案 0 :(得分:1)

看起来您的代码运行良好,但是您的实现可能不切实际。您的海龟最终都死了,并且由于您的死亡可能性随着年龄的增长而增加,因此年长的海龟比年幼的海龟贡献更大的死亡率海龟。例如,在运行go直到所有乌龟都达到90只之后,仍然有52只乌龟还活着-因此所有这些乌龟(超过一半)都将其年老年龄贡献到death-ages列表中。因此,您的death-ages列表非常偏左,类似于:

enter image description here

您平均death-age超过100次重复的时间约为90.5年。我认为这是由于您的衰老过程所致,请尝试使乌龟的年龄只增加1,而不是增加5,看看是否能像您期望的那样增加输出。它立即将分布更改为看起来更正常,其中100次重复的平均death-age约为81.2年:

enter image description here

编辑:

您可以使用带有以下设置的绘图小部件快速设置直方图:

enter image description here

请注意代码

if length death-ages > 0 [
   set-plot-x-range ( min death-ages - 5 ) ( max death-ages + 5)
]
包含

是因为自动缩放不适用于直方图的x缩放。您可以在“绘图更新命令”字段中排除该代码,并根据需要手动设置x的最小值和最大值,但您会错过任何在选择的x最大值后死亡的海龟。

您还需要将笔设置从行更改为条形-单击笔字段右侧的铅笔图标以打开下面的菜单,然后从“模式”下拉菜单中选择“条形”。还要注意,我已经将“ Interval”设置为5来获得如上所示的图。

enter image description here