在实验中管理多个任何逻辑模拟

时间:2014-10-29 15:18:35

标签: anylogic

我们正在开发AnyLogic 7下的ABM,我们希望从单个实验中进行多次模拟。为每个模拟运行设置不同的参数,以便为一小组标准方案生成结果。

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

我们想要的是一种自动运行或单次运行Run,启动模拟循环的方法。在该循环中,将对与传递的参数相关联的变量进行编程调整。

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

我们已经使用帮助示例进行“#34;从外部运行模型而不使用演示文稿窗口"”,将自动运行功能添加到初始实验设置代码块中。需要等待Run 0完成,然后调度Run 1,2等的方法。

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

2 个答案:

答案 0 :(得分:2)

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

希望有所帮助

答案 1 :(得分:1)

和你一样,我遇到了这个问题。
我的目标是使用模型的参数变化和非数值数据的变化,我知道要开始的运行次数。
然后我在Custom Variation的帮助下成功完成了这项任务。

  • 首先,我构建了一个类型为' multiple run'的实验,创建我的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,它通过呈现的子类自动启动另一个多次运行实验。 也许它存在最短的路径,但从我的观点来看,任何逻辑都被正确使用(没有非暴露界面的技巧)并且它按预期工作。