【问题标题】:AnyLogic: Efficiently exporting data from experiment with replicationsAnyLogic:有效地从复制实验中导出数据
【发布时间】:2021-04-17 12:31:16
【问题描述】:

我正在做一个参数变化实验,每次迭代有 1000 次重复。对于这些模型运行中的每一个,我都想存储一个位于 Main 中的数据集的副本。我目前的设置是在每次模拟运行后将该数据集写入 excel 文件,使用实验中的 After simulation run 字段和以下代码:

ds_export.fillFrom(root.ds_costAll);
excelfile.writeDataSet(ds_export, 1, 2, 1 + i*2);

其中 i 是当前迭代的计数器。

但是,我遇到了一些性能问题。我相信ds_costAll 的副本正在存储在我的系统内存中,以期完成我的实验,然后将其写入excelfile。这意味着我的系统的内存利用率接近 100%,而 CPU 几乎没有受到影响。我的系统有 16gb 的内存,实验的最大可用内存也是 16gb 有没有办法更高效的导出这个数据?

【问题讨论】:

    标签: anylogic


    【解决方案1】:

    您在运行时使用了多少个内核? 工具->首选项->运行时->并行执行的进程数

    可能是减少一点的选择。

    【讨论】:

    • 它可以访问我所有的处理器内核。无论如何,我不认为 CPU 是性能不佳的罪魁祸首。实验完成后,通过在写入 excel 文件之前将数据集保存在内存中来填充内存。
    • 对,但是每个内核都在使用一定的内存。减少内核数量会降低整体内存使用量。
    • 另一个尝试的技巧 - 1) 在你的 excelFile 中取消选中“模型启动时加载”和“模型终止时保存”标志。 2) 将两行代码添加到您的 After simulation 功能:excelfile.readFile() (这应该在所有内容之前)。和 excelfile.writeFile() (这应该是最后一行)。或者,您可以尝试在其他地方进行 - 例如。 “每次实验前”(readFile)和迭代后(writeFile)。
    猜你喜欢
    • 2017-07-13
    • 2021-02-14
    • 2021-11-24
    • 2021-03-06
    • 2015-09-27
    • 2012-12-11
    • 2022-06-22
    • 2020-04-02
    • 2021-09-28
    相关资源
    最近更新 更多