如何设置 Anylogic 优化实验?
Posted
技术标签:
【中文标题】如何设置 Anylogic 优化实验?【英文标题】:How to set up Anylogic Optimization experiment? 【发布时间】:2015-06-15 10:20:45 【问题描述】:有人试过用 Anylogic 进行优化实验吗? 我正在尝试通过模拟优化一组参数。 Anylogic 表示,在每次模拟运行结束时都会调用目标函数。 问题是它似乎随时调用它......我很困惑。 我怎样才能确保它在最后被调用?我需要在优化器中调整某个功能吗?
谢谢! L.
【问题讨论】:
你能再精确一点吗?例如,是什么让您认为在每次模拟结束时都不会调用它?你做了什么得出这个结论的? 嘿。我做了一个测试,在一次模拟的每一步中,我只是将值 1 添加到我想要优化的累积误差中。因此,它应该为每次运行返回相同的值(即一次模拟运行中的步数)。但是它返回 0。我想我发现了这个问题。似乎错误变量不能声明为静态,否则它与其他模拟共享(看起来很奇怪,我知道......)。 Anylogic 要求误差函数是静态的。这就是为什么我将它的参数设置为静态的。 【参考方案1】:目标函数确实在每次模拟运行结束时被调用,它不会在任何时候被调用。这通常是由于您的模型中存在概念错误,一些选项可能是:
-
您的模拟实验中的配置未直接转移到您的优化实验中。这使您认为模拟完全相同,而事实并非如此。例如,您在预期的不同日期运行模拟...仔细检查所有配置
优化在没有随机种子的情况下运行。在某些情况下,这可能会导致混淆。如果您使用的是固定种子,请确保这是您想要的。
目标函数的一个或多个变量会在模拟结束时重置,从而始终为您提供相同的目标函数值。在这种情况下,您必须仔细检查您的模型。
使用静态变量:如果您不确定静态变量的作用,请不要使用它们...静态变量与类的所有实例共享,因此当您看到该变量与其他模拟。
大多数时候,优化实验并不能神奇地发挥作用(有时确实如此),您必须仔细构建它才能按预期工作。
总结:目标函数总是在最后被调用,如果你觉得不是,错误就在你身边。
【讨论】:
以上是关于如何设置 Anylogic 优化实验?的主要内容,如果未能解决你的问题,请参考以下文章