1

OpenMDAO の Problem オブジェクトは、オブジェクト内で宣言されたすべての問題変数の辞書のように動作するようにプログラムされています。これで、次のような for ループを使用して通常の辞書を反復処理できます。

for key,value in my_dict.iteritems():
    do_something(key,value)

このようなことは、OpenMDAO の問題で行うことができますか?

辞書を操作するための便利なユーティリティがたくさんあります。それらを使用して OpenMDAO の問題にも対処したいと思います。

ありがとう!

4

2 に答える 2

1

何をしたいのか正確にはわかりませんが、モデル内のすべての変数を反復処理したいようですね? これを行う 1 つの方法は、モデルprob.root.unknownsの上部にあるすべての接続された変数を含むベクトルであるを反復処理することです。Systemサブシステムで指定された接続を含むという意味で再帰的です。ただし、データの受け渡しに関係のないものは含まれていないためComponent、少なくとも に接続されていない入力IndepVarCompは表示されません。

于 2016-05-19T11:52:32.287 に答える
1

この問題は実際には辞書のようなものではなく、ユーザーの便宜のために__getitem____setitem__メソッドを定義しているだけです (コードを参照)。基礎となる辞書のようなオブジェクトにアクセスしたい場合は、prob.root.unknowns 代わりにアクセスできます。これは実際にはディクショナリではなく、VecWrapperインスタンスですが、dict に似ており、ダックタイピングの意味で dict のように使用するために必要なメソッドを備えています。

于 2016-05-19T11:53:24.873 に答える