由于openmdao 1.x问题只处理一个驱动程序,并且优化器仍然应该是驱动程序,如何实现多级公式?我应该使用两个问题吗?我应该直接在solve_nonlinear组件方法中调用优化器吗?谢谢。
答案 0 :(得分:2)
发生了一些变化,Problem
不再是一个系统。现在最好的方法是创建一个包含子问题的Component
,告诉它何时运行,并传入和传出数据。见这里的例子:
答案 1 :(得分:1)
处理此问题的计划方法是使用嵌套的问题实例。这在问题类中尚未实现,但它很容易手动实现。
您需要做的就是在SubClass of Problem中定义自己的solve_nonlinear方法。如果您要使用分析衍生物,您还需要实现Jacobian和apply_linear方法,如果您有嵌套优化器,请使用后优化灵敏度。或者您可以强制在包含父组中发生有限差异。
你的solve_linear将接受params,unknowns和resids dictionaries并将相关变量传递给问题向量。从本质上讲,该框架旨在不知道您是否使用嵌套问题。顶级框架认为内部框架只是一个常规组件。