OpenMDAO 处理组内的错误

OpenMDAO handling errors within groups

我正在尝试 运行 在 OpenMDAO 中使用 SimpleGADriver 进行优化。我的模型包括一个带有非线性求解器的循环(子系统),其中包含一个有时无法计算其响应的组件。有没有办法让这个驱动在遇到这个错误时继续下一次迭代(驱动的迭代),即有没有办法打破非线性求解器的解决方案并继续驱动的下一次迭代?

假设您的组件知道它何时无法计算其响应,它可以引发 om.AnalysisError。当 SimpleGADriver 检测到这一点时,它会将其标记为失败点,并移至下一个点以在当前生成中进行评估。但是,如果您有嵌套的非线性求解器(即组件上方层次结构中不止一组的求解器),那么您还需要在这些求解器中将 reraise_child_analysiserror 设置为 True。

我查看了我们的文档,没有这方面的示例,但您可以在该测试中看到 AnalysisError 用法:

https://github.com/OpenMDAO/OpenMDAO/blob/master/openmdao/test_suite/components/ae_tests.py

在此测试中,您还可以看到带有 reraise_child_analysiserror 的嵌套求解器案例:

https://github.com/OpenMDAO/OpenMDAO/blob/3460c29adba3b280fba84addd16a56036b9332ad/openmdao/solvers/nonlinear/tests/test_nonlinear_block_gs.py#L24