如何使用gekko解决ini方程问题?

Posted

技术标签:

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

如果我想用V1_0表示V1的起始值,V2_0表示V2的起始值,并且有起始方程V2_0-V1_0=5,我应该如何用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)

【讨论】:

以上是关于如何使用gekko解决ini方程问题?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 gekko 变量作为数组的组件?

如何使用Pulp Gekko和Scipy软件包修复具有不同结果的代码以解决线性优化问题?

Gekko 中间变量,错误:不等式或不等式的方程

在 Gekko 中减少我的方程式大小或在 APMonitor 中增加最大字符串长度

如何以图形方式验证我的动态优化结果,与 gekko 中的初始条件进行比较

GEKKO - 如何修复 Python Gekko Max Equation 错误 - 元素数