从参数变化实验中每次复制导出一个数据集
Export one dataset each replication from a Parameter Variations experiment
在参数变化实验中,我正在绘制位于 Main 中的数据集的数据。像这样:
我使用以下代码在图中显示数据:
if(root.p_X == 7) {
plot.addDataSet(root.ds_waitTime,
"X = " + root.p_X,
transparent(red, 0.5), true, Chart.INTERPOLATION_LINEAR,
1, Chart.POINT_NONE);
else if(root.p_X == 14) {
plot.addDataSet(root.ds_waitTime,
"X = " + root.p_X,
transparent(red, 0.5), true, Chart.INTERPOLATION_LINEAR,
1, Chart.POINT_NONE);
我的问题与导出基础数据有关。我不确定导出数据的最佳方法是什么。对于每个模拟 运行,我想将数据集 root.ds_waitTime
导出到 csv 或 excel 文件,并用 root.p_X == 14
的值进行注释。我知道您可以将数据集添加到 2d 直方图数据集,但这也会转换数据,因此这似乎不是一个好的选择。另外,我没有设置外部数据库,我也不想这样做。
是否可以将root.ds_waitTime
保存到第1列和第2列用于模拟运行1,保存到第3列和第4列用于模拟运行2,依此类推?
在实验中 window 执行以下操作:
- 添加一个名为 i 的变量,并将 0 作为其初始值
- 添加一个 Excel 文件元素并将其 link 添加到您 PC 的属性中您想要的文件中。将块命名为“excelFile”,这是默认名称。
然后,在“Java 操作”下的实验 window 属性中,在“模拟后 运行”字段中,使用以下代码(其中 dataSet 是您的数据集):
excelFile.writeDataSet(dataSet, 1, 2, 1 + i*2);
i++;
这样,在每次模拟后 运行,数据集被写入接下来的 2 行。
我使用的语法是指:
- Sheet 数字即 1
- 行号即2;我使用 2 将 space 保留在顶行,您可以在其中添加 AnyLogic 外部的 header 直接添加到文件中
- 列号即 1 + i*2
对于 header 行,您也可以添加以下代码:
excelFile.setCellValue(dataset name, 1, 1, 1 + i*2);
在参数变化实验中,我正在绘制位于 Main 中的数据集的数据。像这样:
我使用以下代码在图中显示数据:
if(root.p_X == 7) {
plot.addDataSet(root.ds_waitTime,
"X = " + root.p_X,
transparent(red, 0.5), true, Chart.INTERPOLATION_LINEAR,
1, Chart.POINT_NONE);
else if(root.p_X == 14) {
plot.addDataSet(root.ds_waitTime,
"X = " + root.p_X,
transparent(red, 0.5), true, Chart.INTERPOLATION_LINEAR,
1, Chart.POINT_NONE);
我的问题与导出基础数据有关。我不确定导出数据的最佳方法是什么。对于每个模拟 运行,我想将数据集 root.ds_waitTime
导出到 csv 或 excel 文件,并用 root.p_X == 14
的值进行注释。我知道您可以将数据集添加到 2d 直方图数据集,但这也会转换数据,因此这似乎不是一个好的选择。另外,我没有设置外部数据库,我也不想这样做。
是否可以将root.ds_waitTime
保存到第1列和第2列用于模拟运行1,保存到第3列和第4列用于模拟运行2,依此类推?
在实验中 window 执行以下操作:
- 添加一个名为 i 的变量,并将 0 作为其初始值
- 添加一个 Excel 文件元素并将其 link 添加到您 PC 的属性中您想要的文件中。将块命名为“excelFile”,这是默认名称。
然后,在“Java 操作”下的实验 window 属性中,在“模拟后 运行”字段中,使用以下代码(其中 dataSet 是您的数据集):
excelFile.writeDataSet(dataSet, 1, 2, 1 + i*2);
i++;
这样,在每次模拟后 运行,数据集被写入接下来的 2 行。
我使用的语法是指:
- Sheet 数字即 1
- 行号即2;我使用 2 将 space 保留在顶行,您可以在其中添加 AnyLogic 外部的 header 直接添加到文件中
- 列号即 1 + i*2
对于 header 行,您也可以添加以下代码:
excelFile.setCellValue(dataset name, 1, 1, 1 + i*2);