【问题标题】:how to solve ini equation problem using gekko?如何使用gekko解决ini方程问题?
【发布时间】:2022-01-18 14:00:33
【问题描述】:

如果我想用V1_0表示V1的起始值,V2_0表示V2的起始值,并且有起始方程V2_0-V1_0=5,我应该如何用gekko来表示这个关系?

【问题讨论】:

    标签: gekko


    【解决方案1】:

    对于这种级别的控制,我建议将动态问题写成数组。如果您有微分方程,则需要包含您自己的 collocation equations

    from gekko import GEKKO
    m = GEKKO()
    n  = 5
    V1 = m.Array(m.Var,n)
    V2 = m.Array(m.Var,n)
    # rename initial conditions
    V1_0 = V1[0]; V2_0 = V2[0]
    m.Equation(V1_0==3)
    m.Equation(V2_0-V1_0==5)
    for i in range(1,n):
        m.Equation(V1[i]==V1[i-1]+1)
        m.Equation(V2[i]==V2[i-1]+0.5)
    m.solve(disp=False)
    print(V1)
    print(V2)
    

    这会产生V1V2 的解决方案:

    [[3.0] [4.0] [5.0] [6.0] [7.0]]
    [[8.0] [8.5] [9.0] [9.5] [10.0]]
    

    如果您使用的是动态模式(IMODE=5IMODE=6),您还可以尝试使用m.Connection() 函数将初始条件与V1_0=m.FV()V2_0=m.FV()V2_0.STATUS=1 连接起来。然后你可以写公式m.Equation(V2_0-V1_0==5)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-29
      • 2022-07-27
      • 2021-07-15
      • 1970-01-01
      • 2016-02-04
      • 2022-01-10
      • 2022-10-14
      • 2019-10-15
      相关资源
      最近更新 更多