pyOptSparse 驱动程序中的退出标志

Exit flag in pyOptSparseDriver

我需要能够在出现问题时指定退出标志。 pyoptsparse_driver 的 OpenMDAO 文档有退出标志的选项。但是,当我 运行 它带有一个退出标志作为选项时,它说 Option 'exit_flag' has not been added。此外,我也不确定如何实际指定是否失败。我是否需要将标志从在 solve_nonlinear() 中失败的组件传递出去,并以某种方式使用它来设置 pyoptsparse_driver 上的选项?我想做类似这样的事情,但我不确定语法,也找不到示例:

def solve_nonlinear(self, params, unknowns, resids):
    unknowns['y'], exit_flag = function(params['x'])
    self.exit_flag = exit_flag

这里有很多问题:

1) "How do I propagate failure information from a component up to the optimizer?" 我们目前没有办法处理这个问题。这是我们将在不久的将来努力的事情

2) 如果组件确实发生故障,正确的响应是什么? 取决于你在做什么。对于 DOE,您可能应该只记录失败的案例并继续进行。对于无梯度方法,可能需要某种 objective 惩罚。对于基于梯度的算法,您可能需要在线搜索时回溯(或使用其他类似的回溯机制)。

3)万一全部都失败了,驱动能不能报告一个整体的退出状态。 同样,我们还没有以一般方式实现这一点。您在 pyopt_sparse 驱动程序中找到的选项是文档字符串中的错误。有一个exit_flag attribute that gets set based on the internal pyopt state though.