OpenMDAO中的Problem对象被编程为行为类似于对象中声明的所有Problem变量的字典以及what-not。现在我可以使用for循环遍历普通词典:
for key,value in my_dict.iteritems():
do_something(key,value)
这样的事情可以用OpenMDAO问题完成吗?
我有一堆有用的工具用于处理字典。我也想用它来处理OpenMDAO问题。
谢谢!
答案 0 :(得分:1)
我不确定你想做什么,但听起来你想迭代模型中的所有变量?您可以这样做的一种方法是迭代prob.root.unknowns
,这是包含模型顶部System
中所有连接变量的向量。它是递归的,它包含在子系统中指定的连接。但是,它不包含任何与数据传递无关的内容,因此任何至少未连接到Component
的{{1}}输入都不会显示在其中。< / p>
答案 1 :(得分:1)
问题并不像字典,我们只是在其上定义__getitem__
和__setitem__
方法,以方便用户(see code)。如果要访问基础类似dict的对象,可以访问prob.root.unknowns
代替。这仍然不是一个字典,而是一个VecWrapper实例,但它类似于dict,并且具有必要的方法,可以像鸭子一样使用。