私は OpenMDAO を初めて使用し、問題を定式化する方法をまだ学んでいます。簡単な例として、指定された境界を持つ 3 つの入力変数があるとします。
1 <= x <= 10
0 <= y <= 10
1 <= z <= 10
そして、次のように定義された4つの出力があります。
f1 = x * y
f2 = 2 * z
g1 = x + y - 1
g2 = z
私の目標は、f1 * g1 を最小化することですが、制約 f1 = f2 および g1 = g2 を強制します。たとえば、1 つの解は x=3、y=4、z=6 です (これが最適かどうかはわかりません)。
この単純な問題の場合、出力の等値制約をドライバーに渡すだけでよいでしょう。しかし、私の実際の問題では、すべての制約を満たす最初の開始点を見つけるのは難しく、その結果、オプティマイザーは何もできませんでした。y と z を暗黙的なコンポーネントの状態として定義し、非線形ソルバーに x を指定して y と z の正しい値を計算させ、x を最適化ドライバーに渡すことができると思います。
これは可能なアプローチですか?もしそうなら、この場合、暗黙的なコンポーネントはどのようになりますか? セラー問題のチュートリアルを見ましたが、このケースに翻訳できませんでした。