大家好,如果我犯了一些错误,请原谅我,我英语说得不太好。
尝试向 OpenMdao 中的组添加约束时出现 TypeError。我声明了一个组件:
class ShipOpenmdao(Component):
def __init__(self, **d):
super(ShipOpenmdao, self).__init__()
[...]
self.add_param('x', val=np.zeros(3))
然后是 Group :
class Point(Group):
def __init__(self, **d):
super(Point, self).__init__()
self.add('p', IndepVarComp('x', np.zeros(3)))
self.add('s', ShipOpenmdao(**d))
self.connect('p.x', 's.x')
ship = self.s
for i in range(len(ship.Azimuth)):
n = len(ship.Tunnel) + len(ship.Thruster) + 2*i
self.add('con%d' % i,
ExecComp('c{0} = x[{1}]*x[{1}] + x[{2}]*x[{2}]'.format(i, n, n+1)))
self.connect('p.x', 'con%d.x' % i)
我明白了:
TypeError:源“px”的类型(“numpy.ndarray”)必须与目标“con0.x”的类型(“float”)相同。
几个小时以来我一直试图找出问题所在,但我不明白为什么我的“x”会被视为浮点数......我遵循抛物面教程声明约束的方式,而Sellar Problem 教程表明可以在字符串内部使用 ndarray 来声明约束。
有人看到我的代码有什么问题吗?
提前谢谢你
盖尔