如何在 Anylogic 的比较运行实验中保存不同运行的结果?
Posted
技术标签:
【中文标题】如何在 Anylogic 的比较运行实验中保存不同运行的结果?【英文标题】:How can I save the results of different runs in a compare runs experiment in Anylogic? 【发布时间】:2021-02-05 11:06:45 【问题描述】:我想将 Anylogic 中比较运行实验中不同运行的结果保存在 Excel 工作表中,或者保存到某个变量或输出中,以便我使用这些值进行一些进一步的计算。我该怎么做呢
【问题讨论】:
【参考方案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();
【讨论】:
以上是关于如何在 Anylogic 的比较运行实验中保存不同运行的结果?的主要内容,如果未能解决你的问题,请参考以下文章