0

openMDAO でいくつかの問題を設定しました。1 つの "params" ベクトルを抽出し、それを使用して別の入力を設定したいと考えています。基本的に、最初はいくつかのものを最適化し、次にそのソリューションを別の問題で使用して何か他のことをしたいと考えています ( OpenMDAO 内での AMMF の実装を参照)。

交換する必要がある変数に明示的に名前を付ける必要がないこの一般的なものを作成しようとしています。このように、2 つの問題が入力として同じ変数を使用する場合、それはうまくいくはずです...

問題を実行すると、グループから params メンバーにアクセスできますが、その params はデフォルト値で初期化されます。最後の実行の値ではありません。では、そのベクトルを取得するにはどうすればよいでしょうか。

この質問の 2 番目の部分は、1 回の操作ですべてのパラメーターを「設定」する方法だと思います。

  • スタック オーバーフローのばかげた制限は、タイトルに問題という言葉を使用できないことです。わかりましたが、problem という openMDAO オブジェクトを参照したい場合はどうすればよいでしょうか?
4

1 に答える 1

0

params通常、ほとんどの状況で問題のベクトルにアクセスする必要はありません。問題自体を介して実行できるベクトルとの対話のみが必要ですunknowns(例: prob['some_var'])。

あなたの場合、名前付けのみに基づいて完全に自動化するには、ルート グループ ( root.unknowns) から不明なベクトル自体を実際に取得する必要がある場合があります。辞書のようにループして、(var_name, meta_data) ペアを取得できます。 . それを使用して変数値を取得し、それを使用して、使用したい下流の問題で同じ変数名を設定できます。

2 つの問題が完全に同一であると仮定すると、unknowns ディクショナリ内のすべての値をやみくもにループすることができます。ただし、それらが同じではなく、同じ変数名がいくつかあるだけの場合は、もう少し注意して、最初の問題の変数が2番目の問題に存在するかどうかを確認する必要があります.

于 2016-02-17T13:16:52.300 に答える