如果出现故障,我需要能够指定退出标志。 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
答案 0 :(得分:1)
这里有很多问题:
1)“如何将故障信息从组件传播到优化器?” 我们目前没有办法解决这个问题。我们将在不久的将来开展工作
2)如果某个组件发生故障,那么正确的响应是什么? 取决于你在做什么。对于DOE,您应该只记录失败的案例并继续。对于无梯度方法,可能需要某种客观的惩罚。对于基于梯度的算法,您可能需要在线搜索上进行回溯(或使用其他类似的回溯机制)。
3)如果全部失败,驱动程序是否可以报告整体退出状态。 同样,我们还没有以一般方式实现这一点。您在pyopt_sparse驱动程序中找到的选项是doc-string中的错误。有一个exit_flag attribute that gets set based on the internal pyopt state though.