这个问题与我前段时间问过的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
]
]
答案 0 :(得分:1)
看起来您的代码运行良好,但是您的实现可能不切实际。您的海龟最终都死了,并且由于您的死亡可能性随着年龄的增长而增加,因此年长的海龟比年幼的海龟贡献更大的死亡率海龟。例如,在运行go直到所有乌龟都达到90只之后,仍然有52只乌龟还活着-因此所有这些乌龟(超过一半)都将其年老年龄贡献到death-ages
列表中。因此,您的death-ages
列表非常偏左,类似于:
您平均death-age
超过100次重复的时间约为90.5年。我认为这是由于您的衰老过程所致,请尝试使乌龟的年龄只增加1,而不是增加5,看看是否能像您期望的那样增加输出。它立即将分布更改为看起来更正常,其中100次重复的平均death-age
约为81.2年:
编辑:
您可以使用带有以下设置的绘图小部件快速设置直方图:
请注意代码
if length death-ages > 0 [
set-plot-x-range ( min death-ages - 5 ) ( max death-ages + 5)
]
包含是因为自动缩放不适用于直方图的x缩放。您可以在“绘图更新命令”字段中排除该代码,并根据需要手动设置x的最小值和最大值,但您会错过任何在选择的x最大值后死亡的海龟。
您还需要将笔设置从行更改为条形-单击笔字段右侧的铅笔图标以打开下面的菜单,然后从“模式”下拉菜单中选择“条形”。还要注意,我已经将“ Interval”设置为5来获得如上所示的图。