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.

Actualización de variables GEKKO en tiempo real

¿Cómo debo configurar m.time y actualizar las condiciones iniciales si quiero utilizar GEKKO en una simulación en línea que actualice cada segundo? He intentado lo siguiente:
m.time = np.linspace(0,1,2)
while simulation_on:
m.solve()
x1.value = x1.value.value
x2.value = x2.value.value
x3.value = x3.value.value

pero no parece actualizar los valores. Estoy usando IMODE = 4. Esta es solo una aplicación de simulación dinámica. Por el momento, no hay control.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para configurar una simulación de GEKKO para la actualización en tiempo real, deberá establecer el horizonte de tiempo para que sea más corto y actualizar las condiciones iniciales en cada iteración de la simulación. Aquí hay un ejemplo de código que actualiza la simulación cada segundo:

    # Importar paquetes necesarios
    import numpy as np
    from gekko import GEKKO
    
    # Inicializar modelo GEKKO
    m = GEKKO()
    
    # Configurar horizonte de tiempo
    m.time = np.linspace(0,1,2)
    
    # Inicializar variables
    x1 = m.Var()
    x2 = m.Var()
    x3 = m.Var()
    
    # Establecer condiciones iniciales
    x1.value = 1
    x2.value = 2
    x3.value = 3
    
    # Establecer objetivo
    m.Obj(x1**2+x2**2+x3**2)
    
    # Configurar simulación en modo dinámico
    m.options.IMODE = 4
    
    # Iniciar ciclo de simulación
    while simulation_on:
        # Actualizar horizonte de tiempo y resolver
        m.time = np.linspace(m.time[-1],m.time[-1]+1,2)
        m.solve()
    
        # Actualizar condiciones iniciales
        x1.value = x1.value[-1]
        x2.value = x2.value[-1]
        x3.value = x3.value[-1]
    
        # Imprimir resultados
        print('x1: ' + str(x1.value[-1]))
        print('x2: ' + str(x2.value[-1]))
        print('x3: ' + str(x3.value[-1]))
    

    En este ejemplo, el horizonte de tiempo se establece para que dure solo 1 segundo, con la simulación actualizándose cada segundo. Las condiciones iniciales se actualizan en cada iteración de la simulación estableciéndolas iguales al último valor de cada variable. Finalmente, los resultados se imprimen en la consola después de cada iteración.

    Tenga en cuenta que en una simulación en tiempo real, es posible que no desee imprimir los resultados en la consola, ya que esto puede ralentizar la simulación. En su lugar, es posible que desee enviar los resultados a una base de datos o archivo para su posterior análisis.

Comments are closed.