Anylogic - 实验中的计数变量

Posted

技术标签:

【中文标题】Anylogic - 实验中的计数变量【英文标题】:Anylogic - Counting Variable in an experiment 【发布时间】:2015-09-27 10:07:27 【问题描述】:

我目前正在从事与医疗保健部门相关的 Anylogic 项目。 为了获得有意义的结果,我设置了一个 500 次重复的参数变化实验。每次复制后,我的主要方法应该将某些数据输出到 Excel 表中。 现在,为了拥有一个包含 500 个填充列(每个复制 1 个)的数据集,我需要一个表示列号的公共变量。它应该通过实验访问,在每次复制后增加 1,并且还可以通过 main 方法访问,以便为 excel 输出传输下一个列号。到目前为止,我还没有找到在 main-method 或其他方式中从模拟中访问变量的命令。

我希望你能给我一个有用的提示。

非常感谢。

格雷格

【问题讨论】:

【参考方案1】:

要访问主对象(或任何其他代理)中的复制和/或迭代(参数集)编号,您可以这样尝试:

Experiment exp = getExperiment();
if( exp instanceof ExperimentParamVariation )

    int curRep = ((ExperimentParamVariation)exp).getCurrentReplication();
    int curIter = ((ExperimentParamVariation)exp).getCurrentIteration();

else 

    //whatever you want to do in case another experiment type is running

要从实验中访问主对象的变量或方法,您必须单击实验,转到属性窗口和“Java 操作”区域。在那里,您可以在模拟代码之前和之后指定您可以访问包含当前主对象的根变量的位置。因此,如果您在主对象中有某个结果变量(例如 numberOfPatients),您可以简单地通过以下方式访问它:root.numberOfPatients

【讨论】:

【参考方案2】:

我不知道是否可以访问运行号。也许你可以在实验对象中找到一些东西(使用getExperiment())。

当我使用参数变化时,我通常将信息与系统时间和参数设置一起存储在 csv 文件或 sql-db 中。 例如。 dateTime, variableparamA, variableparamB, variableparamC, dataValueORresult。 通过这种方式,您可以将数据直接导入 Excel(导入数据功能)并使用数据透视表过滤您的结果。稍后当您重新运行实验时,您只需右键单击 Excel 表并点击更新,即可获得最新结果。

【讨论】:

您是否有示例说明如何执行此操作(将信息存储在实验中的 csv 文件中)?我还没有找到一个可以复制的例子。谢谢!

以上是关于Anylogic - 实验中的计数变量的主要内容,如果未能解决你的问题,请参考以下文章

从主实验获取变量结果到参数变化实验 - AnyLogic

AnyLogic:有没有办法在优化实验中指定决策变量数组?

AnyLogic中的事件触发变量

将实验的所有复制数据保存在anylogic中

从另一个代理(anylogic)访问“Main”中的变量

在 AnyLogic 多目标优化中引用非决策/非优化变量