如何在Netlogo模拟结束之前报告海龟状态一次?

时间:2017-03-19 18:15:08

标签: netlogo

我已经在Netlogo中建立了一个人口模型,当我的所有海龟都死了或者达到了300个蜱的数量时,模拟停止了。我需要在模拟结束前报告(或写入文件)我的海龟的平均状态(乌龟自己的变量)。如果所有模拟都运行到300个滴答,那将很容易,但在大多数情况下,模拟在此之前结束(所有乌龟死亡)。我怎样才能做到这一点?海龟的死亡取决于他们的生命周期"用完或随机死亡的可能性,所以我不能预测这种情况何时会发生,我需要知道最后一只乌龟是否因为它们的生命耗尽而死亡,或者是由于对乌龟的可能性。谢谢!

1 个答案:

答案 0 :(得分:1)

你有没有玩过BehaviorSpace?它非常适用于平均值和总和等。您可以轻松地使BehaviorSpace实验将您设置的任何记者导出到.csv电子表格或表格,无论您是想在模拟结束时还是在每个刻度线上进行报告。举个简单的例子,如果我想知道我的海龟的平均x坐标,我可以使用to-report设置记者:

to-report mean-xcor
  let xlist ( [xcor] of turtles )
  report mean xlist
end

然后,我可以使用行为空间(工具>行为空间)到set up an experiment,在每个刻度或者仅在运行结束时为所有海龟写下xcor。该工具还允许您设置模拟的多个参数化,并将结果与​​不同的处理方式进行比较 - 它非常方便!您可以根据自己的报告获得创意,以便输出符合您的需求。对于您的具体情况,您可以确保在每个刻度处记录您的实验。

如果您愿意,也可以手动执行此操作并进行更多控制。您可以在设置期间使用以下内容创建文件和标题:

to setup-turtle-reporting
  file-open "turtle_details_out.csv"
  file-type (word "tick, who, xcor, ycor \n")
  file-close
end

在模型文件夹中设置.csv文件,其中列标题为tick,who,xcor和ycor。然后,在每个刻度线中,您可以让海龟将相应的变量写入同一个文件:

to turtle-report
  file-open "turtle_details_out.csv"
  ask turtles [
    file-type (word ticks ", " who ", " xcor ", " ycor "\n" )
  ]
  file-close  
end

此选项在某些方面为您提供了更多控制权,但却更加狡猾。在完成不同的模拟时,您还必须使用file-delete或手动删除/重命名文件,因为file-type将附加到现有文件而不是覆盖它。