Netlogo Behaviorspace 如何根据报告器而不是按滴答保存数据

Netlogo Behaviorspace How to save data not per tick but based on reporter

我有一个 netlogo 模型,运行 需要大约 15 分钟,但经历了很多滴答声。这是因为每次滴答,不会发生太多事情。我想在行为空间的实验中做很多 运行s。输出(仅 table 输出)将是每个刻度的所有输出和输入变量。然而,并非所有这些数据都是相关的:它每天只相关一次(天是可变的,运行 持续 1095 天)。

结果是模型变得如此缓慢运行通过行为空间进行的实验。只有 1095 行的输出数据不仅会更好,而且可能还会导致实验速度大大减慢。

如何解决这个问题?

可以在 BehaviorSpace 实验中编写自己的输出文件。对您的代码进行编程以创建和打开仅包含您想要的结果的输出文件。

问题是防止 BehaviorSpace 尝试在不同的处理器上打开来自不同模型 运行s 运行ning 的相同输出文件,这会导致 运行time 错误。我已经尝试了两种解决方案。

  1. 告诉 BehaviorSpace 只使用一个处理器进行实验。然后您可以对所有模型 运行 使用相同的输出文件。如果您希望输出行包括它所在的模型 运行,请使用原始行为空间-运行-number.

  2. 让每个模型 运行 使用唯一名称创建自己的输出文件。使用类似以下内容打开文件: 文件打开(单词“Output-for-运行-”行为空间-运行-number“.csv”) 所以输出文件将被命名为 Output-for-运行-1.csv etc.

(如果你不熟悉,CSV 扩展名对于编写输出文件非常有用。你可以将要输出的所有内容放在一个大列表中,然后在模型完成时将列表写入 CSV文件: csv:to-文件(单词“Output-for-运行-”行为空间-运行-number“.csv”)the-big-list )