如何设置 Anylogic 优化实验?

Posted

技术标签:

【中文标题】如何设置 Anylogic 优化实验?【英文标题】:How to set up Anylogic Optimization experiment? 【发布时间】:2015-06-15 10:20:45 【问题描述】:

有人试过用 Anylogic 进行优化实验吗? 我正在尝试通过模拟优化一组参数。 Anylogic 表示,在每次模拟运行结束时都会调用目标函数。 问题是它似乎随时调用它......我很困惑。 我怎样才能确保它在最后被调用?我需要在优化器中调整某个功能吗?

谢谢! L.

【问题讨论】:

你能再精确一点吗?例如,是什么让您认为在每次模拟结束时都不会调用它?你做了什么得出这个结论的? 嘿。我做了一个测试,在一次模拟的每一步中,我只是将值 1 添加到我想要优化的累积误差中。因此,它应该为每次运行返回相同的值(即一次模拟运行中的步数)。但是它返回 0。我想我发现了这个问题。似乎错误变量不能声明为静态,否则它与其他模拟共享(看起来很奇怪,我知道......)。 Anylogic 要求误差函数是静态的。这就是为什么我将它的参数设置为静态的。 【参考方案1】:

目标函数确实在每次模拟运行结束时被调用,它不会在任何时候被调用。这通常是由于您的模型中存在概念错误,一些选项可能是:

    您的模拟实验中的配置未直接转移到您的优化实验中。这使您认为模拟完全相同,而事实并非如此。例如,您在预期的不同日期运行模拟...仔细检查所有配置 优化在没有随机种子的情况下运行。在某些情况下,这可能会导致混淆。如果您使用的是固定种子,请确保这是您想要的。 目标函数的一个或多个变量会在模拟结束时重置,从而始终为您提供相同的目标函数值。在这种情况下,您必须仔细检查您的模型。 使用静态变量:如果您不确定静态变量的作用,请不要使用它们...静态变量与类的所有实例共享,因此当您看到该变量与其他模拟。

大多数时候,优化实验并不能神奇地发挥作用(有时确实如此),您必须仔细构建它才能按预期工作。

总结:目标函数总是在最后被调用,如果你觉得不是,错误就在你身边。

【讨论】:

以上是关于如何设置 Anylogic 优化实验?的主要内容,如果未能解决你的问题,请参考以下文章

优化实验技术错误 Anylogic

AnyLogic:有没有办法在优化实验中指定决策变量数组?

在 AnyLogic 多目标优化中引用非决策/非优化变量

使用 Anylogic 进行优化

Anylogic:优化期间截断类错误

Anylogic - 如何在模拟实验中实现 CRN (Common Random Numbers) 方法?