es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tamaño de las salidas en OpenMDAO.

¿Es posible tener listas o arrays como salidas de componentes en openMDAO?

Dado que mi problema se basa en matrices de 6×6 para resolver una ecuación de movimiento en 6 grados de libertad, me gustaría poder hacer lo siguiente:

M = np.ones([6,6])
outputs[‘M’] = M

Sin embargo, esto da como resultado un error:

ValueError: no se puede remodelar el array de tamaño 36 en la forma (1,)

¿Existe alguna forma de evitar pasar cada uno de los 36 valores por separado?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible tener listas o arrays como salidas de componentes en openMDAO. Sin embargo, el error que encontraste indica que la variable de salida estaba configurada para esperar una forma de (1,) en lugar de (6, 6).

    Para evitar pasar cada uno de los 36 valores por separado, puedes pasar el array aplanado como un array de 1D y después darle forma dentro del componente receptor. Esto se puede hacer utilizando la función reshape en NumPy.

    Ejemplo:

    # En el componente que proporciona:
    M = np.ones([6, 6]).flatten()
    outputs['M'] = M
    
    # En el componente receptor:
    M = inputs['M'].reshape((6, 6))
    

    Esto pasará el array aplanado de 1D M como una variable de salida y lo dará forma a una matriz de 6×6 en el componente receptor.

Comments are closed.