Hallo allerseits, bitte vergib mir, wenn ich ein paar Fehler mache, ich spreche kein Englisch so gut.TypeError beim Deklarieren einer Constraint in openmdao (mein ndarray ist für ein float)
Ich erhalte einen TypeError, während ich versuche, einer Gruppe in OpenMdao eine Einschränkung hinzuzufügen. ich eine Komponente erklärt:
class ShipOpenmdao(Component):
def __init__(self, **d):
super(ShipOpenmdao, self).__init__()
[...]
self.add_param('x', val=np.zeros(3))
und dann eine Gruppe:
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)
und ich bekomme diese:
TypeError: Type ('numpy.ndarray') of source 'p.x' must be the same as type ('float') of target 'con0.x'.
Ich habe zu finden versucht, was stundenlang falsch ist, aber ich sehe nicht, warum mein 'x' als Float betrachtet würde ... Ich folgte dem Weg, der die Paraboloid tutorial Constraints deklariert, und die Sellar Problem tutorial zeigen s dass ein ndarray innerhalb der Zeichenkette verwendet werden kann, um die Einschränkung zu deklarieren.
Kann jemand sehen, was in meinem Code falsch ist?
Danke von vorab
Gaël