如何在pyOpt的优化迭代之间调用函数



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

我需要这样的东西的原因是我正在运行一个FEA仿真中每个函数的求值,我要输出的有限元结果(位移,应力)到ExodusII文件之后优化迭代。我最初将writeExodus函数放在结束了"函数求值"函数,我的问题是每次都将一个新的"伪时间步骤"写入出埃及文件函数不是在每次迭代结束时才求值,因此,这显然会导致额外的不必要的产出,从而导致人口外流数值微分文件(有限差分,复步)和对于每次迭代进行多个函数计算的优化器(即GCMMA在检查近似是否保守时)。

那么,是否有一种方法可以告诉pyOpt执行一个函数(即myexodusWrite函数)在每次迭代结束时?或者,我是否可以跟踪pyOpt中的优化器迭代在我的"函数求值"函数中,我可以跟踪优化器迭代,只在迭代次数改变时写入出埃及记输出?

你可以把你的函数放到一个组件中,然后放在模型的末尾。因为它没有任何连接,所以您需要为您的组手动设置运行顺序。

或者,您可以直接修改pyopt_sparse驱动程序代码来手动调用您的函数。你只需要在最后为你选择的方法添加一个调用如果这个调用在pyopt_sparse请求一个客观的求值

时它就会被调用

最新更新