【问题标题】:How to call function between optimization iterations in pyOpt?如何在pyOpt中的优化迭代之间调用函数?
【发布时间】:2016-10-14 06:36:09
【问题描述】:

我想知道是否有一种方法可以将 pyOpt 传递给 应该在每次迭代结束时调用?

我需要这样的东西的原因是我正在运行 FEA 在每个功能评估中进行模拟,我想输出 每次后将 FEA 结果(位移、应力)保存到 ExodusII 文件中 优化迭代。我最初将 writeExodus 函数放在 “功能评估”功能的结束,我的问题是 每次都会将新的“伪时间步长”写入我的出埃及记文件 对函数进行评估,而不是仅在每次迭代结束时进行评估, 所以这显然会导致外流的额外不必要的输出 数值微分文件(有限差分,复杂步骤)和 对于每次迭代进行多个函数评估的优化器 (即检查近似值是否保守时的 GCMMA)。

那么,有没有办法告诉 pyOpt 执行一个函数(即我的 exodusWrite 函数)在每次迭代结束时?或者, 无论如何我可以在 pyOpt 中跟踪优化器迭代,以便 在我的“功能评估”功能中,我可以跟踪 优化器迭代,只在迭代次数改变时才写出exodus输出?

【问题讨论】:

    标签: python optimization openmdao


    【解决方案1】:

    您可以将您的函数放入您放在模型末尾的组件中。由于它没有任何连接,因此您需要为您的组手动set the run order

    或者,您可以破解 pyopt_sparse 驱动程序代码来手动调用您的函数。如果this call,您只需在最后添加对您选择的方法的调用,然后在 pyopt_sparse 要求客观评估时调用它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-16
      • 2021-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多