Optimization 如何设置逻辑优化实验?

Optimization 如何设置逻辑优化实验?,optimization,simulation,anylogic,Optimization,Simulation,Anylogic,有人试过用Anylogic做优化实验吗? 我试图通过模拟优化一组参数。 Anylogic表示在每次模拟运行结束时调用目标函数。 问题是它似乎在任何时候调用它。。。我很困惑。 我如何确保在最后调用它?优化器中是否有需要调整的功能 谢谢! L.目标函数确实在每次模拟运行结束时调用,但在任何时候都不会调用。这通常是由于模型中的概念错误造成的,有些选项可能是: 您的模拟实验中的配置没有直接传输到优化实验。这使您认为模拟是完全相同的,而事实并非如此。例如,您在不同的日期运行模拟,您希望。。。仔细检查所有配

有人试过用Anylogic做优化实验吗? 我试图通过模拟优化一组参数。 Anylogic表示在每次模拟运行结束时调用目标函数。 问题是它似乎在任何时候调用它。。。我很困惑。 我如何确保在最后调用它?优化器中是否有需要调整的功能

谢谢!
L.

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

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


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

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