0

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

4

2 回答 2

2

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

如何在 OpenMDAO 1.x 中使用嵌套问题?

于 2016-02-09T15:28:05.423 回答
1

处理这个问题的计划方法是使用嵌套的问题实例。这还没有在问题类中实现,但是很容易手动实现。

您需要做的就是在问题子类中定义自己的 solve_nonlinear 方法。如果您要使用解析导数,您还需要实现 Jacobian 和 apply_linear 方法,并且如果您有嵌套优化器,则使用后优化敏感性。或者您可以强制在包含的父组中发生有限差分。

您的 solve_linear 将接收参数、未知数和残差字典,并将相关变量向下传递到问题向量中。本质上,该框架旨在不知道您是否使用嵌套问题。顶层框架认为内部只是一个常规组件。

于 2015-09-17T14:33:21.727 回答