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.

Cómo configurar las opciones de estado, control y parámetro en problemas dimensionados de Dymos?

Tengo una ecuación diferencial ordinaria (ODE) dada en la forma a1, donde x, u y d son vectores (por ejemplo, a2). He formulado este sistema en OpenMDAO/Dymos utilizando entradas y salidas dimensionadas.

self.add_input('x', shape=(num_nodes, Nx))

para Nx estados. Ver: https://openmdao.github.io/dymos/getting-started/defining-odes.html?highlight=dimensioned#dimensioned-inputs-and-outputs

Mi ODE y trayectoria funcionan bien, sin embargo, tengo interés en tener cierta información aclarada:

(1) Veo que al agregar estados, entradas y parámetros, puedo proporcionar restricciones de caja únicas a través de upper y lower (https://openmdao.github.io/dymos/features/phases/constraints.html?highlight=dimensioned#path-constraints). Por ejemplo, el estado 1 puede tener límites [0,1], mientras que el estado 2 tiene límites [-1,5]. Mi pregunta es, ¿funciona de la misma manera proporcionar información de ref y ref0? Lo probé (por ejemplo, ref0 = [0,-1]), pero no puedo decir si está haciendo algo en realidad.

(2) ¿Se pueden especificar las unidades de elementos específicos de los problemas dimensionados? Por ejemplo, el estado 1 es una temperatura y el estado 2 es un voltaje. No parece que pueda hacer simplemente:

self.add_input('x', shape=(num_nodes, 2), units=['K', 'V'])

porque esto devuelve un error.

(3) ¿Se pueden especificar propiedades de optimización diferentes para piezas individuales en los vectores de estado, entrada y dimensión? Por ejemplo, digamos que quiero optimizar la entrada 1 (opt=True), pero no la entrada 2 (opt=False). Idealmente, esperaría que

phase.add_parameter('u', opt=[True, False])

pero esto devuelve un error.

Si esta funcionalidad es posible, ¿podría indicarme dónde puedo encontrar más información? He revisado la documentación de Dymos pero no pude encontrar mucho sobre el tema.

Tags:  

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en OpenMDAO, puedo proporcionar las siguientes respuestas a tus preguntas:

    1. Al suministrar información de ref y ref0, no funciona de la misma manera que suministrar restricciones utilizando lower y upper. ref y ref0 se utilizan para escalar variables de entrada/salida y no se utilizan para imponer restricciones. Solo se utilizan para escalar variables y asegurarse de que estén dentro de un rango específico. Por ejemplo, si deseas asegurarte de que tus entradas y salidas se encuentren dentro de un rango específico o tengan unidades específicas, puedes utilizar ref0 y ref para escalar todas las variables.
    2. Sí, puedes especificar las unidades de elementos específicos en los problemas con dimensiones. Pero necesitas definir cada estado con su propia declaración add_input(). Por ejemplo, si el estado 1 es temperatura y el estado 2 es voltaje, puedes hacer lo siguiente:

    self.add_input('temperature', shape=num_nodes, units='K')
    self.add_input('voltage', shape=num_nodes, units='V')
    
    1. Sí, puedes especificar diferentes propiedades de optimización para piezas individuales en los vectores de estado, entrada y dimensión. Necesitas definir cada parámetro con su propia declaración add_parameter() y establecer el argumento opt como una lista booleana que contenga True o False para cada parámetro. Por ejemplo, para optimizar la entrada 1 (opt=True) y no la entrada 2 (opt=False), puedes hacer lo siguiente:
    phase.add_parameter('u1', opt=True)
    phase.add_parameter('u2', opt=False)
    

    Ten en cuenta que esto solo es aplicable cuando se utiliza el ScipyOptimizeDriver. Otros solucionadores pueden no admitirlo.

Comments are closed.