我目前正在开展与医疗保健行业相关的Anylogic项目。 为了获得有意义的结果,我设置了一个参数变化实验,重复500次。每次复制后,我的main方法应该将某些数据输出到Excel工作表中。 现在,为了拥有500个填充列的数据集(每次复制1个),我需要一个代表列号的公共变量。它应该通过实验访问,在每次复制后增加1,并且也可以通过main方法访问,以便传输excel输出的下一个列号。到目前为止,我还没有找到用于从主方法或其他方式访问模拟中的变量的命令。
我希望你能给我一个有用的提示来解决这个问题。
非常感谢。
格雷格
答案 0 :(得分:0)
我不知道是否可以访问运行号码。也许你可以在实验对象中找到一些东西(使用getExperiment()
)。
当我使用参数变化时,我通常将信息存储在csv文件或sql-db中,并带有系统时间和参数设置。
例如。 dateTime, variableparamA, variableparamB, variableparamC, dataValueORresult
。
这样,您可以将数据直接导入Excel(导入数据功能)并使用数据透视表来过滤结果。稍后当您重新运行实验时,您可以右键单击excel表并点击更新,然后您将获得最新结果。
答案 1 :(得分:0)
要访问主对象(或任何其他代理)中的复制和/或迭代(parameterset)编号,您可以这样尝试:
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