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 editar parámetros de un modelo de Modelica con la interfaz OMPython o Python CLI

Quiero editar los parámetros del modelo Modelica en la interfaz de línea de comandos de Python, pero no sé cómo encontrar el método correcto para hacerlo.

Código del modelo Modelica:

model Syslam_Q5
  HePackage.Components.Hlam hlam(
    UCfile=
        "C:/Users/Pikachu/Docs/i_v2/H50.txt",
         A_HS_mod1 = 0.0786,
         CSize_flag=false,
         A_HS_mod2 = 0.0914,
         A_HS_mod3 = 0.0223,
         A_HS_mod4 = 0.0245)

Código en Python:

from OMPython import OMCSessionZMQ
omc = OMCSessionZMQ()
cmds = [
    'loadFile("HePackage.mo")',   
    #'removeElementModifiers(HePackage.Systems.Syslam_Q5, "component", false)',
    #'setElementModifierValue(HePackage.Systems.Syslam_Q5, HePackage.Components.Hlam, hlam.UCfile = C:/Users/Pikachu/Docs/i_v2/H100.txt)',
    #'setParameterValue(HePackage.Systems.Syslam_Q5, hlam.UCfile, $Code(=C:/Users/Pikachu/Docs/i_v2/H100.txt))',
    'saveModel("example_edit.mo", Example)',
]
for cmd in cmds:
    answer = omc.sendExpression(cmd)
    print(cmd, ':', answer)

En una carpeta tengo alrededor de 10 archivos de texto, quiero ejecutar el modelo Modelica para todos los archivos de texto. ¿Cómo hago eso con la interfaz de Python? Gracias.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para editar los parámetros del modelo Modelica en la interfaz de línea de comandos de Python, puedes usar el método setSimulationOptions proporcionado por OpenModelica. Debes especificar el modelo, el nombre del parámetro y su valor como argumentos de entrada para este método.

    Por ejemplo, si deseas cambiar el valor del parámetro UCfile del componente Hlam en tu modelo Syslam_Q5, puedes utilizar el siguiente código en Python:

    from OMPython import OMCSessionZMQ
    
    # crear una sesión de OpenModelica
    omc = OMCSessionZMQ()
    
    # cargar el código Modelica
    omc.sendExpression('loadModel(HePackage)')
    omc.sendExpression('loadModel(Syslam_Q5)')
    
    # establecer el nuevo valor del parámetro
    file_list = ['H1.txt', 'H2.txt', ..., 'H10.txt']
    for filename in file_list:
        omc.setSimulationOptions('Syslam_Q5.hlam.UCfile', filename)
        omc.sendExpression('simulate(Syslam_Q5)')
    
    # guardar el modelo modificado
    omc.sendExpression('saveTotalModel("example_edit.mo")')
    

    En este ejemplo, el método setSimulationOptions se llama dentro de un bucle para cambiar el valor del parámetro UCfile para cada archivo de texto en tu carpeta. El método simulate se utiliza para ejecutar la simulación para cada modelo modificado. Finalmente, el método saveTotalModel se utiliza para guardar el modelo modificado en un nuevo archivo.

Comments are closed.