You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取OpenMDAO Group的未连接外部输入列表?

OpenMDAO:如何列出Group需外部提供的输入?

假设有如下OpenMDAO Group定义:

import openmdao.api as om

class Sys(om.Group):
    def setup(self):
        self.add_subsystem('sys1', om.ExecComp('v1 = a + b'), promotes=['*'])
        self.add_subsystem('sys2', om.ExecComp('v2 = v1 + c'), promotes=['*'])

if __name__ == '__main__':
    prob = om.Problem()
    model = prob.model
    comp = model.add_subsystem('comp', Sys(), promotes=['*'])
    prob.setup()
    prob.run_model()
    comp.list_inputs()

调用comp.list_inputs()后输出如下:

4 Input(s) in 'comp'

varname  val
-------  ----
sys1
  a      [1.]
  b      [1.]
sys2
  c      [1.]
  v1     [2.]

可以看到,输出里包含了内部变量v1——这个变量是Group内部由sys1生成并传递给sys2的,不需要外部提供。我们需要的是只列出必须由外部提供的未连接输入的方法。

解决方案

你可以使用list_inputs方法的connected=False参数,该参数会过滤掉已经在内部连接的输入,只保留未连接的、需要外部提供的变量:

修改代码中的comp.list_inputs()为:

comp.list_inputs(connected=False)

此时输出会变成:

3 Input(s) in 'comp'

varname  val
-------  ----
sys1
  a      [1.]
  b      [1.]
sys2
  c      [1.]

如果想要更简洁的、以Group顶层视角展示的输出,可以加上prom_name=True参数,显示变量的提升名称:

comp.list_inputs(connected=False, prom_name=True)

输出会变成:

3 Input(s) in 'comp'

prom_name  val
---------  ----
a          [1.]
b          [1.]
c          [1.]

这样就能清晰看到所有需要外部提供的输入变量了。

内容的提问来源于stack exchange,提问作者Andrew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 20:20:38