NetLogo实验设置


9

我正在使用Netlogo建立模型,但是在理解如何设置“实验”时遇到了问题。在我的模型中,我有一个矩阵,该矩阵具有我感兴趣的所有值(总共6个),只要满足条件(每次杀死X只海龟),矩阵都会更新,基本上捕获了快照。在那时建模。清除矩阵中的先前值,因此矩阵是1x6而不是10000x6矩阵,每个快照仅更新一行。

我想做的是建立一个实验来运行我的模型数百次,每次前X个快照或直到出现Y滴答时,每次都收集此矩阵。但是我在实验设置中看不到做到这一点的方法吗?

是否可以这样做,还是我必须创建100x6(100个快照),然后以某种方式将该矩阵导出到CSV?

我从未在Netlogo中进行实验,因此这可能非常容易做到,或者完全不可能。


我用BehaviorSpace做了一个答案,因为我认为那是最简单的。但是,创建csv文件并在创建快照时附加每个快照没有问题。也就是说,您不需要具有100x6的矩阵并将其导出。我不建议使用此方法的原因是,您还说要进行数百次独立运行,因此每次运行都会给您单独的csv文件。
1

Answers:


3

如果我正确理解了您的问题,那么您希望在运行期间的特定时间点报告6个值。通过满足条件而不是一定数量的壁虱来选择那些壁虱。NetLogo有一个名为BehaviorSpace的实验管理工具。设置数百个运行很简单(对于滑块等的任何输入,可能具有不同的值)。仅在某些刻度上输出不是那么简单。

BehaviorSpace对话框的每个刻度线或仅在最后一个刻度线都带有一个选中标记。如果将其设置为每个刻度,则可以在每个刻度自动导出六个数字。在您的情况下,这样做可能比尝试仅偶尔输出更容易。您可以添加第七个报告者,该报告者对矩阵是否在此滴答中被重置为是/否。然后,您在后处理中要做的就是选择第七个报告者为真的行。

如果要为N个快照运行模型,则还需要设置一个全局变量,该变量在每个快照点递增。然后,您的BehaviorSpace设置将使用该计数器作为停止条件。


2

我不确定我是否理解您的问题,但是通常您会具有设置功能和运行功能,对吗?所以我猜下面的代码结构应该是您所寻找的。我已经有一段时间没有使用netlogo了,所以您必须弄清楚自己的确切矩阵代码。

globals your-1by6-matrix your-100by6-matrix

to setup
  ;reset your experiment
end

to run
  ;run your experiment
end

to run100times
  repeat 100[
    setup
    run
    ;save your 1by6matrix into your 100by6matrix
  ]
  ;use your 100by6matrix to plot or export
end
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.