【问题标题】:Writing different experiment output run to different cells in a sheet (Excel file)将不同的实验输出运行写入工作表中的不同单元格(Excel 文件)
【发布时间】:2020-12-01 04:49:34
【问题描述】:

我同时运行具有不同输入值的模型,并且每次运行都会产生不同的输出。我正在尝试创建一个代码,该代码将让任何逻辑来编写每个实验输出在 excel 表中的不同单元格中运行,即吞吐量 Vs。时间。我正在使用数据集。想知道是否有任何脚本或提示可以帮助解决问题?

目前我正在使用以下命令。他们不断使用相同的单元格覆盖输出。

Out_excelFile1.setCellValue("Sink1 Out",2,2,2);

Out_excelFile1.writeDataSet(Sink1_D,2,3,2);

【问题讨论】:

    标签: anylogic


    【解决方案1】:

    如果您实际使用内置数据库进行输出,并且仅在所有运行结束时写入 Excel,则最好。

    但在您的情况下,您需要通过复制/迭代数更改行号。在您的“模拟运行后”或“复制后”或“迭代后”实验代码部分中使用 getCurrentIteration()getCurrentReplication() 来实现这一点。

    然后,它看起来像Out_excelFile1.setCellValue("Sink1 Out",2,getCurrentIteration(),2);

    (详细信息取决于您的实际实现,请查看帮助以获取有关复制、迭代和这些功能的更多信息)

    【讨论】:

    • 感谢您的回复。我目前正在查看 Iteration 主题的 Anylogic 帮助文档。关于 getCurrentIteration,我面临以下错误描述:方法 getCurrentIteration() 未定义为 Main 类型。位置:LOR_Smart_Wall10/Main/level/button - 按钮。我已经尝试了主要销毁窗口中的代码。它没有用。如何在 main 中定义 getCurrentIteration?
    • ((ExperimentParamVariation) getExperiment()).getCurrentIteration() 或类似的。迭代基本上是实验的属性,而不是模型,并且只存在于多运行实验类型。
    • 你需要真正理解 Java 继承才能理解语法,但更正确的是你可以使用类似 (getExperiment() instanceof ExperimentMultipleRuns) ? ((ExperimentMultipleRuns) getExperiment()).getCurrentIteration : 1 的东西。如果不是运行模型的多次运行实验,则返回 1,如果是,则返回迭代次数。
    • 但请注意,这似乎是糟糕的设计:如果您要为多次运行编写输出,则此代码应该在实验的操作中,而不是在模型中。如果您确实希望模型“知道”它是多次运行实验的一部分并相应地构造输出数据,那么该模型还可以将实验传递给它的迭代次数(作为模型参数)。
    • 谢谢斯图尔特。我创建了参数变化实验,在其中添加了代码 Out_excelFile1.setCellValue("Sink1 Out",2,getCurrentIteration(),2);在 Java 动作中,迭代之后(本杰明描述)。运行main时,参数变化实验是在后台运行还是需要单独运行?
    猜你喜欢
    • 1970-01-01
    • 2016-03-28
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    • 2010-09-18
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多