OpenMDAO 中的问题对象被编程为表现得像一个字典,其中包含对象中声明的所有问题变量和其他变量。现在我可以使用 for 循环遍历普通字典,例如:
for key,value in my_dict.iteritems():
do_something(key,value)
OpenMDAO 问题可以解决这样的问题吗?
我有一堆有用的实用程序来处理字典。我也想用它们来处理 OpenMDAO 问题。
谢谢!
OpenMDAO 中的问题对象被编程为表现得像一个字典,其中包含对象中声明的所有问题变量和其他变量。现在我可以使用 for 循环遍历普通字典,例如:
for key,value in my_dict.iteritems():
do_something(key,value)
OpenMDAO 问题可以解决这样的问题吗?
我有一堆有用的实用程序来处理字典。我也想用它们来处理 OpenMDAO 问题。
谢谢!
我不确定你想做什么,但听起来你想遍历模型中的所有变量?一种方法是迭代prob.root.unknowns
,它是包含System
模型顶部所有连接变量的向量。它是递归的,因为它包括在子系统中指定的连接。但是,它不包含与数据传递无关的任何内容,因此任何Component
至少未连接到 an 的输入IndepVarComp
都不会显示在其中。
这个问题并不像字典,我们只是在其上定义__getitem__
和__setitem__
方法以方便用户(参见代码)。如果你想访问底层的类似 dict 的对象,你可以访问prob.root.unknowns
。这实际上仍然不是字典,而是VecWrapper实例,但它类似于 dict 并且具有像鸭子类型一样使用的必要方法。