2

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

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

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

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

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

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

4

2 回答 2

2

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

希望有帮助

于 2014-10-30T06:15:46.147 回答
2

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

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

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

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

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

于 2016-01-04T16:26:25.473 回答