0

这个问题与我前段时间问的一个问题有关。

我正在尝试在 NetLogo 中创建人口。因此,我试图从死亡率开始。但是,我不确定如何测试我的代码是否有效。最老的垂死海龟的年龄似乎很好,但是当我打印平均死亡年龄时,它太高了,我不知道如何解决这个问题。

该模型可在此处获得。

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

  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
    ]
  ]
4

1 回答 1

1

看起来您的代码运行良好,但您的实现可能不切实际。您的海龟最终都会死亡,并且由于您的死亡可能性随着年龄的增长而增加,因此您的老海龟在死亡年龄列表中的贡献远大于年轻海龟。例如,运行 go 直到所有海龟都 90 岁后,仍有 52 只海龟活着——所以所有这些(超过一半)都会将它们的年龄贡献到death-ages列表中。因此,您的death-ages列表严重左偏,例如:

在此处输入图像描述

平均death-age超过 100 次重复的时间约为 90.5 年。我认为这是由于你的老化过程 - 尝试只让你的海龟年龄增加 1 而不是 5 - 看看这是否会产生更多像你期望的输出。它立即将分布更改为看起来更正常,其中death-age100 次重复的平均值约为 81.2 年:

在此处输入图像描述

编辑:

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

在此处输入图像描述

注意代码

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

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

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

在此处输入图像描述

于 2018-07-09T20:28:04.923 回答