AnyLogic:Monte Carlo 离散事件仿真中的总延迟时间仿真

AnyLogic: Monte Carlo Simulation for total delay time in a Discrete Event Simulation

我打算做一个Monte Carlo模拟,但是AnyLogic页面上的介绍并没有真正帮助我。我想通过 uniform(0,1) 和 运行 模型改变一个参数 1000 次,并将结果保存在 excel sheet 中。 我的想法是有一个名为“durchlaufzeit”的变量,它在接收器处获取模型时间。所以在水槽里我说 durchlaufzeit = Math.round(time())。这是获得总延迟时间的正确方法吗?还是有其他选择?

接收器中的命令如下所示: 所以在Discrete Event Simulation的最后我想把整个仿真的延迟时间写进我的ExcelSheetergebnisse。我通过以下方式创建了一个 monte carlo 实验:

在我看来,蒙特卡洛应该执行我写入接收器的代码。但是,当我 运行 Monte Carlo 我有以下问题: 如果我注释掉有问题的代码片段,则会执行 MonteCarlo 实验,但是当我查看我的 Excel Sheet 时,没有数据写入它(来自放置在接收器上的代码)。我哪里弄错了?

这是我对您的问题的调查结果

  1. 您在为 Monte Carlo 实验创建的默认 UI 中遇到的错误只是由于 AnyLogic 自动 UI 创建器的缺点。

  2. 我没有看到任何将 durchlaufzeit 值写入 excel sheet

    的代码
  3. 你确定在实验后关闭Excelsheet吗? 您是否完成了教程并使用 Excel 文件查看了示例模型子? https://anylogic.help/anylogic/connectivity/excel-file.html#excel-file

以上是我的建议:

如果您想 运行 进行多次实验,尤其是在 parralele 中,您必须从模型外部提供要写入的文件。否则 Main 的每个实例都将创建并覆盖其他实例创建的现有文件...

因此您需要 Monte Carlo(或您的正常实验页面)上的文件对象和 main 上的参数以将其传递给。

出于各种原因,我永远不会使用 Excel,而是使用文本文件。它体积小,重量轻,很容易只写在下一行,可以在 Excel 中打开,最重要的是 - 它是线程安全的。

所以我会有这个设置。

重要的是要记得关闭文本文件。

对于这个简单的测试,我在 Main 上有一个事件,它将一些随机数据写入 Main 上的 textFile 参数,该参数的类型为 TextFile.

在 运行 进行 10 次迭代的 Monte Carlo 实验后,我在文本文件中得到 10 个随机数。