【问题标题】:How can I save the results of different runs in a compare runs experiment in Anylogic?如何在 Anylogic 的比较运行实验中保存不同运行的结果?
【发布时间】:2021-02-05 11:06:45
【问题描述】:

我想将 Anylogic 中比较运行实验中不同运行的结果保存在 Excel 工作表中,或者保存到某个变量或输出中,以便我使用这些值进行一些进一步的计算。我该怎么做呢

【问题讨论】:

    标签: anylogic


    【解决方案1】:

    最好使用内置数据库,并在所有运行结束时将其写入 Excel。

    创建包含“run_number”、“replication_number”、“experiment_parameter_X”、“my_result_y”等列的 dbase 表。您在 Main 上的每个参数都应该有一个列(至少是您改变的那些)和您感兴趣的每个输出值。

    这样,您可以在每次模型运行后使用insertInto 命令 (link) 轻松编写模型结果。

    最后,只需勾选数据库中的“写入 Excel”复选框,选择文件,它就会写入所有原始结果。

    还检查使用 dbase 的示例模型,有几个使用这种方法

    【讨论】:

      【解决方案2】:

      另一种灵活的方法是将结果写入 CSV。这应该适用于任何类型的 AnyLogic 模拟或实验。

      您必须将标准外部库导入环境中,并将代码添加到要在模拟运行结束时执行的实验中。

      在进口部分你可以有这个:

      import java.io.FileOutputStream;
      import java.io.IOException;
      import java.io.InputStreamReader;
      import java.io.File;
      import java.io.FileReader;
      import java.io.FileWriter;
      import java.io.OutputStream;
      import java.io.PrintStream;
      

      首先为名为 csvFileName 的文件名创建一个变量(您可以随意调用它)。然后在 root 中创建一个名为 updateMyCSV() 或类似的函数。该函数的一般结构为:

      FileWriter pw = new FileWriter(csvFileName, true);
      
      StringBuilder sb;
      sb = new StringBuilder();
      sb.append(<variablename>); sb.append(',');
      

      然后对要导出的每个变量重复上述操作

      然后完成函数:

      sb.append('\n');
          
      pw.append(sb);
      pw.flush();
      pw.close();
      

      【讨论】:

        猜你喜欢
        • 2020-02-15
        • 2018-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-25
        • 2018-07-09
        • 2013-12-08
        • 1970-01-01
        相关资源
        最近更新 更多