【问题标题】:Step function implementation in GekkoGekko 中的阶梯函数实现
【发布时间】:2019-09-02 20:52:51
【问题描述】:

我正在尝试在 Gekko (IMODE=6) 中实现类似于阶跃函数的功能。 我已经尝试过 If3 并设置自定义上下限,但在 Gekko 中仍然找不到解决方案。

对于这样的阶跃函数或 Gekko 中的任何分段函数,您有什么建议?

【问题讨论】:

    标签: gekko


    【解决方案1】:

    Gekko 中允许使用阶跃函数(或任何其他输入)。如果 step 函数不依赖于条件而只依赖于时间,那么您将不需要 if3 函数。这是一个定义 step 函数的 u_step 示例问题。

    import numpy as np
    from gekko import GEKKO
    import matplotlib.pyplot as plt
    
    m = GEKKO()    # create GEKKO model
    m.time = np.linspace(0,40,401) # time points
    
    # create GEKKO parameter (step 0 to 2 at t=5)
    u_step = np.zeros(401)
    u_step[50:] = 2.0
    u = m.Param(value=u_step)
    
    # create GEKKO variables
    x = m.Var(0.0) 
    y = m.Var(0.0) 
    
    # create GEEKO equations
    m.Equation(2*x.dt()==-x+u) 
    m.Equation(5*y.dt()==-y+x) 
    
    # solve ODE
    m.options.IMODE = 4
    m.solve()
    
    # plot results
    plt.plot(m.time,u,'g:',label='u(t)')
    plt.plot(m.time,x,'b-',label='x(t)')
    plt.plot(m.time,y,'r--',label='y(t)')
    plt.ylabel('values')
    plt.xlabel('time')
    plt.legend(loc='best')
    plt.show()
    

    提供differential equations solved with Gekko 的其他教程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      • 1970-01-01
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      相关资源
      最近更新 更多