由于 openmdao 1.x 问题只处理一个驱动程序,并且优化器仍然应该是驱动程序,所以如何实现多级公式?我应该使用两个问题吗?我应该直接在solve_nonlinear 组件方法中调用优化器吗?谢谢。
问问题
183 次
2 回答
2
发生了一些变化,Problem
不再是一个系统。现在最好的方法是创建一个Component
包含子问题,告诉它何时运行,并传入和传出数据。请参见此处的示例:
于 2016-02-09T15:28:05.423 回答
1
处理这个问题的计划方法是使用嵌套的问题实例。这还没有在问题类中实现,但是很容易手动实现。
您需要做的就是在问题子类中定义自己的 solve_nonlinear 方法。如果您要使用解析导数,您还需要实现 Jacobian 和 apply_linear 方法,并且如果您有嵌套优化器,则使用后优化敏感性。或者您可以强制在包含的父组中发生有限差分。
您的 solve_linear 将接收参数、未知数和残差字典,并将相关变量向下传递到问题向量中。本质上,该框架旨在不知道您是否使用嵌套问题。顶层框架认为内部只是一个常规组件。
于 2015-09-17T14:33:21.727 回答