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