如何使用anylogic中的参数变化从图表上的main获取某些数据?

Posted

技术标签:

【中文标题】如何使用anylogic中的参数变化从图表上的main获取某些数据?【英文标题】:How to obtain certain data from main on a graph using parameter variation in anylogic? 【发布时间】:2019-11-10 11:19:34 【问题描述】:

我在编码过程或从主要提取数据的步骤或将数据提取到 anylogic 中的参数变化实验时遇到问题。由于随机火灾阻塞,我目前正在研究总疏散时间。

目前,我已经成功获得了研究中 100 次跑步的总最大疏散时间,但我还需要另一组数据来了解每次跑步期间被阻塞的出口数量。我的主要有(3 个出口)availableExits 的集合,我可以看到在模拟过程中被阻挡的东西。

此外,我想获取特定时间撤离人数的数据(例如,在 120 秒时使用出口的行人数量)。我可以从 timeMeasureEnd 主要看到这一点,并创建一个直方图分布图,显示每次逃跑的行人数量。我已经设法在参数变化中创建了一个,但是当我运行实验时,我无法存储或查看数据,因为它在每次运行后都会不断变化。

这是模拟运行后输入的分析直方图数据的代码

data = root.timeMeasureEnd.distribution;

【问题讨论】:

【参考方案1】:

我建议将一个数据集添加到您的主数据集,该数据集将存储您希望在参数变化中保留的所有值。数据集与直方图数据的不同之处在于它不聚合,它只是一个原始的值数组,以后不会有“聚合聚合数据”的问题。

因此,每次模拟运行后,您都可以通过“根”引用访问 main 中的数据集(因为您已经这样做了)并循环访问它以一一存储所有值。

【讨论】:

我在 main.js 中添加了一个数据集。在从 main 读取数据的参数变化中,我使用了一个名为迭代 1 和数据集 1 的变量这是模拟运行后的代码:迭代 1++; dataset1.add(iteration1,root.availableExits());我收到错误说明:“Main 类型的方法 availableExits() 未定义。位置:BlockEFireEvacuation/MonteCarloParametersVariation” availableExits - 是一个集合,对吧?并且您想在每次迭代后保存它的大小?然后只需使用以下代码: dataset1.add(iteration1,root.availableExits.size()); 哦,是的,它工作得很好。第二部分呢。从 timeMeasureEnd 我想获取 120 秒时退出的人数的数据量? 我只是认为不需要变量迭代。我可以获得学习所需的值。我仍然无法找到一种方法来获取有关退出行人数量的信息,类似于我尝试使用 dataset2.add(root.timeMeasuredEnd.dataset.distribution());但它说“timeMeasuredEnd 无法解析或不是一个字段。” @Sharrif,也许是一个简单的错字?你定义了“timeMeasureEnd”,但在你的代码行中你写了“timeMeasuredEnd”?

以上是关于如何使用anylogic中的参数变化从图表上的main获取某些数据?的主要内容,如果未能解决你的问题,请参考以下文章

AnyLogic 中的参数变化:特定变化的数据

Anylogic 参数变化实验:我以何种方式使用“表达式”列在其允许的状态下改变布尔参数?

如何将 Main 中的参数提供给 Anylogic 中的代理

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

从 Anylogic 数据库中导出数据

从 Excel 中逐行读取参数以进行 Anylogic 实验