0

openmdao 1.x の問題は 1 つのドライバーのみを処理し、オプティマイザーは依然としてドライバーであると想定されているため、マルチレベルの定式化をどのように実装できますか? 2つの問題を使用する必要がありますか? 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 は params、unknowns、および resids 辞書を取り込み、関連する変数を問題ベクトルに渡します。基本的に、フレームワークは、ネストされた問題を使用しているかどうかを認識しないように設計されています。最上位のフレームワークは、内側のフレームワークを単なる通常のコンポーネントと見なします。

于 2015-09-17T14:33:21.727 に答える