如何使用openmdao 1.x设置多级MDO配方?

时间:2015-09-16 15:09:44

标签: multi-level openmdao

由于openmdao 1.x问题只处理一个驱动程序,并且优化器仍然应该是驱动程序,如何实现多级公式?我应该使用两个问题吗?我应该直接在solve_nonlinear组件方法中调用优化器吗?谢谢。

2 个答案:

答案 0 :(得分:2)

发生了一些变化,Problem不再是一个系统。现在最好的方法是创建一个包含子问题的Component,告诉它何时运行,并传入和传出数据。见这里的例子:

How to use nested problems in OpenMDAO 1.x?

答案 1 :(得分:1)

处理此问题的计划方法是使用嵌套的问题实例。这在问题类中尚未实现,但它很容易手动实现。

您需要做的就是在SubClass of Problem中定义自己的solve_nonlinear方法。如果您要使用分析衍生物,您还需要实现Jacobian和apply_linear方法,如果您有嵌套优化器,请使用后优化灵敏度。或者您可以强制在包含父组中发生有限差异。

你的solve_linear将接受params,unknowns和resids dictionaries并将相关变量传递给问题向量。从本质上讲,该框架旨在不知道您是否使用嵌套问题。顶级框架认为内部框架只是一个常规组件。