0

如果出现故障,我需要能够指定退出标志。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
4

1 回答 1

1

这里有很多问题:

1) “如何将故障信息从组件传播到优化器?” 我们目前没有办法处理这个问题。不过,我们将在不久的将来进行这项工作

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

3)如果一切都失败了,驱动程序能否报告一个整体退出状态。同样,我们还没有以一般方式实现这一点。您在 pyopt_sparse 驱动程序中找到的选项是文档字符串中的错误。不过,有一个exit_flag 属性是根据内部 pyopt 状态设置的。

于 2016-03-01T00:49:11.293 回答