【问题标题】:Managing multiple anylogic simulations within an experiment在实验中管理多个任意逻辑模拟
【发布时间】:2014-12-25 09:08:52
【问题描述】:

我们正在 AnyLogic 7 下开发 ABM,并且正处于我们希望通过单个实验进行多个模拟的地步。每次模拟运行都要设置不同的参数,以便为一小部分标准场景生成结果。

我们有一个无需按“运行”即可自动启动的实验。随后按下 Run 会增加实验计数器并重新运行模型。

我们想要一种让自动运行或单按运行来启动模拟循环的方法。在该循环中,将对链接到传递参数的变量进行编程调整。

EDIT- 一个问题是一些参数是字符串。优化或参数变化实验不适合枚举一组要在一组模拟运行中使用的字符串。您可以为一个实验中的所有模拟运行的每个参数设置 a 字符串。

我们使用“在没有演示窗口的情况下从外部运行模型”的帮助示例,将自动运行功能添加到初始实验设置代码块中。需要一种等待 Run 0 完成,然后调度 Run 1、2 等的方法。

非常感谢指向具有此类功能的教程模型或实验 Java 块的代码片段的指针。

【问题讨论】:

  • 正如 Benjamin 所说,您是否知道内置的“多次运行”AnyLogic 实验类型。请参阅帮助中的实验框架。您建议您在外部运行模型,但我认为这没有任何区别;您可以像正常模拟实验一样在外部运行参数变化实验。

标签: anylogic


【解决方案1】:

也许我不明白您的需求,但这听起来确实像是您想要使用“参数变化”实验。您可以指定在哪些步骤中应该改变哪些参数,并且运行实验会根据需要自动启动尽可能多的模拟运行,所有这些都没有动画。

希望对你有帮助

【讨论】:

  • 感谢您的回复。我将再次查看帮助指针。我们已经在使用优化进行一些校准。作为一名试图在 AnyLogic IDE 中进行一些显式控制的软件工程师,我正在寻找使用 JAVA Actions 块而不是预先打包的实验选项的控制。此 ABM 是更大的集成评估模型的一部分,更明确的模型控制将大大简化集成过程。
  • 那么,您可能会追求的是CustomExperiment。使用它,您可以完全以编程方式控制模型何时/何地/如何启动、它如何运行、它运行多少次等。但是,要掌握它是很棘手的,所以如果你使用它——如果它为您工作 - 不要忘记告诉我们其他人您是如何做到的! :D
【解决方案2】:

和你一样,我也遇到过这个问题。
我的目标是在模型中使用参数变化,并且变化是针对非数字数据的,而且我知道要开始的运行次数。
然后我在自定义变体的帮助下成功完成了这项任务。

  • 首先,我构建了一个键入为“多次运行”的实验,创建了我的 GUI(用户能够选择每次运行中使用的字符串值。
  • 然后,我创建了一个新的 java 类,它继承了之前的“多次运行”实验,

在这个类(称为 MyMultipleRunClass)中存在: - 从默认实验中重载 getMaximumIterations 方法,为默认的 anylogic 回调提供正确的迭代次数,并且还使用 idnex 从数组中检索我的参数值, - 静态方法 start 的实现,

public static void start() {
    prepareBeforeExperimentStart_xjal( MyMultipleRunClass.class);
    MyMultipleRunClass ex = new MyMultipleRunClass();
    ex.setCommandLuneArguments_xjal(null);
    ex.setup(null);
}

然后要运行的实验是“空”customExperiment,它会通过提供的子类自动启动另一个多次运行实验。 也许它存在最短路径,但从我的角度来看,任何逻辑都被正确使用(没有非暴露接口的技巧)并且它按预期工作。

【讨论】:

    猜你喜欢
    • 2021-08-24
    • 1970-01-01
    • 2021-04-28
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    相关资源
    最近更新 更多