【问题标题】:How do I create monte carlo results on a graph using parameter variation experiment on anylogic?如何使用anylogic上的参数变化实验在图表上创建蒙特卡罗结果?
【发布时间】:2019-11-09 05:52:51
【问题描述】:

我正在通过使用 monte carlo 运行 100 次来计算行人的疏散时间。我在创建图表时遇到了麻烦,并且在步骤中非常困惑。有些东西不见了,我不确定它是什么。

我创建了一个参数变化实验页面,并包含一个 Histogram2D 数据和一个分析图表,但我不知道如何从主数据中读取我想要的数据。

下图是我试图从尚未链接的 timeMeasureEnd 获取的数据。

我使用代码 root.timeEnd 但得到这个错误,如下所示

【问题讨论】:

  • 您的命令以某种方式被解释为变量声明。我不知道为什么,但似乎你需要用你的 root.timeEnd 来避免这种解释。例如尝试 traceln(root.timeEnd),这应该可以工作。
  • 据说对于ParametersVariation类型的方法traceIn(DataSet)是未定义的。在我的第一张图片中,我认为我没有正确设置我的数据。如何将 timeEnd 与 timeMeasureEnd 联系起来?

标签: anylogic


【解决方案1】:

您可以直接访问timeMeasureEnd的内部数据集:timeMeasureEnd.dataset。请参阅 documentation 中引用的 AnyLogic 示例模型测量停留时间

至于您的错误,您的语句被解释为变量声明。只要你把一些有用的代码放在那里,它就可以工作,例如。在 Experiment 类中对本地数据集的简单分配:

dataset = root.timeMeasureEnd.dataset;

每次运行后保存最长的测量时间:

  • 添加数据集,停用自动更新
  • 添加整数变量iteration保存当前迭代索引
  • 模拟运行后代码中使用以下代码:
iteration++;
dataset.add(iteration,root.timeMeasureEnd.dataset.getYMax());

【讨论】:

  • 是的,非常感谢先生。它确实有效,当我单击数据集时,我可以在每次运行后看到结果发生变化。但是有没有可能我可以保存这些数据或将其显示在图表或表格中?例如,对于 100 次运行,我想获取或存储每次运行期间总疏散时间的所有结果?
  • 有很多选项,取决于您希望如何聚合和显示数据...您可以写入文件、写入数据库、聚合到平均值并将它们收集到另一个数据集中...你有无限的可能性,这本身就是另一个问题,很大程度上取决于你的要求。对于总疏散时间,您在模型中的何处收集?还是您的意思是 timeMeasurements 的最大值?无论如何,只需在模型运行后访问它并将其保存在 Experiment 中的数据集中并可视化它。
  • 哦,我明白了。我只想要每次运行的最大疏散时间。我将在这个问题上创建另一个问题,但非常感谢您的帮助。
  • 如果我使用数据集创建图表,为什么我在图表上看不到任何结果?当我点击数据集但图表上没有变化时,我可以看到我的结果。
  • 您可能需要在 x 轴上定义什么?通常那是时间戳,但是由于您将值存储在实验中,因此您没有时间。因此,您必须为 x 轴定义一个值,可能是从 1 到 100 的运行编号?
猜你喜欢
  • 2019-11-07
  • 1970-01-01
  • 2021-02-02
  • 1970-01-01
  • 2021-12-26
  • 2023-03-02
  • 2013-02-28
  • 2018-06-21
  • 2013-01-18
相关资源
最近更新 更多